Наши партнеры








Книги по Linux (с отзывами читателей)

Библиотека сайта rus-linux.net

На главную -> MyLDP -> Электронные книги по ОС Linux
Linux From Scratch (version 6.8)
Назад Глава 7. Настройка скриптов загрузки системы Вперед

7.3. Как работают скрипты загрузки системы

В Linux используется специальный механизм загрузки, называемый SysVinit, который основывается на концепции уровней запуска (run-levels). Он может существенно различаться в различных системах, поэтому не следует предполагать, что то, что работает в одном из конкретных дистрибутивов Linux, также должно работать и в системе LFS. В LFS используется свой собственный способ загрузки, но в нем уважаются общепринятые стандарты.

Механизм SysVinit (который с этого момента будет называться " init") работает с использованием схемы уровней запуска. Есть семь (с номерами от 0 до 6) уровней запуска (на самом деле, уровней запуска больше, но они предназначены для специальных случаев и, как правило, не используются); подробности смотрите в init(8)), и для каждого из них определены действия, которые, как предполагается, компьютер должен выполнить при переходе на этот уровень. Уровнем запуска, используемым по умолчанию, является уровень 3. Ниже приведено описание различных уровней запуска и указано, что они реализуют:

0: выключение компьютера
1: однопользовательский режим
2: многопользовательский режим без поддержки сети
3: многопользовательский режим с поддержкой сети
4: зарезервирован для особых случаев; иначе то же самое, что и 3
5: то же самое, что и 4; обычно используется для графического входа (xdm для X или kdm для KDE)
6: перезагрузка компьютера

Командой, используемой для изменения уровней запуска, является команда init <runlevel>, где <runlevel> указывает уровень запуска, на который происходит переключение. Например, для перезагрузки компьютера, пользователь может набрать команду init 6, которая является алиасом команды reboot. Аналогично, команда init 0 является алиасом команды halt.

В директории /etc/rc.d есть ряд поддиректориев, которые имеют вид rc?.d (где ? является номером уровня запуска) и rcsysinit.d, причем во всех поддиректориях находится ряд символических ссылок. Некоторые начинаются с буквы K, другие начинаются с буквы S, и во всех за начальной буквой следуют две цифры. Буква K означает остановку (kill - уничтожить) сервиса, а S означает запуск сервиса. Числа от 00 и до 99 определяют порядок, в котором запускаются скрипты, причем чем число меньше, тем сервис запускается раньше. Когда с помощью команды init осуществляется переключение на другой уровень запуска, то в зависимости от выбранного уровня соответствующие сервисы либо запускаются, либо останавливаются.

Действительные скрипты находятся в директории /etc/rc.d/init.d. Они выполняют реальную работу, а символические ссылки указывают на них. Ссылки, используемые для остановки, и ссылки, используемые для запуска, указывают на одни и те же скрипты в директории /etc/rc.d/init.d. Это связано с тем, что скрипты могут вызываться с различными параметрами, например, start, stop, restart, reload и status. Когда используется ссылка K, соответствующий скрипт запускается с аргументом stop. Когда используется ссылка S, соответствующий скрипт запускается с аргументом start.

В этом объяснении есть одно исключение. Ссылки, которые начинаются с S и находятся в директориях rc0.d и rc6.d, ничего не запускают. Они будут вызываться с параметром stop с тем, чтобы что-то остановить. Логика такого действия в том, что когда пользователь перезагружает или останавливает систему, ничего запускать не нужно. Все, что нужно, это остановить систему.

Ниже приводится описание того, что должны делать скрипты с каждым из аргументов:

start
 

Запуск сервиса.

stop
 

Остановка сервиса.

restart
 

Сервис останавливается, а затем снова запускается.

reload
 

Обновляется конфигурация сервиса. Этот вариант используется после того, как конфигурационный файл сервиса изменен, и сервис не должен просто перезапускаться.

status
 

Сообщает, работает ли сервис и какой у него идентификатор PID.

Вы можете изменить способ загрузки процессов (в конце концов, это ваша собственная система LFS). Файлы, указанные здесь, являются примером того, как это можно сделать.


Предыдущий раздел: Оглавление Следующий раздел:
Пакет LFS-Bootscripts-20100627   Конфигурирование скрипта setclock