Опубликован: 04.07.2008 | Уровень: специалист | Доступ: платный | ВУЗ: Европейский Университет в Санкт-Петербурге
Лекция 2:

Настройка ядра, добавление оборудования, установка программ и обновлений

< Лекция 1 || Лекция 2: 1234 || Лекция 3 >

Загрузка модулей

В зависимости от выполняемых системой задач, некоторые полезные модули могут не загружаться в начале работы системы. Для того, чтобы они точно загружались, следует использовать вышеупомянутые настройки в /etc/system. Если требуется загрузить модуль во время работы системы, не перегружая ее, воспользуйтесь командой modload.

В Solaris 9 можно было проделать такой эксперимент по загрузке модуля, отвечающего за семафоры в ядре: по умолчанию этот модуль был не загружен

sysdef | tail -20
*
* Streams Tunables
*
9 maximum number of pushes allowed (NSTRPUSH)
65536 maximum stream message size (STRMSGSZ)
1024 max size of ctl part of message (STRCTLSZ)
*
* IPC Messages module is not loaded
*
*
* IPC Semaphores module is not loaded
*
*
* IPC Shared Memory module is not loaded
*
*
* Time Sharing Scheduler Tunables
*
60 maximum time sharing user priority (TSMAXUPRI)
SYS system class name (SYS_NAME)

Стандартные модули располагаются в подкаталогах каталога /kernel:

ls -l /kernel
total 2856
drwxr-xr-x 2 root sys 512 Мар 17 10:42 dacf
drwxr-xr-x 2 root sys 3072 Мар 17 11:16 drv
drwxr-xr-x 2 root sys 512 Мар 17 11:10 exec
drwxr-xr-x 2 root sys 512 Мар 17 10:52 fs
-rwxr-xr-x 1 root sys 1438036 Ноя 4 2002 genunix
drwxr-xr-x 2 root sys 512 Мар 17 11:07 ipp
drwxr-xr-x 2 root sys 512 Мар 17 10:50 mach
drwxr-xr-x 3 root sys 1024 Мар 17 11:07 misc
drwxr-xr-x 2 root sys 512 Мар 17 10:43 sched
drwxr-xr-x 2 root sys 1024 Мар 17 10:53 strmod
drwxr-xr-x 2 root sys 512 Мар 17 10:49 sys

Загружаем модуль командой

modload /kernel/misc/ipc

После этого модуль будет загружен и будет отображаться программами мониторинга:

modinfo | grep ipc
146 feab6fb2 332 - 1 ipc (common ipc code)

Для проверки работоспособности модуля поддержки семафоров в Solaris до версии 9 включительно можно было использовать команду

sysdef:
sysdef | tail -28
*
* IPC Messages
*
2048 max message size (MSGMAX)
4096 max bytes on queue (MSGMNB)
50 message queue identifiers (MSGMNI)
40 system message headers (MSGTQL)
*
* IPC Semaphores
*
100 semaphore identifiers (SEMMNI)
60 semaphores in system (SEMMNS)
30 undo structures in system (SEMMNU)
25 max semaphores per id (SEMMSL)
100 max operations per semop call (SEMOPM)
10 max undo entries per process (SEMUME)
32767 semaphore maximum value (SEMVMX)
16384 adjust on exit max value (SEMAEM)
*
* IPC Shared Memory
*
8388608 max shared memory segment size (SHMMAX)
100 shared memory identifiers (SHMMNI)
*
* Time Sharing Scheduler Tunables
*
60 maximum time sharing user priority (TSMAXUPRI)
SYS system class name (SYS_NAME)

Для выгрузки модуля следует дать команду modunload:

modunload ipc
usage: modunload -i <module_id> [-e <exec_file>]
modunload -i 146
can't unload the module: Device busy

Если модуль чем-то занят или его ресурс кем-то использовался ранее и блокировка не снята, удалить модуль не удастся.

Начиная с Solaris 10, семафоры более не контролируются настройками ядра, управление ими отдано в подсистему управления ресурсами, и их количество можно регулировать для каждого проекта в системе индивидуально.

