Глава 6. Система rc.d
Русский перевод: Вадим Лопатюк
Содержание
- 6.1. Конфигурация rc.d
- 6.2. Сценарии rc.d
- 6.3. Роль rcorder и rc сценариев
- 6.4. Дополнительно к прочтению
Начиная с версии NetBSD 1.5 загрузка системы была изменена на использования rc-сценариев (скриптов), для контроля за сервисами, используемых в некоторых системах инициализации (init-system) System V и Linux, но без уровней запуска (runlevels). Эта глава – обзор rc- системы и ее конфигурации в NetBSD.
6.1. Конфигурация rc.d
Загрузочные файлы системы располагаются в каталоге /etc и называются:
/etc/rc/etc/rc.conf/etc/rc.d/*/etc/rc.lkm/etc/rc.local/etc/rc.shutdown/etc/rc.subr/etc/defaults/*/etc/rc.conf.d/*
Сначала посмотрите как управляются и поддерживаются сценарии, подробная информация содержится в rc(8):
- Когда ядро инициализирует все устройства при загрузке – оно обычно запускает init(8), который, в свою очередь, производит запуск
/etc/rc.d /etc/rcсортирует сценарии в/etc/rc.dиспользуя rcorder(8), и запускает их в этом порядке. См. rcorder(8) страницу руководства для ознакомления с правилами определяется очередности/etc/rc.dсценариев./etc/rc.subrсодержит общие функции используемые большинством сценариев/etc/rc.d/*.- Когда система отключается командой shutdown(8), то
/etc/shutdownзапускает скрипты из/etc/rc.dв обратном порядке (определенном в rcorder(8)) с ключом останова сервиса.
Дополнительные скрипты, находящиеся вне директории rc.d:
/etc/rc.lkmзагрузка или выгрузка Загружаемых Модулей Ядра (Loadable Kernel Modules), см. modload(8) и/etc/rc.d/lkm[123]./etc/rc.localэто едва ли не последний сценарий, вызываемый при загрузке. Этот сценарий может редактироваться администратором для запуска локальных демонов (daemons), он не соответствует концепции rc.Например, пакеты установленные pkgsrc обычно добавляют в него загрузочные файлы из
/usr/pkg/etc/rc.d, и оставляют системному администратору принимать решение о их подключении любым способом: ручное копирование/ссылка на них в/etc/rc.d, или включение их в/etc/rc.local. Далее пример из системы с установленным web-сервером apache, запуск которого прописан в/etc/rc.local:if [ -f /usr/pkg/etc/rc.d/apache ]; then /usr/pkg/etc/rc.d/apache start fi
Основным конфигурационным файлом для загрузочных сценариев является rc.conf(5), который располагается в /etc/rc.conf. /etc/rc.conf загружает настройки «по умолчанию» из /etc/defaults/rc.conf, к которому не нужно прикасаться. При необходимости вернуться к старым настройкам «по умолчанию», им можно подменить установленный в /etc/rc.conf.
Например, если вам нужно подключить демон SSH (Secure Shell Daemon):
#cd /etc; grep ssh defaults/rc.confsshd=NO sshd_flags=""#echo "sshd=YES" >> rc.conf
Или просто отредактируйте /etc/rc.conf вашим любимым редактором. Таким же образом можно поступить с любыми настройками «по умолчанию», которые необходимо изменить. Общая последовательность команд, часто выполняемая после установки свежей системы NetBSD:
#cat /etc/defaults/rc.conf >>/etc/rc.conf#vi /etc/rc.conf
Будте внимательны! Используйте «>>», а не «>» в противном случае вы можете уничтожить предыдущее содержание /etc/rc.conf. Учтите, в этом файле находятся необходимые для работы системы параметры! После того, как вы скопируете установки этим способом, модифицируйте все что вам необходимо в /etc/rc.conf. Проконсультируйтесь со страницей руководства rc.conf(5) для получения более подробной информации.
Последний каталог по списку но не по значению: /etc/rc.conf.d/, который может быть использован для хранения скриптов стороннего программного обеспечения, позволяя устанавливать одну или несколько настроек на каждый файл.
6.2. Сценарии rc.d
Актуальные сценарии управления сервисами располагаются в /etc/rc.d. Каждый сервис должен быть единожды активирован или не активирован в /etc/rc.conf, который также может быть модифицирован для вызова rc сценариев из командной строки, например, если администратору необходимо запустить демон SSH:
#/etc/rc.d/sshd startStarting sshd.
Сценарии rc могут принимать один из следующих аргументов:
- start
- stop
- restart
- kill
Например, когда должна быть добавлена новая запись в базу данных named сервера:
#/etc/rc.d/named restartStopping named. Starting named.
Немного более комплексный пример – когда было изменено несколько настроек.правил брандмауэра ipfilter, конфигурации ipnat и изменен тип криптования SSH сервера:
#sh /etc/rc.d/ipfilter restart#sh /etc/rc.d/ipnat restart#sh /etc/rc.d/sshd restart
6.3. Роль rcorder и rc сценариев
Загрузка системы во всех Unix системах основывается на определении последовательности в которой будут запускаться сервисы в том или ином случае. На некоторых Unix системах это реализуется определенным порядком именования файлов и/или помещении их в отдельные директории запуска (Solaris полагается на маски, такие как – /etc/rc[23].d/S*, осуществляя сортировку по цифровому расширению), или просто размещая все команды, которые должны запускаться при системной загрузке в один монолитный сценарий (который использовался в старых BSD и NetBSD до rc-системы). Но он будет очень запутан. В NetBSD это выполняется rc-сценариями и их содержанием. Обратите внимание NetBSD не имеет многих уровней запуска, какие можно найти в системах System V, таких как Solaris или Linux.
В начале каждого из rc-сценариев в /etc/rc.d/*, там где серия строк-коментариев, имеется одна из следующих составляющих:
- REQUIRE
- PROVIDE
- BEFORE
- KEYWORD
Здесь устанавливаются зависимости данного rc сценария и отсюда rcorder может легко работать «вверх» или «вниз» в зависимости от требований ситуации. Следующий пример /etc/rc.d/nfsd сценария:
... PROVIDE: nfsd REQUIRE: mountd . /etc/rc.subr ...
Здесь мы можем увидеть, что этот сценарий необходим для «nfsd» и он требует, чтобы «mountd» был запущен раньше. Утилита rcorder(8) должна использоваться во время системной загрузки для сковозного прочтения всех rc-сценариев, и определения корректной последовательности их запуска (индивидульно по имени).
6.4. Дополнительно к прочтению
Это дополнительно доступные ресурсы, относящиеся к rc.d system:
- Один из главных создателей rc.d, Luke Mewburn, сделал презентацию системы на USENIX 2001. Она доступна в PDF формате.
- Will Andrews написал в Daemonnews статью, названную The NetBSD rc.d System.