Управление автозагрузкой в debian
Скрипты инициализации - это не большие программы на shell, которые обычно управляют сервисами, также известными как демоны. Прочие приложения для скриптов инициализации включают в себя простое управление состоянием чего-нибудь вроде hdparm (управляет временем перехода в спящий режим для жестких дисков), iptables (загрузка правил файрвола в ядро) и setserial (конфигурация последовательного порта). Директория /etc/init.d содержит скрипты исполняемые с помощью init во время загрузки и состоянии инициализации.
Скрипты инициализации также важны во время запуска и останова системы (в *nix системах просто меняется“runlevel”). Если вы посмотрите на список процессов, запущенных на вашей машине (попробуйте команду ps auwx), то есть вероятность, что процесс с наименьшим PID будет называться “init”. Это родительский процесс для всех процессов, это первая программа которую ядро запускает при загрузке. Программа init, которую можно найти по пути /sbin/init, ответственна за в рабочее состояние после того, как загрузится ядро.
Существует три простые утилиты для управления стартовыми и инициализационными скриптами:
Далее мы рассмотрим их все и приведем несколько примеров их использования.
update-rc.d
Устанавливает и удаляет ссылки на скрипты инициализации в System-V стиле. update-rc.d автоматически обновляет ссылки на скрипты инициализации в System-V стиле вида /etc/rcrunlevel.d/NNname на скрипты /etc/init.d/name. Они запускаются с помощью init когда меняется уровень загрузки и обычно используются для запуска или остановки системных сервисов, таких как демоны. init поддерживает следующие уровни загрузки - 0123456789S и NN - это двухцифренный код используемый init для определения в каком порядке должны запускаться скрипты.
Синтаксис update-rc.d
update-rc.d [-n] [-f] name remove
update-rc.d [-n] name defaults [NN | NN-start NN-stop]
update-rc.d [-n] name start|stop NN runlevel runlevel start|stop NN runlevel runlevel
update-rc.d [-n] name defaults [NN | NN-start NN-stop]
update-rc.d [-n] name start|stop NN runlevel runlevel start|stop NN runlevel runlevel
Когда запускается с опциями defaults, start или stop, update-rc.d создает ссылки /etc/rcrunlevel.d/[SK]NNname указывающие на скрипт /etc/init.d/name. Если какие-либо файлы уже существуют, то update-rc.d ничего не делает. Это объясняется тем, что системный администратор может изменить порядок ссылок, при условии, что как минимум одна ссылка сохранится, без того чтобы конфигурация была перезаписана.
Доступные опции.
-n - ничего не делать, только показать что будет сделано.
-f - заставить удалять символические ссылки даже если /etc/init.d/name все еще существует.
-f - заставить удалять символические ссылки даже если /etc/init.d/name все еще существует.
Примеры использования update-rc.d
Вставить ссылки с использованием defaults:
# update-rc.d samba defaults
Эквивалентная команда с использованием явных наборов аргументов:
# update-rc.d samba start 20 2 3 4 5 . stop 20 0 1 6 .
Если вы хотите удалить скрипт из автозагрузки, то используйте следующую команду:
# update-rc.d -f samba remove
Если вы хотите узнать о команде update-rc.d больше, то прочтите страницу man.
rcconf
Rcconf позволяет управлять тем, какие сервисы будут запускаться когда система загружается или уходит в перезагрузку. Утилита показывает меню, содержащее все сервисы, которые должны быть запущены при загрузке. Те, которые должны запускаться помечены и вы можете включить или выключить отдельные сервисы. Эта утилита конфигурирует системные сервисы во взаимодействии с системными уровнями загрузки (runlevels). Она включает или выключает сервисы с применением скриптов в /etc/init.d/. Rcconf работает с конфигурацией уровней загрузки в стиле System-V. Фактически это TUI(Text User Interface) к команде update-rc.d
Rcconf получает список сервисов от /etc/init.d и просматривает директории /etc/rc?.d чтобы определить запущен сервис или нет.
Если число (NN в /etc/rc?.d/NNname) не равно 20 (по умолчанию), то rcconf сохраняет имя сервиса и число в /var/lib/rcconf/services так что возможно восстановить конфигурацию сервиса в исходном состоянии.
Установка rcconf в Debian.
# aptitude install rcconf
Эта команда выполнит установку. Теперь вы можете использовать утилиту с помощью команды:
# rcconf
Если будет выводится сообщение rcconf needs dialog or whiptail, то необходимо будет установить утилиту dialog:
# aptitude install dialog
Теперь запустив rcconf Вы увидите на экране следующее:

