Русский перевод: Вадим Лопатюк
Содержание
- 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.conf
sshd=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 start
Starting sshd.
Сценарии rc могут принимать один из следующих аргументов:
- start
- stop
- restart
- kill
Например, когда должна быть добавлена новая запись в базу данных named сервера:
#
/etc/rc.d/named restart
Stopping 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.