Выбрать главу

# 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 са::ctrlaltdeclass="underline" /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::powerfaiclass="underline" /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 принимает к сведению строки, содержащие специальные команды, такие как:

са::ctrlaltdeclass="underline" /sbin/shutdown -t3 -r now

pf::powerfaiclass="underline" /sbin/shutdown -f -h +2 "Power Failure; System Shutting Down"

pr:12345:powerokwait:/sbin/shutdown -с "Power Restored; Shutdown Cancelled"

После этого процесс init инициирует команду, которую необходимо запустить при старте системы, но перед тем как перейти к какому-нибудь уровню выполнения. Эта команда содержится в строке с ключевым словом sysinit.

si::sysinit:/etc/rc.d/rc.sysinit

После этого процесс init запускает скрипты, которые должны действовать в любом уровне выполнения:

ud::once:/sbin/update

а затем команды, соответствующие уровню, заданному по умолчанию:

13:3:wait:/etc/rc.d/rc 3

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

Как можно заметить, есть несколько строк, запускающих скрипт гс, которые отличаются только уровнем выполнения и аргументом командной строки, передаваемой в скрипт гс. Функции, выполняемые скриптами rc.sysinit и гс, будут рассмотрены в разд. «Основные конфигурационные файлы».

После запуска скрипта гс процесс init выполняет запуск шести виртуальных консолей (процессов mingetty или, в более старом варианте, – gettty), что дает пользователям возможность регистрироваться в системе с терминалов (или виртуальных консолей, поскольку терминал вы вряд ли где-нибудь встретите). Для переключения между виртуальными консолями необходимо нажимать комбинацию одной из русифицированных клавиш верхнего ряда клавиатуры: клавиши <Alt> с номером, соответствующим номеру виртуальной консоли. После инициализации виртуальных консолей можно считать, что система полностью перешла в соответствующий уровень выполнения, загрузка завершилась, операционная система ожидает регистрации пользователя.

После окончания загрузки init продолжает функционировать в фоновом режиме. Поэтому, с помощью команды telinit, которая взаимодействует с процессом init, можно произвести перевод системы с одного уровня выполнения на другой или указать init перечитать свой конфигурационный файл.

Когда пользователь останавливает систему (командой shutdown, halt, poweroff или reboot), процесс init завершает все исполняющиеся процессы, размонтирует все файловые системы и останавливает процессор или производит перезагрузку системы.

Основные конфигурационные файлы

Таким образом, в итоге рассмотрения предыдущего раздела мы установили, что процесс init выполняет три основных действия:

• запускает скрипт rc.sysinit из каталога /etc/rc.d;

• запускает скрипт гс из того же каталога /etc/rc.d с опцией, равной уровню выполнения (обычно третий или пятый уровни выполнения);

• запускает процессы getty.

Как следует из материала гл. 5, в каталоге /etc находится каталог rc.d, содержимое которого непосредственно касается процесса загрузки системы. Вот оно:

/init.d

/rc0.d

/rc1.d

/rc2.d

/rc3.d

/rc4.d

/rc5.d

/rc6.d

rc

rc.local

rc.sysinit

Опираясь на предыдущую информацию, нетрудно заметить, что существует семь каталогов для каждого уровня выполнения, какой-то каталог /init.d и три исполняемых файла, два из которых нам уже знакомы – гс и rc.sysinit. Третий файл – rc.local – вызывается по окончании исполнения файла гс и предназначен для команд, добавляемых администратором для запуска в процессе начальной загрузки. Редактировать файл гс не возбраняется, однако вероятность ошибки в файле, содержащем сотню-другую строк, очень велика, поэтому настоятельно рекомендуется использовать только файл rc.local. rc.sysinit