Compare commits
3 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
eb7a6ce4b1 | ||
|
|
6ddc14e9e7 | ||
|
|
df5abe6fc6 |
93
s4a.tex
93
s4a.tex
@@ -706,7 +706,7 @@ WantedBy=multi-user.target
|
|||||||
во-вторых, указание, что данный юнит рекомендуется активировать после запуска
|
во-вторых, указание, что данный юнит рекомендуется активировать после запуска
|
||||||
демона системного лога\footnote{Строго говоря, эту зависимость здесь
|
демона системного лога\footnote{Строго говоря, эту зависимость здесь
|
||||||
указывать не~нужно~--- в системах, в которых демон системного лога активируется
|
указывать не~нужно~--- в системах, в которых демон системного лога активируется
|
||||||
через сокет, эта зависимость является избыточной. Современные реализации
|
через сокет, данная зависимость является избыточной. Современные реализации
|
||||||
демона системного лога (например, rsyslog начиная с пятой версии)
|
демона системного лога (например, rsyslog начиная с пятой версии)
|
||||||
поддерживают активацию через сокет. В системах, использующих такие
|
поддерживают активацию через сокет. В системах, использующих такие
|
||||||
реализации, явное указание +After=syslog.target+ будет избыточным, так
|
реализации, явное указание +After=syslog.target+ будет избыточным, так
|
||||||
@@ -1175,10 +1175,10 @@ chroot-окружения требует глубокого понимания
|
|||||||
встроенную поддержку chroot. К сожалению, в системе Fedora, установленной с
|
встроенную поддержку chroot. К сожалению, в системе Fedora, установленной с
|
||||||
параметрами по умолчанию, таких демонов всего два:
|
параметрами по умолчанию, таких демонов всего два:
|
||||||
\href{http://avahi.org/}{Avahi} и RealtimeKit. Оба они написаны одним очень
|
\href{http://avahi.org/}{Avahi} и RealtimeKit. Оба они написаны одним очень
|
||||||
хитрым человеком ;-) (Вы можете собственноручно убедится в этом, выполнив
|
хитрым человеком ;-) (Вы можете собственноручно убедиться в этом, выполнив
|
||||||
команду +ls -l /proc/*/root+.)
|
команду +ls -l /proc/*/root+.)
|
||||||
|
|
||||||
Возвращаясь к тема нашего обсуждения: разумеется, systemd позволяет помещать
|
Возвращаясь к теме нашего обсуждения: разумеется, systemd позволяет помещать
|
||||||
выбранных демонов в chroot, и управлять ими точно так же, как и другими.
|
выбранных демонов в chroot, и управлять ими точно так же, как и другими.
|
||||||
Достаточно лишь указать параметр +RootDirectory=+ в соответствующем
|
Достаточно лишь указать параметр +RootDirectory=+ в соответствующем
|
||||||
service-файле. Например:
|
service-файле. Например:
|
||||||
@@ -1857,6 +1857,93 @@ shed)~--- если первое из этих решений принимает
|
|||||||
этих разработчиков планируют обеспечить поддержку новой конфигурации даже в
|
этих разработчиков планируют обеспечить поддержку новой конфигурации даже в
|
||||||
системах без systemd.
|
системах без systemd.
|
||||||
|
|
||||||
|
\section{О судьбе /etc/sysconfig и /etc/default}
|
||||||
|
|
||||||
|
В дистрибутивах, основанных на Red Hat и SUSE, это каталог называется
|
||||||
|
+/etc/sysconfig+. В дистрибутивах на базе Debian, его зовут +/etc/default+.
|
||||||
|
Во многих других дистрибутивах также присутствуют каталоги похожего назначения.
|
||||||
|
Связанные с ними вопросы неоднократно появляются в дискуссиях пользователей и
|
||||||
|
разработчиков systemd. В этой статье мне хотелось бы рассказать, что я, как
|
||||||
|
разработчик systemd, думаю об этих каталогах, и пояснить, почему я считаю
|
||||||
|
необходимым от них отказаться. Стоит отметить, что это мое личное мнение, и оно
|
||||||
|
может не~совпадать с позицией проекта Fedora или моего работодателя.
|
||||||
|
|
||||||
|
Начнем с небольшого исторического экскурса. Каталог +/etc/sysconfig+ появился в
|
||||||
|
дистрибутивах Red Hat и SUSE задолго до того, как я присоединился к этим
|
||||||
|
проектам~--- иными словами, это было очень давно.
|
||||||
|
Некоторое время спустя, в Debian появился аналогичный по смыслу каталог
|
||||||
|
+/etc/default+. Многие дистрибутивы используют такие каталоги, называя их
|
||||||
|
по-разному. Они имеются даже в некоторых ОС семейства Unix. (Например, в SCO.
|
||||||
|
Если эта тема вас заинтересовала~--- рекомендую обратиться к вашему знакомому
|
||||||
|
ветерану Unix, он расскажет подробнее и интереснее, чем я.) Несмотря на то,
|
||||||
|
что подобные каталоги широко используются в Linux и Unix, они совершенно
|
||||||
|
не~стандартизированы~--- ни в POSIX, ни в LSB/FHS, и результате мы имеем целый
|
||||||
|
зоопарк их различных реализаций в разных дистрибутивах.
|
||||||
|
|
||||||
|
Назначение этих каталогов определено весьма расплывчато. Абсолютное большинство
|
||||||
|
находящихся в них файлов являются включаемыми\footnote{Прим. перев.: здесь автор
|
||||||
|
использует термин sourcable, происходящий от bash'овской директивы +source+,
|
||||||
|
обеспечивающей включение в скрипт кода из внешнего файла. В классическом POSIX
|
||||||
|
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}
|
\end{document}
|
||||||
|
|
||||||
vim:ft=tex:tw=80:spell:spelllang=ru
|
vim:ft=tex:tw=80:spell:spelllang=ru
|
||||||
|
|||||||
Reference in New Issue
Block a user