Содержание
Начиная с версии NetBSD 1.5 загрузка системы была изменена на использования rc-сценариев (скриптов), для контроля за сервисами, используемых в некоторых системах инициализации (init-system) System V и Linux, но без уровней запуска (runlevels). Эта глава - обзор rc- системы и ее конфигурации в NetBSD.
Загрузочные файлы системы располагаются в каталоге
/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/, который может быть
использован для хранения скриптов стороннего
программного обеспечения, позволяя устанавливать одну или
несколько настроек на каждый файл.
Актуальные сценарии управления сервисами располагаются
в /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
Загрузка системы во всех 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-сценариев, и определения корректной последовательности их запуска (индивидульно по имени).
Это дополнительно доступные ресурсы, относящиеся к rc.d system:
Один из главных создателей rc.d, Luke Mewburn, сделал презентацию системы на USENIX 2001. Она доступна в PDF формате.
Will Andrews написал в Daemonnews статью, названную The NetBSD rc.d System.