НАИМЕНОВАНИЕ
init - Родитель для
всех процессов
ОПИСАНИЕ
Превая
программа запускаемая в MINIX 3 это init.
Операции
выполняемые init могут быть
коротко изложены в этой псведо
shell
програме:
# Открыть 0, 1, 2.
exec
</dev/null >/dev/log 2>&1
# Запустить
скрипт инициализации системы.
sh
/etc/rc $bootopts
/etc/utmp
echo reboot >>/usr/adm/wtmp
while :; do
#
Подождать пока процес не будет завершен,
# но не блокировать.
wait
# Запись
logout. (Не этим способом конечно.)
if "pid
is in my tables" $pid
then
echo "logout $pid"
>/etc/utmp
echo "logout $pid" >>/usr/adm/wtmp
fi
# Запускаем новую сесию.
while
read line type getty init
do
if idle $line
then
$init
... <$tty >$tty
$getty <$tty >$tty 2>&1 &
pid=$!
"add pid to tables" $pid
echo "login
$line $pid" >/etc/utmp
echo "login $line $pid"
>>/usr/adm/wtmp
fi
done < /dev/ttytab
done
Первое действие выполняемое init -
запуск /etc/rc для
инициализации системы
как определено в boot(8). Затем
init входит
в свой главный цикл, в котором ожидает
завершения процессов, и запуска
процесов на доступных
терминалах.
Файл /etc/ttytab содержит список терминальных
устройств, их типов, програм для
запуска на них чтобы
разрешить логин
(обычно getty(8)), и програмы для
запуска
первой инициализационной строки (обычно
stty(1)).
Эти поля могут быть опущены
чтобы показать что линия
отключена
или инициализация не необходима. Поиск
команд
осуществляется по пути
/sbin:/bin:/usr/sbin:/usr/bin.
init принемает
некоторые сигналы, которые должны
передавать
id процесса 1. (Это первый
процесс, поэтому его id=1). Сигналы
могут
быть следующими:
SIGHUP
При получении
сигнала отбоя, Init забудет об ошибках
и
пересканирует ttytab для запущеных
процессов. Init
как правило пересканирует
ttytab каждый раз когда он чуствует
необходимость respawn процесс, так что
сигнал отбоя
нужен только если линия
была закрыта, или после сигнала
terminate.
Обратите внимание что после отключения
линии
вам будет необходимо убить
процсее на этой линии вручную,
init не
сделает это за вас.
SIGTERM
Как правило
посылается програмами которые
останавливают или
перезапускают
MINIX 3. Заставляет init воздержаться от
порождения новых.
SIGABRT
Посылается
драйвером клавиатуры когда комбинация
CTRL-ALT-DEL определена. Заставляет Init
начать процесс
завершения. Второй
сигнал позволяет остановить инициализацию
в момент поступления вызова. Третий
сигнал отключит
систему без
синхронизации.
MINIX 3 против Minix-vmd
Есть некоторые отличия в запуске init
между стандартной Minix 3
и Minix-vmd. Файл
/etc/rc выводит информацию в /dev/console а
Minix-vmd в /dev/null. Это означает что под
Minix-vmd если
процессы нуждаются в
пользовательских действиях, они должны
подключаться к /dev/console через intr(8).
Minix-vmd передает
значение загрузочной
переменной bootopts в /etc/rc. Стандартный
Minix 3 нет.
Файлы
/etc/ttytab Список
терминальных устройств.
/etc/utmp Список
пользователей залогиненых в системе.
/usr/adm/wtmp История Login/logout.
СМОТРЕТЬ
ТАКЖЕ
ttytab(5), utmp(5), getty(8), stty(1), boot(8).
АВТОР
Kees J. Bot (kjb@cs.vu.nl)
Перевод Андрей Л. Унгер (cobaltsys@nm.ru)