Как всякая программа, после старта init сразу считывает свой конфигурационный файл /etc/inittab. Это обычный текстовый файл, состоящий из отдельных строк. Если строка начинается со знака # (стандартный признак комментария в конфигурационных файлах и скриптах) или пуста, она игнорируется. Все остальные строки состоят из 4 разделенных двоеточиями полей, имеющих вид:
id: runlevels: action: process
где:
• id – идентификатор строки. Выбирается произвольно, но в файле не может быть двух строк с одинаковыми идентификаторами. Если конфигурационный файл модифицируется достаточно часто, имеет смысл использовать неписаное правило нумерации строк в BASIC – номера строкам назначать кратно пяти или десяти;
• runieveis – уровни выполнения, на которых эта строка будет задействована. Уровни задаются цифрами (без разделителей);
• process – команда, которая должна быть запущена;
• action – действие. В этом поле стоит ключевое слово, которое определяет, что должен делать процесс init, пока выполняется (или после выполнения) команда, заданная полем process:
– wait – ожидать завершения процесса. Соответственно, пока не закончится данный процесс, init не запускает никаких других процессов. Как правило, такого типа процессы используются для разнообразных проверочных действий (проверка и восстановление файловых систем), а так же для запуска различных служб (демонов);
– once – выполнять процесс только один раз;
– respawn – перезапустить процесс в случае его «смерти». Актуально для некоторых служб, которые должны постоянно присутствовать в системе;
– off – игнорировать данный элемент. Можно использовать при отладке конфигурационного файла;
– boot – процесс должен быть выполнен при загрузке операционной системы, поле runieveis (уровни выполнения) при этом игнорируется;
– bootwait – то же, что и предыдущая опция, но init должен ожидать окончания работы процесса;
– initdefauit – указывает init, в какой уровень выполнения необходимо перейти системе после загрузки;
– sysinit – процесс должен быть выполнен во время загрузки операционной системы до выполнения любой строки с boot или bootwait;
– powerwait – позволяет процессу init остановить систему при пропадании электроэнергии. Применение этого ключевого слова предполагает, что используется источник бесперебойного питания (UPS), имеющий специальный интерфейс, с помощью которого источник бесперебойного питания может посылать в компьютер и принимать из него различные управляющие сигналы (например "нет питания", "выключить источник бесперебойного питания", "аккумуляторы разряжены" и т. п.), а также программное обеспечение, которое отслеживает состояние источника бесперебойного питания и информирует init о том, что питание отключилось;
– ctriaitdei – разрешает init перезагрузить систему, когда пользователь нажимает комбинацию ++ на клавиатуре. Однако системный администратор может определить действия по ++, например, игнорировать нажатие этой комбинации.
Этот список не является исчерпывающим. Подробную информацию о файле inittab можно узнать из тап-страниц init, inittab.
В качестве примера приведем файл inittab, который находится в только что установленной системе Red Hat 7.1.
# inittab Этот файл описывает как процесс INIT должен настроить
# операционную систему в соответствующем уровне выполнения
#
# Author: Miquel van Smoorenburg,
# Modified for RHS Linux by Marc Ewing and Donnie Barnes
#
# Default runlevel. The runieveis used by RHS are:
# 0 – halt (Do NOT set initdefault to this)
# 1 – Single user mode
# 2 – Multiuser, without NFS (The same as 3, if you do not have
# networking)
# 3 – Full multiuser mode
# 4 – unused
# 5 – X11
# 6 – reboot (Do NOT set initdefault to this)
id:3:initdefault:
# System initialization. si::sysinit:/etc/rc.d/rc.sysinit
10:0:wait:/etc/rc.d/rc 0
11:1:wait:/etc/rc.d/rc 1
12:2:wait:/etc/rc.d/rc 2
13:3:wait:/etc/rc.d/rc 3
14:4:wait:/etc/rc.d/rc 4
15:5:wait:/etc/rc.d/rc 5
16:6:wait:/etc/rcd/rc. 6
# Things to run in every runlevel. ud::once:/sbin/update
# Trap CTRL-ALT-DELETE са::ctrlaltdel:/sbin/shutdown -t3 -r now
# When our UPS tells us power has failed, assume we have a few
# minutes
# of power left. Schedule a shutdown for 2 minutes from now.
# This does, of course, assume you have powerd installed and your
# UPS connected and working correctly.
pf::powerfail:/sbin/shutdown -f -h +2 "Power Failure; System Shutting Down"
# If power was restored before the shutdown kicked in, cancel it. pr:12345:powerokwait:/sbin/shutdown -c "Power Restored; Shutdown Cancelled"
# Run gettys in standard runieveis
1:2345:respawn:/sbin/mingetty tty1
2:2345:respawn:/sbin/mingetty tty2
3:2345:respawn:/sbin/mingetty tty3
4:2345:respawn:/sbin/mingetty tty4
5:2345:respawn:/sbin/mingetty tty5
6:2345:respawn:/sbin/mingetty tty6
# Run xdm in runlevel 5
# xdm is now a separate service
x:5:respawn:/etc/X11/prefdm -nodaemon
Сразу после запуска процесс init считывает свой конфигурационный файл /etc/inittab и производит его разбор. Сначала он определяет, какой уровень по умолчанию установлен в системе. Как видно из приведенного конфигурационного файла id:3rinitdefault уровень выполнения, в котором будет функционировать операционная система после загрузки, равен трем (то есть предполагается многопользовательский режим с поддержкой сетевых функций). Дистрибутив Red Hat по умолчанию предлагает установить вход в систему в графическом режиме – пятый уровень выполнения. Затем процесс init принимает к сведению строки, содержащие специальные команды, такие как:
Читать дальше
Конец ознакомительного отрывка
Купить книгу