Загрузка модулей
Некоторые полезные модули, если они не требуются для выполняемых системой задач, могут не загружаться в начале работы системы. Для того чтобы обеспечить их загрузку, следует использовать вышеупомянутые настройки в /etc/system. Если требуется загрузить модуль во время работы системы, не перегружая ее, воспользуйтесь командой modload.
Предположим, нам потребовалось проверить количество семафоров в ядре и мы обнаружили, что модуль, отвечающий за семафоры, не загружен:
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)
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
Если модуль чем-то занят, или его ресурс кем-то использовался ранее и блокировка не снята, удалить модуль не удастся.
Изменим файл /etc/system:
set semsys:seminfo_semmni=101
set semsys:seminfo_semopm=101
После перезагрузки картина будет иной, но модуль ipc придется загрузить вручную, так как он относится к модулям, которые загружаются по запросу:
modload misc/ipc
sysdef
*
* IPC Semaphores
*
101 semaphore identifiers (SEMMNI)
60 semaphores in system (SEMMNS)
30 undo structures in system (SEMMNU)
25 max semaphores per id (SEMMSL)
101 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)
*
Вывод sysdef в этом примере сильно сокращен.
Подключение нового оборудования
Задача подключения нового оборудования сводится к двум шагам: загрузке соответствующего драйвера нового устройства в ядро и созданию файла устройства в каталоге /dev. Это справедливо для всех систем UNIX. В Solaris все немного сложнее: как уже говорилось, сначала надо создать файл устройства в /devices, а затем - соответствующие символические ссылки на него в /dev.
К счастью, эти задачи можно решать автоматизированно: в Solaris есть утилита devfsadm, которая автоматически распознает вновь подключенные устройства и создает необходимые файлы в /devices и /dev.
Для получения информации об уже установленных устройствах следует пользоваться программами prtconf, sysdef и dmesg.
Программа prtconf выдает информацию о конфигурации системы в том виде, в котором она иерархически представлена в системе; с помощью prtconf можно выяснить, "увидела" ли система то или иное устройство.
Программа sysdef дает больше информации о системе, она выводит не только список аппаратуры в системе, но и перечень псевдоустройств и загруженных модулей, параметры ядра, информацию о разделяемой памяти, семафорах и т.п.
Программа dmesg выдает сообщения из файла протокола и список устройств, обнаруженных при последней перезагрузке системы. Эти сообщения можно также посмотреть в файле /var/adm/messages.
При загрузке ядро системы в состоянии выполнить автоматическую самонастройку, определяя, какие именно устройства подключены к системе. Если вы подключили любое новое устройство к компьютеру (например, новый накопитель), и оно в настоящее время не видно ядру, следует создать файл /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.
Компиляция, установка пакетов, управление пакетами, применение пакетов обновлений
Существует несколько способов установить программу или пакет программ в UNIX. Выбор способа зависит от того, в каком виде доступен пакет программ, который вам требуется. Если пакет доступен только в виде набора исполняемых файлов, уже скомпилированных для вашей платформы, то выбор невелик: придется устанавливать то, что имеется.
Например, требуется найти более наглядное средство наблюдения за процессами, чем ps. На sunfreeware.com ищем top и загружаем его на свой компьютер. Если прямо с sunfreeware его получить не удается, набираем имя файла top-3.5-sol9-intel-local.gz в строке поиска Google и получаем достаточное количество ссылок на ftp-серверы, где он лежит. Такое бывает часто: сервер sunfreeware перегружен и не всегда готов принять посетителя.
Теперь распаковываем подарочек...
gunzip top-3.5-sol9-intel-local.gz
и в нашем распоряжении оказывается файл пакета. Надо указать команде pkgadd, что именно отсюда мы будем пакет устанавливать:
pkgadd -d top-3.5-sol9-intel-local
The following packages are available:
1 SMCtop top
(intel) 3.5
Select package(s) you wish to process (or 'all' to process
all packages). (default: all) [?,??,q]: y
ERROR: Entry does not match available menu selection. Enter the
number of the menu item you wish to select, or the token which is
associated with the menu item, or a partial string which uniquely
identifies the token for the menu item.
Enter ?? to reprint the menu.
Select package(s) you wish to process (or 'all' to process
all packages). (default: all) [?,??,q]: all
Ошибка (сообщение ERROR в 6-й строке листинга) вызвана тем, что мы поторопились ввести y в ответ на вопрос: привычка сказывается. Честно напишем all, чтобы установить все программы, которые доступны в пакете. После этого получаем:
Processing package instance <SMCtop> from
</export/home/top-3.5-sol9-intel-local>
top
(intel) 3.5
William LeFebvre
Using </usr/local> as the package base directory.
## Processing package information.
## Processing system information.
4 package pathnames are already properly installed.
## Verifying disk space requirements.
## Checking for conflicts with packages already installed.
## Checking for setuid/setgid programs.
The following files are being installed with setuid and/or setgid
permissions:
/usr/local/bin/top <setgid sys>
Наконец вопрос, на который как раз следует ответить утвердительно:
Do you want to install these as setuid/setgid files [y,n,?,q] y
Installing top as <SMCtop>
## Installing part 1 of 1.
/usr/local/bin/top
/usr
/usr/local/doc/top/Changes
/usr/local/doc/top/FAQ
/usr/local/doc/top/INSTALL
/usr/local/doc/top/Porting
/usr/local/doc/top/README
/usr/local/doc/top/SYNOPSIS
/usr/local/man/man1/top.1
[ verifying class <none> ]
Installation of <SMCtop> was successful.
Проверить, удачно ли установился пакет, можно командой
pkginfo | grep top
application SMCtop top
system SUNWdtcor Solaris Desktop /usr/dt filesystem anchor
system SUNWdtdst CDE Desktop Applications
system SUNWdtdte Solaris Desktop Login Environment
system SUNWdtezt Solaris Desktop Extensions Applications
system SUNWdthez Desktop Power Pack Help Volumes
system SUNWdtlog System boot for Desktop Login
system SUNWdtmaz Desktop Power Pack man pages
system SUNWeuodf UTF-8 Core OPENLOOK Desktop Files
system SUNWsadmi Solstice Enterprise Agents 1.0.3 Desktop
Management Interface
Как видно, пакетов, в названиях которых имеется подстрока top, установлено немало, и тот, которым занимались мы, - на самом первом месте.
Удалить пакет можно командой pkgrm, например, pkgrm SMCtop.
Иногда бывает необходимо не просто установить пакет, который получен в виде набора исполняемых файлов и документации, а собрать его из исходных текстов. В этом случае надо следовать инструкциям по установке, которые обычно находятся в файлах README и INSTALL дистрибутива пакета. В любом случае вам понадобится программа make (поставляется в комплекте с Solaris) и компилятор языка С (не поставляется).
Коммерческая версия компилятора С фирмы Sun не поставляется с бесплатным набором компакт-дисков дистрибутива Solaris. Его надо покупать отдельно, это можно сделать со страницы http://wwws.sun.com/software/sundev/suncc/buy/index.html.
Компания Sun предоставляет возможность использовать ее компилятор С в течение 60 дней бесплатно. Для этого с той же страницы надо загрузить trial-версию. Она является полнофункциональной - просто при установке следует выбрать вариант установки trial, и временный серийный номер продукта будет сгенерирован автоматически.
Кроме коммерческого компилятора можно работать с бесплатной версией GNU C под Solaris. Ее можно получить с www.sunfreeware.com или найти через центральный портал проекта GNU gnu.org. GNU C можно загрузить в виде пакета gcc.
Загрузим файл gcc_small-3.3.2-sol9-intel-local.gz и установим пакет gcc для того, чтобы иметь возможность компилировать программы из исходных текстов:
pkgadd gcc_small-3.3.2-sol9-intel-local.gz
pkgadd: ERROR: no packages were found in </var/spool/pkg>
Ошибка: файл пакета сжат, ему требуется декомпрессия, кроме того, имя файла пакета надо указывать с ключом d:
gunzip gcc_small-3.3.2-sol9-intel-local.gz
ls
gcc_small-3.3.2-sol9-intel-local
pkgadd -d gcc_small-3.3.2-sol9-intel-local
The following packages are available:
1 SMCgcc gcc
(intel) 3.3.2
Select package(s) you wish to process (or 'all' to process
all packages). (default: all) [?,??,q]:
Далее действуем, как в предыдущем примере.
Если необходимо, то можно получить довольно много бесплатного программного обеспечения под Solaris со страницы http://www.sun.com/bigadmin/features/articles/x86_desktop.html.
Затем его можно установить вышеописанным образом.
При установке программ из исходных текстов, следует руководствоваться инструкциями из файлов README и INSTALL, которые присутствуют в дистрибутиве наряду с исходными текстами.
Проверка содержимого пакетов и перечня установленного ПО
Чтобы узнать, какие пакеты уже установленны в системе, а также узнать подробную информацию по каждому из этих пакетов, следует пользоваться программой pkginfo:
pkginfo
application SMCtop top
system SUNW1251f Russian 1251 fonts
ALE SUNW5ttf Traditional Chinese BIG5 True Type
Fonts Package
ALE SUNW5xmft Traditional Chinese (BIG5) X Window
s Platform minimum required Fonts Package
system SUNWGlib GLIB - Library of useful routines f
or C programming
system SUNWGtkr GTK - The GIMP Toolkit (Root)
system SUNWGtku GTK - The GIMP Toolkit (Usr)
system SUNWTcl Tcl - Tool Command Language
system SUNWTiff libtiff - library for reading and w
pkginfo -l SMCtop
PKGINST: SMCtop
NAME: top
CATEGORY: application
ARCH: intel
VERSION: 3.5
BASEDIR: /usr/local
VENDOR: William LeFebvre
PSTAMP: Steve Christensen
INSTDATE: Апр 21 2004 14:47
EMAIL: steve@smc.vnet.net
STATUS: completely installed
FILES: 13 installed pathnames
4 shared pathnames
5 directories
1 executables
1 setuid/setgid executables
258 blocks used (approx)
Проверка пакетов ПО с помощью pkgchk
Чтобы узнать, изменялись ли файлы установленных пакетов с момента их установки, используйте pkgchk:
bash-2.05# pkgchk SMCtop
bash-2.05#
Как видим, сообщений от pkgchk не последовало. Отсутствие новостей - лучшие новости. Если программа pkgchk не выдала сообщений, стало быть, проблем нет.
Можно проверить, изменилось ли содержимое файла пакета с момента его установки:
pkgchk -p /etc/shadow
ERROR: /etc/shadow
modtime <11/04/02 01:06:28 > expected
<03/18/04 05:05:29 > actual
file size <253> expected <298> actual
file cksum <17353> expected <20785> actual
Файл изменился с момента установки системы. Это естественно: ведь мы добавили новых пользователей и назначили им пароли.
Для более подробной информации можно использовать ключ l:
pkgchk -l -p /etc/shadow
Pathname: /etc/shadow
Type: editted file
Expected mode: 0400
Expected owner: root
Expected group: sys
Referenced by the following packages:
SUNWcsr
Current status: installed
База данных установленных пакетов
Информация об установленных пакетах сохраняется в файле /var/sadm/install/contents.
Можно просмотреть его содержимое для изучения того, что именно и куда было установлено при инсталляции пакета. Программа pkgrm использует содержимое этого файла для удаления пакета. Например, можно увидеть, какие файлы и с какими правами были созданы в результате установки пакета top. Кстати, если имя пакета начинается на SUNW, это значит, что пакет создан компанией Sun Microsystems, а если начало имени пакета иное - то это продукт третьей фирмы. Как видите, последнее относится и к программе top - ведь ее пакет называется SMCtop.
more /var/sadm/install/contents | grep SMCtop
/usr/local/bin d none 0755 root bin SMCgcc SMCtop
/usr/local/bin/top f none 2711 root sys 47348 46603
1081404717 SMCtop
/usr/local/doc d none 0755 root bin SMCgcc SMCtop
/usr/local/doc/top d none 0755 root bin SMCtop
/usr/local/doc/top/Changes f none 0644 root bin 30674
28431 1081404751 SMCtop
/usr/local/doc/top/FAQ f none 0644 root bin 15167 37360
1081404751 SMCtop
/usr/local/doc/top/INSTALL f none 0644 root bin 7460 472
1081404751 SMCtop
/usr/local/doc/top/Porting f none 0644 root bin 7058
38204 1081404751 SMCtop
/usr/local/doc/top/README f none 0644 root bin 7958 47937
1081404751 SMCtop
/usr/local/doc/top/SYNOPSIS f none 0644 root bin 2109
45452 1081404751 SMCtop
/usr/local/man d none 0755 root bin SMCgcc SMCtop
/usr/local/man/man1 d none 0755 root bin SMCgcc SMCtop
/usr/local/man/man1/top.1 f none 0644 root bin 12736 8086
1081404723 SMCtop
Поскольку в файле /var/sadm/install/contents указано, в какой каталог установлена программа, можно искать в нем нужную программу, чтобы понять, в какой каталог она установлена (если установлена вообще). |
|
Установка обновлений
Обновления пакетов программ (например, bind) или операционной системы в целом выходят, когда в существующем ПО нашли брешь с точки зрения безопасности или неверный код, либо для того чтобы при необходимости дополнить функциональность программы (системы). Обновление может представлять собой "заплатку" - т.е. кусочек измененного исходного текста, файла конфигурации или кода - которую следует "наложить на ПО". При этом в ПО, требующее изменения, вносятся те коррективы, которые описаны в файле-заплатке. Кроме того, речь может идти о полноценном обновлении, когда один файл просто заменяется другим.
Для работы с обновлениями и заплатками в Solaris предусмотрен ряд программ: patch, gpatch, patchadd, patchrm, smpatch.
Можно также устанавливать обновления системы с помощью Solaris Management Console. Это делается через пункт "Patches" (подробности см. в лекции 26).
Для того чтобы узнать точно версию вашей системы Solaris и получить информацию обо всех установленных обновлениях системы, следует использовать команду showrev:
showrev -a
Hostname: sola
Hostid: 284521a
Release: 5.9
Kernel architecture: i86pc
Aplication architecture: i386
Hardware provider:
Domain:
Kernel version: SunOS 5.9 Generic_112234-03 November 2002
OpenWindows version:
Solaris X11 Version 6.6.1 16 October 2002
No patches are installed
Для изменения текстовых файлов (например, исходных текстов программ или файлов конфигураций) можно применять программу patch. Для ее работы нужно два файла: исходный текстовый файл, подлежащий изменению, и файл заплатки (patch-файл). Файл заплатки обычно имеет формат вывода программы diff, но patch понимает также формат скрипта редактора ed или контекстный вывод diff. Контекстным называется формат вывода, когда в файле различий, создаваемом diff, приводятся не только те строки файлов, которые отличаются друг от друга, но и контекст, в котором они появились (по три строки сверху и снизу от них). Типичный файл заплатки для исходного текста или файла конфигурации выглядит так:
cat system.patch
--- system Mon May 17 02:15:34 2004
+++ system.new Tue Jun 22 10:50:48 2004 @@ -76,6 +76,6 @@
*
* set test_module:debug = 0x13
-set semsys:seminfo_semmni=100
+set semsys:seminfo_semmni=110
set semsys:seminfo_semopm=100
Этот файл заплатки system.patch можно "приложить" к старому файлу system для того, чтобы внести в него изменения; предполагается, что старый файл имеет имя, совпадающее с именем в первой строке файла заплатки (то, что написано после ---):
patch -i system.patch system
Кроме программы patch в Solаris имеется программа gpatch (GNU Patch), которая, в отличие от традиционной команды patch, строго соответствует стандарту POSIX и несколько по-другому интерпретирует ключи и обрабатывает полные имена файлов в файлах заплаток. Применяйте ту программу, которая требуется согласно описанию заплатки; в трудных случаях имеет смысл изучить раздел Compatibility issues в man gpatch.
Программы patch и gpatch не предназначены для установки обновлений Solaris, которые Sun Microsystems регулярно выпускает по мере обнаружения ошибок в существующем коде или для усовершенствования тех или иных системных программ. Для установки обновлений системы (а это наборы двоичных файлов) используются программы patchadd. Для удаления обновления и возвращения системы в состояние, в котором она пребывала до обновления, используйте patchrm. Программы patchadd и patchrm работают с Solaris версий 2.x и новее.
С помощью команды smpatch можно установить обновления системы на несколько машин сразу, удалить их с нескольких машин и выяснить текущее состояние систем в сети с точки зрения установленных обновлений. Для работы с командой smpatch требуется заранее создать роль, отвечающую за управление обновлениями, в каждой из систем вашей сети. |