Сценарии запуска Ubuntu и демон Upstart

Начиная с выпуска "Feisty Fawn" в начале 2007 года, в системах Ubuntu традиционный демон init был заменен службой начальной загрузки на основе событий Upstart, которая используется и некоторыми другими дистрибутивами Linux. Служба Upstart обрабатывает переходы из одного состояния системы в другое (например, при изменении состава оборудования) более элегантно, чем это делает демон init. Кроме того, Upstart значительно сокращает время загрузки.

Служба Upstart организует запуск и останов других служб и задач в ответ на такие события системы, как добавление устройства или отключение сетевого диска. Из соображений совместимости служба Upstart также эмулирует традиционные уровни выполнения демона init. Но сценарии запуска и останова обрабатываются несколько не так, как при использовании демона init.

Демон Upstart использует файлы определения заданий из каталога /etc/event.d (а не файл inittab). Задание в концептуальном плане подобно сценарию загрузки, т.е. оно выполняет некоторую последовательность команд, а затем возвращает управление демону Upstart. Коллекция заданий в системе Ubuntu выглядит так.

ubuntu$    Is /etc/event.d

control-alt-delete    last-good-boot    logd     rcO    rcl    rc2    rc3    rc4    rc5    rc6 rc-default    rcS    rcS-sulogin    sulogin    ttyl    tty2    tty3    tty4    tty5    tty6

Co временем все больше сценариев загрузки будут преобразованы в Upstart-задания, а пока для загрузки системы демон Upstart использует сценарии эмуляции уровней выполнения. Например, сценарий гс2 (в виде файла /etc/rc2 .d/rc) выполняет все сценарии запуска для уровня 2.

Из-за необходимости поддержки этой совместимости Ubuntu-администраторы должны использовать Ubuntu-команду update-rc. d для обслуживания ссылок на сценарии запуска в рамках rc-каталогов. Вот как выглядит синтаксис этой команды, update-rc.d служба { start  |  stop } последовательность уровней .

Команда update-rc. d принимает в качестве аргументов порядковый номер (имеется в виду порядок выполнения сценариев загрузки) и нужные уровни выполнения. Для обозначения конца списка уровней используется символ точки.

Службы, которые при смене уровня стартуют позже, должны останавливаться раньше при выходе системы с данного уровня. Например, если сервер печати CUPS во время загрузки запускается с порядковым значением 80, он должен остановиться приблизительно с номером 20, т.е. поближе к началу процесса останова. Команда update-rc. d, добавляющая соответствующие ссылки, должна иметь такой вид.

ubuntu$    sudo update-rc.d cups start 80 2 3 4 5  .  stop 20 S 1 6  .

Adding system startup for /etc/init.d/cups… /etc/rcl.d/K20cups -> ../init.d/cups /etc/rc6.d/K20cups -> ../init.d/cups /etc/rcS.d/K20cups -> ../init.d/cups /etc/rc2.d/S80cups -> ../init.d/cups /etc/rc3.d/S80cups -> ../init.d/cups /etc/rc4.d/S80cups -> ../init.d/cups /etc/rc5.d/S80cups ->  ../init.d/cups

Эта команда добавляет "стартовые" экземпляры сценариев с порядковым номером 80 на уровнях выполнения 2—5, а также — "финишные" экземпляры с порядковым номером 20 на уровнях S, 1 и 6.

Устанавливаемый по умолчанию уровень управляется двумя telinit-строками в файле /etc/event.d/rc-default. Изменить уровень выполнения можно, отредак-тиров файл rc-default в любом текстовом редакторе.

Демон Upstart также управляет логинами на терминалах, используя задания с tty*-именами.

 

Комментарии (0)

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.