Алексей Стахнов

Linux


Скачать книгу

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

      са::ctrlaltdel:/sbin/shutdown -t3 -r now

      pf::powerfail:/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

      Опираясь