НАЗВАНИЕ
init, inir - Инициализация управления процессами.
СИНТАКСИС
/etc/init /etc/inir
ОПИСАНИЕ
Программа init вызывается на последнем шаге процедуры начальной загрузки и на первом шаге включения терминалов для
вводов пользователей. init является одной из трех программ
(init, getty (7) и login (1)), используемых для инициализации
системы с целью вычисления.
init создает процесс для каждого терминала, в который может войти пользователь. Он начинается с открытия консольного усторйства /dev/console для считывания и записи. Затем он вызывает командный процессор, требующий пароль для запуска системы в режиме обслуживания. Так как при этом считывается файл EOF, система входит в "многопользовательский режим". Если вводится корневой пароль, командный процессор стартуется и подключается к консоле. Когда этот процессор выключается, система переходит к "многопользовательскому режиму".
Если система будет автоматически загружена во время начальной загрузки, init будет автоматически передан -a флаг при старте. init также передает этот флаг программам, которые она выполняет, с тем, чтобы они могли выбрать различное поведение при условиях autoboot(8).
Пользователь может использовать команду boot, и файловая система может быть загрязнена. В этом случае 2inir 0 приглашает пользователя, спрашивающего, где выполнять fsck (8). (Смотри более подробно fsck (8).)
Пользователь может использовать boot, и файловая система может быть чистой. В этом случае inir считывает команды из файла /etc/rc. Это выполняется с помощью процедур "multi-user/rc" и "getty/login", описанных ниже.
"multi-user/rc" procedure: Как только файловая система становится чистой, командный процессор завершает свою работу, и init выполняет несколько шагов для того чтобы начать обычное действие. Она вызывает процессор и считывает команды в /etc/ttys файле. Этот командный файл выполняет служебные задачи, такие как удаление временных файлов, монтирование файловых систем и запуск демонов. Затем он читает /etc/ttys файл и делит на несколько частей для того, чтобы начать процесс для каждого терминального устройства в файле. Каждая строка в /etc /ttys печатает состояние строки (0 для закрытой и 1 для открытой), режим строки и последовательную строку (смотри ttys (3)). Каждый процесс открывает соответственную последовательную строку для чтения и записи, присваивая файловые дискрипторы 0 , 1 и 2 сторке и устанавливая ее как стандартные файлы ввода, вывода и ошибок. Если последовательная строка связана с модемом, процесс задерживает открытие строки до тех пор, пока кто-нибудь не вызовет ее, и в этой строке не осуществится передача.
"getty/login" procedure: Как только init открывает строку, она выполняет программу getty, передавая режим строки в качестве аргумента. Программа getty читает имя файла и вызывает login(1) для завершения входного процесса (детально смотри getty(M7)). init ждет до тех пор, пока пользователь не выйдет из системы, печатая конец файла ASCII (Ctrl-D) или зависая. В ответ он вызывает и удаляет предыдущий ввод пользователей из файла utmp, и входит в файл wtmp, который хранит информацию о вводах и выводах. Затем соответствующая строка еще раз открывается, а getty еще раз вызывается.
init имеет последовательные ответы при зависании, прерывании и сигналах окончания. По сигналу зависания SIGHUP программа init вызывает изменения системы от режима нормальной работы к режиму обслуживания. По сигналу прерывания SIGINT init повторно считывает файл ttys, чтобы открыть какие-либо новые строки и закрыть строки, которые были ранее удалены. По сигналу окончания SIGQUIT программа init запрещает любые дальнейшие вводы. В общем случае, эти сигналы оказывают серьезное влияние на систему и не должны использоваться неопытными пользователями. Вместо этого, аналогичные функции могут с безопасностью быть выполнены с помощью команд enable(1), disable(1) и shutdown(8).
ФАЙЛЫ
/dev/tty* /etc/utmp /usr/adm/wtmp /etc/default/boot /etc/ttys /etc/rc /etc/gettydefs
СМ. ТАКЖЕ
autoboot(8), telenit(8), disable(1), enable(1),
login(1), kill(1), sh(1), shutdown(8), ttys(3), getty(7),
gettydefs(3), inittab(3)
ДИАГНОСТИКА
Если в течение пяти минут или менее на одной и той же
строке стартуются семь или более процессов getty, init записывает сообщение об ошибках в /dev/console и отказывается запускать другую getty на той же строке, по крайней мере, в течение
30 минут. Если требуется, init стартует немедленно снова, для
работы init нужно запустить SIGINT.
ПРИМЕЧАНИЯ
init может быть вызвана только ядром как процесс 1. Не
может быть вызвана из запроса командного процессора.
Для пользователей, хорошо знакомых с подходом telenit к администратору терминала, предполагается inittab. Для большей информации смотри telenit(8) и inittab(3).