Как взаимодействует процесс загрузки со скриптами?

LINUX использует специальную возможность загрузки именуемой SysVinit Она основана на концепции runlevels. Они могут различаться от системы к системе, но это будет работать в дистрибутиве <вставьте его имя здесь> и в системах типа LFS. LFS имеет собственный путь в конфигурации, но мы уважаем стандарты.

SysVinit (мы называем init с этого места) работает используя схему runlevels. Всего их 7 (от 0 до 6). Может быть и более чем 7, но они создаются в отдельных случаях и в обыных системах не работают. Страница man для init описыват такие случаи. Каждый из уровней runlevels соответствует необходимам вещам, которые компьютер должен выполнить при загрузке этого уровня (runlevels). По умолчанию используется уровень 3 (runlevels). Далее приводится описание кажого уровня (runlevels) и небольшое описание:

0: halt the computer - выключить копмьютер
1: single-user mode - однопользовательский режим
2: multi-user mode without networking - многопользовательский режим без сети
3: multi-user mode with networking - многопользовательский режим с сетевыми установками
4: зарезервирован для создания, своего иначе используется так, как 3
5: Так-же как 4, только с использованием GUI входа в систему (например X'ы xdm или KDE's kdm)
6: перезагрузка компьютера

Комманда для изменения runlevels - init <runlevel> где <runlevel> целевой номер runlevel. Для примера: перезагрузить компьютер можно используя комманду init 6. Комманда reboot только алиас для init 6, как и комманда halt алиас для init 0.

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

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

Есть только одно исключение. симлинки начинающиеся с S в директориях rc0.d и rc6.d не могут быть запущены никогда. Они могут бать вызваны только с параметром stopдля остановки чего либо. Логика состоит в том, что если вы перезапустили или остановили систему, вам не надо запускать что либо, а только остановить систему.

Здесь предоставлены описания аргументов, передаваемых в скрипты, и заставляющих их выполнять что либо:

  • start: Запуск службы

  • stop: Останов службы

  • restart: Перезагрузка службы. Сначала останов службы, потом запуск.

  • reload: Обновить конфигурацию службы. Используется когда конфигурационный файл данной службы был изменен. Перезапуск службы не требуется.

  • status: Опросить службу. Выдается информация о том, запущена служба или нет, ее PIDs.

Почувствуйте свободу в создании собственных процессов загрузки (на вашей собственной системе LFS). Все поля, данные здесь - лишь примеры, о том, как лучше сделать (если вы знаете, что вам надо - сделайте так, как вы хотите).