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

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

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

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

Задача подключения нового оборудования сводится к двум шагам: загрузке соответствующего драйвера нового устройства в ядро и созданию файла устройства в каталоге /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. На http://www.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. Ее можно получить с http://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, которые присутствуют в дистрибутиве наряду с исходными текстами.

< Лекция 1 || Лекция 2: 12345 || Лекция 3 >
Алексей Антипин
Алексей Антипин
Россия, Томск, ТУСУР, 2010
Игорь Тарасенко
Игорь Тарасенко
Россия