Поэтому для проверки, эффективно ли используется /etc/system, воспользуемся нашим примером с установкой параметра noexec_user_stack.

Проверим значение этого параметра в выполняющемся в данный момент ядре:

mdb -kw
Loading modules: [ unix genunix specfs dtrace cpu.generic cpu_
ms.AuthenticAMD.15 uppc pcplusmp scsi_vhci ufs ip hook neti sctp
arp usba s1394 fctl nca lofs zfs random audiosup md cpc crypto
smbsrv fcip fcp logindmux ptm nsctl sdbc sv ii sppp rdc ipc ]
> noexec_user_stack/D
noexec_user_stack:
noexec_user_stack: 0
^D

Изменим файл /etc/system:

set noexec_user_stack = 1

После перезагрузки картина будет иной:

mdb -kw
Loading modules: [ unix genunix specfs dtrace cpu.generic cpu_
ms.AuthenticAMD.15 uppc pcplusmp scsi_vhci ufs ip hook neti sctp
arp usba s1394 fctl nca lofs zfs random audiosup cpc crypto fcip
ptm nsctl sppp ipc ]
> noexec_user_stack/D
noexec_user_stack:
noexec_user_stack: 1
^D

Получение информации об оборудовании

Для получения информации об уже установленных устройствах следует пользоваться программами prtconf, sysdef и dmesg.

Программа prtconf выдает информацию о конфигурации системы в том виде, в котором она иерархически представлена в системе; с помощью prtconf можно выяснить, "увидела" ли система то или иное устройство. Упоминание устройства в выводе prtconf означает только то, что устройство обнаружено среди оборудования компьютера. Это НЕ ЗНАЧИТ, что устройство нормально работает, и тем более не означает, что в системе установлен его драйвер.

Программа sysdef показывает больше информации о системе: здесь выводится не только список аппаратуры в системе, но и перечень псевдоустройств, загруженных модулей, параметры ядра, информация о разделяемой памяти, семафорах и т.п.

Программа dmesg выдает сообщения из файла протокола и список устройств, обнаруженных при последней перезагрузке системы. Эти сообщения можно также посмотреть в файле /var/adm/messages.

Для более детального изучения оборудования компьютера могут пригодиться программы scanpci ( /usr/X11/bin/scanpciопрос устройств на шине PCI), psrinfo (информация о процессорах компьютера), isainfo (описание аппаратной архитектуры с точки зрения набора команд).

Команда psrinfo наиболее полезна с ключами -pv:

psrinfo -pv
The physical processor has 2 virtual processors (0 1)
x86 (AuthenticAMD 40F82 family 15 model 72 step 2 clock 1600 MHz)
AMD Turion(tm) 64 X2 Mobile Technology TL-50

Следует иметь в виду, что многоядерный процессор виден системе как несколько процессоров (ровно столько, сколько ядер на кристалле). Управлять состоянием процессоров (например, делать часть из них недоступными системе) можно с помощью программы psradm.

На двухядерном процессоре AMD x64 Turion isainfo выдает такую информацию:

isainfo -v
64-bit amd64 applications
tscp ahf cx16 sse3 sse2 sse fxsr amd_3dnowx amd_3dnow
amd_mmx mmx cmov amd_sysc cx8 tsc fpu
32-bit i386 applications
tscp ahf cx16 sse3 sse2 sse fxsr amd_3dnowx amd_3dnow
amd_mmx mmx cmov amd_sysc cx8 tsc fpu

Для получения информации о временно подключаемых устройствах (например, USB-флэш) следует использовать команду

rmformat -l

Ключ -l указывать обязательно! Команда rmformat предназначена для форматирования подключенных устройств, и только ключ -l дает возможность просто посмтреть их список без форматирования.

Подключение нового оборудования

Задача подключения нового оборудования сводится к двум этапам: загрузке соответствующего драйвера нового устройства в ядро и созданию файла устройства в каталоге /dev. Это справедливо для всех систем UNIX. В Solaris все немного сложнее: как вы помните, сначала надо создать файл устройства в /devices, а затем – соответствующие символические ссылки на него в /dev.

