![]() |
|
|||
WebMoney: WMZ Z294115950220 WMR R409981405661 WME E134003968233 |
Visa 4274 3200 2453 6495 |
Эта глава описывает процесс init, который является
первым процессом уровня пользователя, запускаемым ядром.
init имеет много важных режимов работы, таких как
запуск getty (чтобы пользователи могли войти в
систему), изменение уровня выполнения системы и удаление ненужных процессов.
Эта глава объясняет как настроить init и как можно
менять и использовать различные уровни выполнения. init является одной из тех программ, которые
абсолютно необходимы для системы Linux, но это Вы обычно можете игнорировать.
Хороший дистрибутив Linux поставляется с настройками для
init, которые подходят для большинства систем. В таком случае Вам не
придется что-либо настраивать самому. Вам придется заниматься настройкой
init если Вы используете последовательные терминалы
(хотя сейчас ими уже никто не пользуется), dial-in (не dial-out) модемы, или
меняете настройки уровней выполнения, что вообще-то нужно редко. Когда ядро запущено (загружено в память, получило управление и
инициализировало все драйверы устройств и структуры), оно запускает программу
уровня пользователя. Первой такой программой всегда является именно
init. Таким образом, init
всегда является первым процессом (номер процесса всегда 1). Ядро ищет init в нескольких местах, в которых он
располагается по традиции. В Linux обычно используется имя
/sbin/init. Если ядро не нашло
init, оно пробует запустить /bin/sh. Если и тут
происходит неудача, система выдает ошибку и останавливается. Когда init запущен, он завершает процесс загрузки
системы и выполняет ряд административных задач, таких как проверка файловых
систем, очистка каталога /tmp, запуск различных
сервисов и запуск процесса getty для каждого терминала
и виртуальной консоли откуда пользователи могут входить в систему (см.
главу 8 о регистрации пользователей и входе в
систему). После нормального запуска системы init
перезапускает getty для каждого терминала после того,
как пользователь завершил работу с системой (чтобы следующий пользователь мог
зарегистрироваться в системе). init также
перехватывает ничейные процессы: когда процесс запускает порожденный процесс
и завершает работу до своего потомка, его потомок немедленно становится
порожденным из init. Это важно по различным
техническим причинам. Вам следует знать это чтобы понять списки процессов
и графы дерева процессов. Имеется несколько вариантов
init. Большинство
дистрибутивов Linux используют sysvinit (написал
Miquel van Smoorenburg), который основан на System V
init. BSD версии Unix имеют отличия в процессе init
. Главным различием являются уровни выполнения: System V имеет их, а
BSD нет (по крайней мере, обычно). Мы будем рассматривать только
sysvinit.
Глава 7. init
Процесс
init запускается первым
Найди своих коллег! |