Конфигурирование ядра в Solaris
Категория: Драйверы и ядро | Автор: admin | 27-12-2009, 05:13 | Просмотров: 4101

На этапе загрузки ядро Solaris опрашивает системную шину на предмет наличия устройств и инициализирует драйвер для каждого найденного устройства. Ядро поддерживает концепцию загружаемых модулей и загружает код только для тех устройств, которые реально присутствуют (если не поступило других указаний).

Благодаря средствам автоматического конфигурирования в Solaris редко возникает необходимость создавать собственное ядро. В идеальном мире ядро Solaris правильно идентифицировало бы свою аппаратную среду в 100% случаев. К сожалению, нестандартные или просто дефектные устройства (либо драйверы ОС Solaris) могут превратить процедуру автоконфигурирования в источник нескончаемых мучений.

Учитывая сказанное, давайте рассмотрим, как конфигурировать ядро Solaris на случай, если это когда-нибудь понадобится.

 

Область построения ядра

 

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

  • /kernel — модули, общие для компьютеров с одинаковым набором инструкций процессора;
  • /platform/имя_платформы/kernel — модули, специфичные для конкретного типа компьютера, например Ultra Enterprise;
  • /platform/имя_класса_устройств/kernel — модули, специфичные для конкретного класса аппаратных устройств, например для всех машин семейства "sun4u";
  • /usr/kernel — аналогичен каталогу /kernel.

 

Определить имя платформы и имя класса устройств можно с помощью команд uname -i и uname -m соответственно. Рассмотрим пример:

% uname -i

SUNW,Ultra-Enterprise

% uname -m

sun4u

 

Когда система Solaris загружается, она просматривает следующую последовательность каталогов:

/platfоrm/имя_платформы/kernel:/kernel:/usr/kernel

 

пытаясь найти ядро. В первую очередь ищутся файлы с именем unix, а затем — genunix. Второе имя обозначает платформно-независимую часть базового ядра.

В каждом из перечисленных каталогов может содержаться несколько стандартных подкаталогов (табл. 12.2). Чтобы избежать ненужной детализации, мы в дальнейшем будем ссылаться на обобщенный каталог KERNEL, означающий любой каталог ядра.

Таблица 12.2. Подкаталоги каталога /KERNEL в Solaris

Подкаталог

Содержимое

drv

Загружаемые объектные файлы для драйверов устройств и файлы конфигурации, содержащие адреса всех устройств

misc

Загружаемые объектные файлы для различных подпрограмм ядра

cpu

Процессорные модули для машин UltraSPARC

strmod

Модули STREAMS

sparc9

64-разрядное ядро

fs

Модули ядра, связанные с файловыми системами

exec

Модули для расшифровки форматов исполняемых файлов

sched

Модули планирования процессов

sys

Загружаемые системные функции

genunix

Стандартное платформно-независимое ядро

unix

Базовое платформно-зависимое ядро

 

Обычно нет необходимости менять файлы в этих каталогах, если только не выполняется инсталляция нового драйвера. Единственным исключением могут быть файлы с расширением conf в каталоге KERNEL/drv, в которых содержатся параметры конфигурации конкретных устройств. Но даже их нужно менять только тогда, когда этого требует производитель устройств.

 

Конфигурирование ядра посредством файла /etc/system

 

Файл /etc/system в Solaris является главным конфигурационным файлом ядра. Директивы и переменные, которые могут появляться в этом файле перечислены в табл. 12.3. Переменным нужно назначать значения с помощью директивы set.

Таблица 12.3. Директивы и переменные, используемые в файле /etc/system

Имя

Тип1

Назначение

rootfs

D

Задает тип файловой системы корневого раздела

rootdev

D

Задает местоположение корневого раздела

forceload

D

Задает драйверы ("модули"), которые должны быть загружен:»

exclude

D

Задает модули, которые не нужно загружать

moddir

D

Задает альтернативное местоположение модулей

set

D

Задает переменные настройки ядра (например, maxusers)

maxusers

V

Определяет размеры таблиц и ряд других параметров

pt_cnt

V

Задает число доступных псевдотерминалов

max nproc

V

Задает максимальное число процессов

maxuprc

V

Задает максимальное число пользовательских процессов

1   D — директива, V — переменная.

 

Система обращается к файлу /etc/system во время начальной загрузки поэтому модифицировать его нужно крайне осторожно, иначе система не сможет загрузиться. С помощью команды boot -а можно задать путь к резервной копии файла, если она была создана (если ее нет, а имеющаяся версия не работает, укажите /dev/null).

 

Пример файла /etc/system

 

Рассмотрим образец файла /etc/system для простого ядра:

rootfs:ufs

rootdev:/sbus@l,f8000ООО/esp@0, 800000/sd@3,0: a

 

Эти строки говорят о том, что корневая файловая система будет иметь тип UFS (UNIX File System — файловая система UNIX) и располагаться в разделе sd3a. Синтаксис, используемый для задания устройства, содержащего корневую файловую систему, идентичен синтаксису, применяемому в программе мониторинга openprom системы Sun. Для каждой платформы он свой, поэтому обратитесь к имеющейся документации или проследите символические ссылки в каталоге /dev.

moddir: /platform/SUNW,Ultra-Enterprise/kernel:/platform/sun4u/kernel: /kernel:/usr/kernel

 

Данная строка (перенос был сделан, так как она не умещалась на странице) задает путь поиска загружаемых модулей. Эта запись рекомендуется на странице руководства kernel, но она не задана по умолчанию, поэтому ее нужно установить самостоятельно.

exclude: sys/shmsys

forceload: drv/superplotter

 

Первая строка исключает из ядра подсистему совместного использования памяти, что позволяет немного уменьшить его размер (на самом деле это плохая идея, так как система может начать работать неправильно). Вторая строка задает загрузку драйвера "суперграфопостроителя".

set maxusers=64

 

Эта строка обеспечивает настройку размеров таблиц ядра на поддержку одновременной работы 64-х пользователей.

 

Отладка конфигурации

 

Поскольку Solaris динамически формирует системную среду, отладка сбойной машины может оказаться сложным делом. К счастью, в этой системе предусмотрены средства, позволяющие отобразить текущую конфигурацию компьютера.

Команда prtconf выводит на экран сведения, относящиеся к общей конфигурации машины, включая ее тип, номер модели, объем памяти и данные о сконфигурированных аппаратных средствах. Строки, которые описывают устройства (точнее, их драйверы), оформлены таким образом, что информация о периферийных устройствах отображается в виде дерева.

Команда sysdef — это улучшенная версия команды prtconf; помимо обычной информации она также выдает список драйверов псевдоустройств, настраиваемых параметров ядра и имен загруженных модулей. Если модифицируется стандартное ядро важного компьютера, не забывайте добавить копию выходных данных команды sysdef в файлы документации по этому компьютеру.

Информацию о динамически загружаемых модулях можно получить с помощью команды modinfo. Подобным образом в Solaris загружаются драйверы устройств, драйверы файловых систем и модули STREAMS. Не удивляйтесь, если в выводе команды modinfo будет содержаться свыше пятидесяти позиций.



 (голосов: 0)
Версия для печати | Комментариев: 0
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии в данной новости.


 
Логин
Пароль
 

 
Locations of visitors to this page