К счастью, эти задачи можно решать автоматизированно: в Solaris есть утилита devfsadm, которая автоматически распознает свежеподключенные устройства и создает необходимые файлы в /devices и /dev.

При загрузке ядро системы в состоянии выполнить автоматическую самонастройку, определяя, какие именно устройства подключены к системе. Если вы подключили любое новое устройство к компьютеру и оно в настоящее время не видно ядру (например, новый накопитель), следует создать файл /reconfigure и перезапустить систему:

touch reconfigure; reboot

После перезагрузки система увидит новое устройство, если только оно вообще поддерживается данной версией системы.

Вместо создания файла /reconfigure и перезапуска допустимо при загрузке системы дать команду из строки начального загрузчика:

boot –r

Этот способ не слишком хорош, потому что он позволяет запланировать перезапуск на более поздний срок и требует интерактивного вмешательства администратора.

Начиная с версии Solaris 8 можно добавлять и удалять устройства из системы без ее перезагрузки – для этого служит утилита devfsadm. Ее можно запускать интерактивно, но, если запущен демон автоконфигурации devfsadmd, то изменения будут сделаны автоматически. Программы devfsadm и devfsadmd работают с файлом /etc/path_to_inst, в котором находится список устройств в системе. При добавлении новых устройств записи в файле не перенумеруются, к старым посто добавляются новые.

В случае, если файл /etc/path_to_inst был удален или неверно отредактирован, система не сможет загрузиться. В этом случае можно загрузиться с CD-ROM и переписать файл с дистрибутивного диска.

Еще одним важным файлом в контексте разговора об устройствах в Solaris является файл /etc/name_to_major, который служит для отображения имен устройств в major номера файлов устройств; этот файл создается при формировании содержимого каталога /devices, например, при работе devfsadmd.

Для установки драйвера стороннего производителя надо следовать инструкциям, которые обычно доступны на сайте производителя устройства или в закачанном из Сети пакете, содержащем драйвер.

Порядок установки драйвера нового оборудования

Установка драйвера производится командой add_drv. После выполнения этой программы файл драйвера будет размещен в соответствующем каталоге (см. таблицу 2.1).

После установки драйвера следует сообщить системе, что появилось новое устройство, – запустить devfsadm. При этом devfsadm должна создать ссылку из каталога /dev на соответствующее устройство в каталоге /devices.

Возможно, после этого потребуется загрузить модуль драйвера командой modload. Если устанавливается драйвер сетевого адаптера, надо выполнить команду ifconfig имя_интерфейса plumb, чтобы интерфейс стал доступен для работы; например, для интерфейса vfe0 это будет выглядеть так:

ifconfig vfe0 plumb
Таблица 2.1. Каталоги с драйверами в Solaris
/kernel/drv 32-bit boot device drivers
/kernel/drv/sparcv9 64-bit SPARC boot device drivers
/kernel/drv/amd64 64-bit x86 boot device drivers
/usr/kernel/drv other 32-bit drivers that could potentially be shared between platforms
/usr/kernel/drv/sparcv9 other 64-bit SPARC drivers that could potentially be shared between platforms
/usr/kernel/drv/amd64 other 64-bit x86 drivers that could potentially be shared between platforms
/platform/'uname -i'/kernel/drv 32-bit platform-dependent drivers
/platform/'uname -i'/kernel/drv/sparcv9 64-bit SPARC platformdependent drivers
/platform/'uname -i'/kernel/drv/amd64 64-bit x86 platform-dependent drivers

Некоторые новые устройства, подключаемые к системе, не требуют никакой подобной установки. Например, при подключении внешних USB-накопителей ("флэшек") последние распознаются автоматически как внешние блочные устройства и автоматически монтируются компонентом графической среды (в GNOME – gnome-volume-manager ).

< Лекция 1 || Лекция 2: 1234 || Лекция 3 >
Александр Тагильцев
Александр Тагильцев

Где проводится профессиональная переподготовка "Системное администрирование Windows"? Что-то я не совсем понял как проводится обучение.

Анатолий Натрусов
Анатолий Натрусов
Россия
Виктор Саркисов
Виктор Саркисов
Россия, Нижний Новгород, НГТУ, 2001