2.4.3 Инициализация пользовательского пространства |
Предыдущая Содержание Следующая |
Инициализация пользовательского пространства зависит от того, что поставляется. C переходом к процессу init зона ответственности ядра завершается. Что делает процесс init и как он запускает службы зависит от комплекта поставки. Сейчас мы изучим общую модель на Linux (которая предполагает, что процессом инициализации является /sbin/init); общая модель мало отличается от последовательности инициализации варианта Unix, System V UNIX.
Процесс /sbin/init и /etc/inittab
Процесс init - это особый процесс ядра; он имеет следующие возможности:
▪Он никогда не может быть убит. Linux предлагает сигнал, называемый SIGKILL, который может прекратить выполнение любого процесса, но процесс init он убить не может. ▪Когда какой-то процесс запускает другой процесс, последний становится потомком первого. Это отношение родитель-потомок имеет важное значение. В случае, если родительский процесс умирает раньше процесса потомка, init "усыновляет" осиротевшие процессы. ▪Ядро сообщает init-у об особых событиях используя сигналы. Например: если на клавиатуре системы нажать Ctrl-Alt-Del, это заставит ядро послать сигнал процессу init, который обычно выполняет выключение системы.
Процесс init может быть настроен на любой системе с помощью файла inittab, который обычно находится в каталоге /etc. init читает файл inittab и соответственно в последовательном порядке выполняет указанные действия. init также определяет состояние системы, известное как режим работы (уровень выполнения, run level). Режим работы - это число, которое передаётся в init в качестве аргумента. В случае, если не указано ничего, init может взять режим работы по умолчанию из файла inittab. Используются следующие режимы работы:
▪0 Остановка системы ▪1 Однопользовательский режим (используется для административных целей) ▪2 Многопользовательский режим с ограниченными сетевыми возможностями ▪3 Полный многопользовательский режим ▪4 Не используется ▪5 Графический режим (X11 ™) ▪6 Состояние перезагрузки
Файл inittab имеет специальный формат. Как правило, он содержит следующую информацию (для получения дополнительной информации, пожалуйста, обратитесь к главной странице inittab на вашей системе):
▪Режим работы по умолчанию. ▪Действия, предпринимаемые, когда для init меняется режим работы. Обычно вызывается сценарий /etc/rc.d/rc с режимом работы в качестве аргумента. ▪Процесс, который должен быть выполнен во время запуска системы. Как правило, это файл /etc/rc.d/rc.sysinit. ▪init может возрождать любой процесс, если так настроено в файле inittab. Эта функция используется для перезапуска процесса входа в систему после выхода пользователя после предыдущего входа в систему. ▪Действия для улавливания специальных сообщений, таких как Ctrl-Alt-Del или сбой питания.
Файл rc.sysinit
Этот файл выполняет инициализацию системы до запуска служб. Обычно на встроенной системе этот файл выполняет следующие действия:
▪Монтирует специальные файловые системы, такие как proc, ramfs ▪Создаёт при необходимости каталоги и ссылки ▪Устанавливает имя системы (hostname) ▪Настраивает сетевую конфигурацию системы
Запуск служб
Как упоминалось выше, за запуск служб отвечает сценарий /etc/rc.d/rc. Служба определяется как возможность управлять системным процессом. Используя службы, процесс может быть остановлен, перезапущен и может быть запрошено его состояние. Службы обычно организованы в каталогах основываясь на режимах работы; в зависимости от режима работы выбирается, остановить службу или запустить. После выполнения описанных выше действий, init запускает программу входа в систему по TTY или запускает оконный менеджер на графическом дисплее (в зависимости от режима работы).
|
Предыдущая Содержание Следующая |