diff --git a/s4a.tex b/s4a.tex index 88065c7..747ea2d 100644 --- a/s4a.tex +++ b/s4a.tex @@ -1870,12 +1870,12 @@ shed)~--- если первое из этих решений принимает Начнем с небольшого исторического экскурса. Каталог +/etc/sysconfig+ появился в дистрибутивах Red Hat и SUSE задолго до того, как я присоединился к этим -проектам, так что можно смело утверждать, что это было очень давно. -Через некоторое время, в Debian появился аналогичный по смыслу каталог +проектам~--- иными словами, это было очень давно. +Некоторое время спустя, в Debian появился аналогичный по смыслу каталог +/etc/default+. Многие дистрибутивы используют такие каталоги, называя их по-разному. Они имеются даже в некоторых ОС семейства Unix. (Например, в SCO. Если эта тема вас заинтересовала~--- рекомендую обратиться к вашему знакомому -ветерану Unix, он расскажет куда подробнее и интереснее, чем я.) Несмотря на то, +ветерану Unix, он расскажет подробнее и интереснее, чем я.) Несмотря на то, что подобные каталоги широко используются в Linux и Unix, они совершенно не~стандартизированы~--- ни в POSIX, ни в LSB/FHS, и результате мы имеем целый зоопарк их различных реализаций в разных дистрибутивах. @@ -1889,7 +1889,60 @@ shell это соответствует оператору-точке <<+.+>>. что и основной код, и при возвращении в основной скрипт сохраняются переменные окружения, определенные во включаемом коде. Как правило, код для включения не~содержит shebang'а (+#!/bin/sh+ в начале файла).} shell-скриптами, содержащими, -главным образом, определения переменных. +главным образом, определения переменных. Большинство файлов из этих каталогов +включаются в одноименные скриптами SysV init. Этот принцип отражен в +\href{http://www.debian.org/doc/debian-policy/ch-opersys.html#s-sysvinit}{Debian +Policy Manual (раздел 9.3.2)} и в +\href{http://fedoraproject.org/wiki/Packaging:SysVInitScript}{Fedora Packaging +Guidelines}, однако в обоих этих дистрибутивах иногда встречаются файлы, +не~соответствующие такой схеме, например, не~имеющие соответствующего +init-скрипта, или даже сами не~являющиеся скриптами. + +Но почему вообще появились эти каталоги? Чтобы ответить на этот вопрос, +обратимся к истории развития концепции SysV init-скриптов. Исторически, они +располагаются в каталоге под названием +/etc/rc.d/init.d+ (или что-то похожее). +Отметим, что каталог +/etc+ вообще-то предназначен для хранения файлов +конфигурации, а не~исполняемого кода (в частности, скриптов). Однако, в начале +своей истории, init-скрипты рассматривались именно как файлы конфигурации, +и редактирование их администратором было общепринятой практикой. Но со временем, +по мере роста и усложнения этих скриптов, их стали рассматривать уже не~как +файлы конфигурации, а как некие программы. Чтобы упростить их настройку и +обеспечить безопасность процесса обновления, настройки были вынесены в отдельные +файлы, загружаемые при работе init-скриптов. + +Попробуем составить некоторое представление о настройках, которые можно сделать +через эти файлы. Вот краткий неполный список различных параметров, которые могут +быть заданы через переменные окружения в таких файлах (составлен мною по +результатам исследования соответствующих каталогов в Fedora и Debian): +\begin{itemize} + \item Дополнительные параметры командной строки для бинарника демона. + \item Настройки локали для демона. + \item Тайм-аут остановки для демона. + \item Режим остановки для демона. + \item Системные настройки, например, системная локаль, часовой пояс, + параметры клавиатуры для консоли. + \item Избыточные информация о системных настройках, например, указание, + установлены ли аппаратные часы по Гринвичу или по местному + времени. + \item Списки правил брандмауэра, не~являются скриптом (!). + \item Привязки к процессорным ядрам для демона. + \item Настройки, не~относящиеся к процессу загрузки, например, + информация по установке пакетов с новыми ядрами, конфигурация + nspluginwrapper, разрешение на выполнение + предварительного связывания (prelinking) библиотек. + \item Указание, нужно ли запускать данную службу или нет. + \item Настройки сети. + \item Перечень модулей ядра, которые должны быть подгружены + принудительно. + \item Нужно ли отключать питание компьютера при остановке системы + (+poweroff+) или нет (+halt+). + \item Права доступа для файлов устройств (!). + \item Описание соответствующей SysV службы. + \item Идентификатор пользователя/группы, значение umask для демона. + \item Ограничения по ресурсам для демона. + \item Приоритет OOM killer'а для демона. +\end{itemize} + \end{document}