2.4.3 Инициализация пользовательского пространства

Предыдущая  Содержание  Следующая V*D*V

Инициализация пользовательского пространства зависит от того, что поставляется. 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 или запускает оконный менеджер на графическом дисплее (в зависимости от режима работы).

 

Предыдущая  Содержание  Следующая