Важные файлы:
/var/lib/rcconf/services - файл с данными о номерах процессов.
/var/lib/rcconf/lock - файл блокировки.
/var/lib/rcconf/guide.default - Guide File который генерируется утилитой update-rcconf-guide.
/var/lib/rcconf/guide - Guide File который может быть определен пользователем (администратором).
/var/lib/rcconf/lock - файл блокировки.
/var/lib/rcconf/guide.default - Guide File который генерируется утилитой update-rcconf-guide.
/var/lib/rcconf/guide - Guide File который может быть определен пользователем (администратором).
Если вы хотите узнать больше об утилите rcconf, то ознакомьтесь со страницей man.
file-rc
Этот пакет предоставляет альтернативный механизм для загрузки или остановки системы и смены уровней загрузки. Ссылки /etc/rc?.d/* будут сконвертированы в единый конфигурационный файл /etc/runlevel.conf который легче администрировать, чем символьные ссылки и который более гибок. Пакет автоматически сконвертирует ваши существующие символьные ссылки в файл во время установки и конвертирует файл обратно в символьные ссылки при удалении. Оба механизма совместимы посредством скриптов /etc/init.d/rc, /etc/init.d/rc*, /usr/sbin/update-rc.d и /usr/sbin/invoke-rc.d
Установка file-rc в Debian.
# aptitude install file-rc
В ходе установки в русифицированной версии Debian выводятся следующие сообщения:
Следующие НОВЫЕ пакеты будут установлены:
file-rc
0 пакетов обновлено, 1 установлено новых, 0 пакетов отмечено для удаления, и 42 пакетов не обновлено.
Необходимо получить 39,2 kB архивов. После распаковки 184 kB будет занято.
Следующие пакеты имеют неудовлетворённые зависимости:
sysv-rc: Конфликтует: file-rc но устанавливается 0.8.12.
Следующие действия разрешат зависимости:
file-rc
0 пакетов обновлено, 1 установлено новых, 0 пакетов отмечено для удаления, и 42 пакетов не обновлено.
Необходимо получить 39,2 kB архивов. После распаковки 184 kB будет занято.
Следующие пакеты имеют неудовлетворённые зависимости:
sysv-rc: Конфликтует: file-rc но устанавливается 0.8.12.
Следующие действия разрешат зависимости:
Удалить следующие пакеты:
1) sysv-rc
1) sysv-rc
Принять данное решение? [Y/n/q/?] y
Следующие НОВЫЕ пакеты будут установлены:
file-rc
Следующие пакеты будут УДАЛЕНЫ:
sysv-rc{a}
0 пакетов обновлено, 1 установлено новых, 1 пакетов отмечено для удаления, и 41 пакетов не обновлено.
Необходимо получить 39,2 kB архивов. После распаковки освободится 123 k байт.
Хотите продолжить? [Y/n/?] y
Получить:1 http://mirror.yandex.ru/debian/ squeeze/main file-rc all 0.8.12 [39,2 kB]
Получено 39,2 kБ в 0с (462 kБ/с)
dpkg: sysv-rc: имеются проблемы с зависимостями, но по вашему указанию
он всё равно будет удалён:
initscripts зависит от sysv-rc | file-rc, однако:
Пакет sysv-rc будет удалён.
Пакет file-rc не установлен.
sysvinit зависит от sysv-rc | file-rc, однако:
Пакет sysv-rc будет удалён.
Пакет file-rc не установлен.
(Чтение базы данных ... на данный момент установлено 36373 файла и каталога.)
Удаляется пакет sysv-rc ...
warning: reverting to legacy boot ordering
Обрабатываются триггеры для man-db ...
Выбор ранее не выбранного пакета file-rc.
(Чтение базы данных ... на данный момент установлено 36346 файлов и каталогов.)
Распаковывается пакет file-rc (из файла .../file-rc_0.8.12_all.deb)...
Обрабатываются триггеры для man-db ...
Настраивается пакет file-rc (0.8.12) ...
Следующие НОВЫЕ пакеты будут установлены:
file-rc
Следующие пакеты будут УДАЛЕНЫ:
sysv-rc{a}
0 пакетов обновлено, 1 установлено новых, 1 пакетов отмечено для удаления, и 41 пакетов не обновлено.
Необходимо получить 39,2 kB архивов. После распаковки освободится 123 k байт.
Хотите продолжить? [Y/n/?] y
Получить:1 http://mirror.yandex.ru/debian/ squeeze/main file-rc all 0.8.12 [39,2 kB]
Получено 39,2 kБ в 0с (462 kБ/с)
dpkg: sysv-rc: имеются проблемы с зависимостями, но по вашему указанию
он всё равно будет удалён:
initscripts зависит от sysv-rc | file-rc, однако:
Пакет sysv-rc будет удалён.
Пакет file-rc не установлен.
sysvinit зависит от sysv-rc | file-rc, однако:
Пакет sysv-rc будет удалён.
Пакет file-rc не установлен.
(Чтение базы данных ... на данный момент установлено 36373 файла и каталога.)
Удаляется пакет sysv-rc ...
warning: reverting to legacy boot ordering
Обрабатываются триггеры для man-db ...
Выбор ранее не выбранного пакета file-rc.
(Чтение базы данных ... на данный момент установлено 36346 файлов и каталогов.)
Распаковывается пакет file-rc (из файла .../file-rc_0.8.12_all.deb)...
Обрабатываются триггеры для man-db ...
Настраивается пакет file-rc (0.8.12) ...
Текущее состояние: 41 обновлён [-1].
Конфигурационный файл file-rc расположен в /etc/runlevel.conf. Если вы хотите посмотреть конфигурационный файл по умолчанию, то это можно сделать здесь.
Пример:
#
05 - 0 /etc/init.d/halt
05 - 1 /etc/init.d/single
05 - 6 /etc/init.d/reboot
10 0,1,6 2,3,4,5 /etc/init.d/sysklogd
12 0,1,6 2,3,4,5 /etc/init.d/kerneld
[…]
89 0,1,6 2,3,4,5 /etc/init.d/cron
99 - 2,3,4,5 /etc/init.d/rmnologin
99 0,1,6 2,3,4,5 /etc/init.d/xdm
05 - 0 /etc/init.d/halt
05 - 1 /etc/init.d/single
05 - 6 /etc/init.d/reboot
10 0,1,6 2,3,4,5 /etc/init.d/sysklogd
12 0,1,6 2,3,4,5 /etc/init.d/kerneld
[…]
89 0,1,6 2,3,4,5 /etc/init.d/cron
99 - 2,3,4,5 /etc/init.d/rmnologin
99 0,1,6 2,3,4,5 /etc/init.d/xdm
Вот вам ситуация. Компьютер после обновления операционной системы больше не загружается, не знаю почему. Разбираться нет желания, тем более, что всё равно собирался установить SSD вместо жёсткого диска. Загрузочной флешки нет, зато есть Android-планшет. Вот с помощью него и буду создавать такую флешку.