Linux использует специальные средства загрузки, называемые SysVinit, которые основаны на концепции уровней запуска . Они могут сильно различаться от одной системы к другой, и я не могу сказать, что скрипты из <подставьте сюда имя любого дистрибутива> будут работать на LFS. У LFS свой подход к этим скриптам, но они также соответствуют стандартам.
SysVinit (с этого момента мы будем называть его “init”) работает, используя схему уровней запуска. Всего есть семь (от 0 до 6) уровней запуска (точнее, есть больше уровней запуска, но они предназначены для специальных целей и обычно не используются. Документация по init содержит более полную информацию по этому вопросу) и каждый из них сообщает компьютеру, что ему делать при запуске соответствующего уровня. Уровень запуска по умолчанию 3. Вот описание разных уровней загрузки и их назначение:
0:выключение компьютера.
1:однопользовательский режим.
2:многопользовательский режим без поддержки сети.
3:многопользовательский режим с поддержкой сети.
4:зарезервирован или используется как 3.
5:то же самое, что и 4, он обычно используется для графического входа
в систему (например, xdm из
X или kdm из KDE).
6:перезагрузка компьютера.
Для изменения уровня запуска используется команда init [runlevel] , где [runlevel] задает нужный уровень запуска. Например, для перезагрузки компьютера можно использовать команду init 6. Это и делает команда reboot, а команда halt является аналогом init 0.
Есть ряд каталогов в /etc/rc.d, которые выглядят как rc?.d (где ? является уровнем запуска) и rcsysinit.d, которые содержат ряд символических ссылок. Часть из них начинается с K, другие начинаются с S, затем идут две цифры уровня инициализации. K означает остановку (kill) сервиса, а S запуск (start). Число означает порядок, в котором запускаются скрипты, от 00 до 99: чем меньше номер, тем раньше вызывается скрипт. Когда init переключается на другой уровень загрузки, одни сервисы останавливаются, другие запускаются.
Сами скрипты расположены в /etc/rc.d/init.d. Они проделывают всю работу, а ссылки только указывают на них. Ссылки остановки и запуска указывают на один и тот же скрипт в /etc/rc.d/init.d. Это возможно благодаря тому, что скрипты запускаются с различными параметрами, такими как start, stop, restart , reload и status. Когда обрабатывается ссылка К, то соответствующий скрипт вызывается с аргументом stop. Если же обрабатывается ссылка S, то скрипт вызывается с параметром start.
Но есть одно исключение. Ссылки, начинающиеся с S в каталогах rc0.d и rc6.d вызываются только с параметром stop для остановки чего-либо. Это понятно, потому что когда Вы собираетесь перезагрузить или отключить систему, Вам не надо ничего запускать, а только остановить систему.
Вот описание параметров, которые можно передавать скриптам запуска:
Запуск сервиса.
Остановка сервиса.
Сервис останавливается и запускается заново.
Это команда для обновления настроек сервиса. Она обычно вызывается после изменения конфигурационного файла скрипта, но сервису не нужно перезапускаться.
Показывает, запущен ли сервис и какой у него PID.
Вы спокойно можете настраивать и изменять процесс загрузки (после установки системы LFS). Файлы, описываемые здесь, являются только примерами и, возможно, Вы сделаете их лучше.