Операционная
система MINIX 3
Новая система инициализации для ОС MINIX 3
1.1. Общее
описание
Новая система
инициализации максимально приближена
к аналогам FreeBSD, Linux и т.п.
Это значит,
что
для всех запускаемых демонов и сервисов
в каталогах /etc/rc.d и /usr/local/rc.d должны быть
скрипты инициализации. Параметры для
запуска и останова сервисов берутся из
файла /etc/rc.conf. При загрузке и останове
система сама производит останов и запуск
необходимых сервисов.
1.2.
Загрузка системы
При
включени компьютера, после загрузки
ядра Minix 3 вызывается сервис init. Он в
числе прочего вызывает файл /etc/rc с
параметром start. Этот файл (/etc/rc) является
по сути обычным шелл скриптом. Он
выполняет первичную инициализацию
системы. Проверяет и монтирует файловые
системы и т.п. Данный скрипт остался
неизменным из старой версии. Единственное
его отличие, в том, что в новой системе
он в конце вместо /usr/etc/rc вызывает файл
/etc/rc.sysinit
1.3
./etc/rc.sysinit
/etc/rc.sysinit
является обычным шелл скриптом. При
загрузке системы он сначала очищает
временные файлы, потом загружает
генератор случайных чисел, потом
устанавливает системные шрифты и карты
клавиатуры, загружает сервис update,
проверяет, необходимо ли загрузить
сеть, и загружает ее. В конце он загружает
syslogd. Потом проверяется параметр DAEMONS
(из /etc/rc.conf) и если он не пустой, для
каждого из перечисленных в нем сервисов
выполняется загрузка.
Прои
останове он выгружает генератор случайных
чисел и отдает команду service shutdown.
Для
загрузки и выгрузки сервисов и демонов,
/etc/rc.sysinit использует персональные скрипты
инициализации этих сервисов находящиеся
в каталоге /etc/rc.d
2.1.
Использование скриптов инициализации
В
каталоге /etc/rc.d/ находятся персональные
скрипты инициализации отдельных сервисов
и демонов. Для программ устанавливаемых
отдельно, тойже цели служет катклог
/usr/local/etc/rc.d/. Все скрипты являются
исполняемыми sh скриптами.
2.2. Запуск и
Останов сервисов
Каждый из
таких
скриптов должен принимать первым
параметром start или stop. В первом случае
скрипт запустит сервис, во втором
остановит. Кроме того некоторые из
скриптов могут принмать в качестве
параметра restart и другие.
Пользователь
в
процесе работы в системе имеет возможность
запускать и останавливать сервисы и
демоны, вызывая соответственно /etc/rc.d/service_name start или
/etc/rc.d/service_name
stop.
2.3.
Конфигурационный файл
Параметры
для скриптов инициализации хранятся в /etc/rc.conf. Этот файл
имеет формат
обычного текстового файла, в котором
перечислены параметры. Каждый из
параметров начинается с отдельной
строки, и имеет вид:
PARAM_NAME=«VALUE»
где
PARAM_NAME — имя параметра, а VAULE — его
значение.
В
данной версии системы инициализации
есть только один глобальный параметр,
который применяется для всех скриптов.
Это параметр USERCOLOR. Его значения могут
быть равны
YES и
NO. Этот параметр указывает, следует ли
использовать выделение цветом при
запуске и останове сервисов.
Остальные
параметры примееняемые в этом файле
относятся к конкретным скриптам и
сервисам и будут описаны ниже.
2.4.
/etc/rc.d/random
Этот
скрипт предназначен для запуска и
останова генератора случайных чисел.
Кроме того он выполняет сохранение и
восстановления случайных данных. Этот
скрипт автоматически вызывается при
загрузке и останове системы. !!!ВНИМАНИЕ!!! Данный сервис
категорически
нежелательно останавливать во время
работы системы. Многие другие сервисы
зависят от него. В случае неверного
сохранения случайных данных система
может рухнуть. В результате эксперементов
выяснилось что неостарожное обращение
с данным сервисом может убить систему
на столько что остальные сервисы
перестанут загружаться. Почему так
происходит неясно, будем надеятся на
разъяснения разработчиков по этому
поваду.
2.5.
/etc/rc.d/consolefont
Этот
скрипт предназначен для установки
системного шрифта. Автоматически
вызывается при старте системы. В качестве
параметра берет переменную CONSOLEFONT из
/etc/rc.conf
В
качестве значения этой переменной
используется имя одного из шрифтов
находящихся в каталоге /usr/lib/fonts. Например
для шрифта /usr/lib/fonts/cp866.fnt
запись в /etc/rc.conf будет следующей:
CONSOLEFONT=«cp866»
2.6.
/etc/rc.d/keymap
Этот
скрипт предназначен для установки карты
клавиатуры. Автоматически вызывается
при старте системы. В качестве параметра
берет переменную KEYMAP из /etc/rc.conf
В
качестве значения этой переменной
используется имя одной из карт клавиатуры
находящихся в каталоге /usr/lib/keymaps. Например
для карты /usr/lib/keymaps/russian-cp866.map
запись в /etc/rc.conf будет следующей:
KEYMAP=«russian-cp866»
2.7.
/etc/rc.d/net
Этот
скрипт предназначен для поднятия и
настройки сетевого интерфейса. Если
переменная NETWORK файла /etc/rc.conf равна YES,
то данный скрипт будет стартовать
автоматически при загрузке системы.
В первую очередь скрипт смотрит
содержимое /etc/inet.conf. Он берет оттуда
название драйвера сетевой карты который
необходимо загрузить. Формат этого
файла можно посмотреть в man inet(8). Потом
стартует сервис inet.
Далее
проверяется значение переменной CONFIG_NET_IP файла /etc/rc.conf. Если
оно равно
dhcp, то запускаются демоны dhcpd и nonamed
пытаясь определить автоматическую
конфигурацию сетевого интерфейса.
Когда
необходимо чтобы сеть имела статическое
значение ip адреса и шлюза значение
переменной CONFIG_NET_IP будет равно
соответствующим параметрам ifconfig.
Например для айпиадреса 192.168.0.1 с маской
255.255.255.0 будет так:
CONFIG_NET_IP=«-h
192.168.0.1 -n 255.255.255.0»
Шлюз
в этом случае задается через переменную
CONFIG_NET_ROUTE.
CONFIG_NET_ROUTE=«192.168.0.254»
Примечани:
Не забудте убедиться что /etc/rsolv.conf
содержит сылку на днс сервер в случае
настройки сети не по dhcp
2.8.
Остальные.
Остальные
сервисы и демоны запускаются темже
образом. Для каждого из них необходимо
созать скрипт в /etc/rc.d по аналогии с одинм
из существующих. Если необходимо чтобы
ваш скрипт запускался во время запуска
системы, можно воспользоваться переменной
DAEMONS файла /etc/rc.conf. Например:
DAEMONS=«sshd
ftp»
Означает
что после загрузки всех стандартных
демонов и сервисов, будут загружены
sshd и ftp. Единственное условие, чтобы
скрипты выполняющие загрузку оных,
находились в /etc/rc.d или /usr/local/etc/rc.d и имели
теже названия. Система инициализации
сама определит в каком из двух каталогов
находится данный скрипт инициализации.
3.1.
Информация для разработчиков
В
каталоге /etc/rc.d кроме всего прочего
находится файл functions содержащий описание
функций и переменных используемых при
инициилизации системы. Этот файл
инклюдится во все скрипты так или иначе
использующие инициализацию.
3.2.
Возможные недоработки
-
Из-за вывода дебаг сообщений при
загрузке некоторых сервисов (таких например как драйвера сетевой
карты), может немного косячить вывод сообщений. Решением этого могло бы
стать перенаправление дебаг вывода в отдельную консоль предназначеную
специально для этого. Как это реализовать к сожалению не знаю.
-
Не определяется автоматически размеры
консоли. Пока выставлено статически ширина в 80 символов.
3.3.
Примечания по установке
Распакуйте скрипты
в каталог /etc. Исправте скрипт
/etc/rc в одной из последних строчек чтобы
вместо запуска /usr/etc/rc вызывался sh
/etc/rc.sysinit $action. Убедитесь что все скрипты
(кроме functions) в каталоге /etc/rc.d имеют права
на выолнение.
|