Compare commits

...

2 Commits
v15.6 ... v15.8

Author SHA1 Message Date
nnz1024
7de2397a9b Version v15.8 (2014-03-03 17:31) [AUTO] 2017-08-17 23:05:41 +03:00
nnz1024
84177721df Version v15.7 (2013-08-27 19:08) [AUTO] 2017-08-17 23:05:41 +03:00

296
s4a.tex
View File

@@ -641,8 +641,8 @@ service-файл будет работать в любом дистрибути
вам отправить этот файл разработчикам. Вопросы по полноценной интеграции вам отправить этот файл разработчикам. Вопросы по полноценной интеграции
демонов с systemd, с максимальным использованием всех его возможностей, будут демонов с systemd, с максимальным использованием всех его возможностей, будут
рассмотрены в последующих статьях этого цикла, пока же ограничимся ссылкой на рассмотрены в последующих статьях этого цикла, пока же ограничимся ссылкой на
\href{http://0pointer.de/public/systemd-man/daemon.html}{страницу} официальной \href{http://www.freedesktop.org/software/systemd/man/daemon.html}{страницу}
документации. официальной документации.
Итак, приступим. В качестве примера возьмем init-скрипт демона ABRT (Automatic Итак, приступим. В качестве примера возьмем init-скрипт демона ABRT (Automatic
Bug Reporting Tool, службы, занимающейся сбором crash dump'ов). Исходный Bug Reporting Tool, службы, занимающейся сбором crash dump'ов). Исходный
@@ -751,9 +751,9 @@ WantedBy=multi-user.target
лога, независимо от используемой программы (например, rsyslog или syslog-ng) лога, независимо от используемой программы (например, rsyslog или syslog-ng)
и типа активации (как обычной службы или через log-сокет). Подробнее о таких и типа активации (как обычной службы или через log-сокет). Подробнее о таких
специальных юнитах можно почитать специальных юнитах можно почитать
\href{http://0pointer.de/public/systemd-man/systemd.special.html}{страницу} \href{http://www.freedesktop.org/software/systemd/man/systemd.special.html}%
официальной документации. Обратите внимание, что директива +After+, в {страницу} официальной документации. Обратите внимание, что директива +After+,
отсутствие директивы +Requires+, задает лишь порядок загрузки, но в отсутствие директивы +Requires+, задает лишь порядок загрузки, но
не~задает жесткой зависимости. То есть, если при загрузке конфигурация не~задает жесткой зависимости. То есть, если при загрузке конфигурация
systemd будет предписывать запуск как демона системного лога, так и abrtd, то systemd будет предписывать запуск как демона системного лога, так и abrtd, то
сначала будет запущен демон системного лога, и только потом abrtd. Если же сначала будет запущен демон системного лога, и только потом abrtd. Если же
@@ -874,11 +874,11 @@ systemd располагает удобным методом для опреде
За более подробным описанием всех опций настройки, вы можете обратиться к За более подробным описанием всех опций настройки, вы можете обратиться к
страницам руководства страницам руководства
\href{http://0pointer.de/public/systemd-man/systemd.unit.html}{systemd.unit}, \href{http://www.freedesktop.org/software/systemd/man/systemd.unit.html}{systemd.unit},
\href{http://0pointer.de/public/systemd-man/systemd.service.html}{systemd.service}, \href{http://www.freedesktop.org/software/systemd/man/systemd.service.html}{systemd.service},
\href{http://0pointer.de/public/systemd-man/systemd.exec.html}{systemd.exec}. Полный \href{http://www.freedesktop.org/software/systemd/man/systemd.exec.html}{systemd.exec}.
список доступных страниц можно просмотреть Полный список доступных страниц можно просмотреть
\href{http://0pointer.de/public/systemd-man/}{здесь}. \href{http://www.freedesktop.org/software/systemd/man/}{здесь}.
Конечно, отнюдь не~все init-скрипты так же легко преобразовать в Конечно, отнюдь не~все init-скрипты так же легко преобразовать в
service-файлы. Но, к счастью, <<проблемных>> скриптов не~так уж и много. service-файлы. Но, к счастью, <<проблемных>> скриптов не~так уж и много.
@@ -940,7 +940,10 @@ Apache, crond, atd, которые по роду служебной деятел
лишь возможности исчерпания памяти и идентификаторов процессов (PID). Впрочем, и лишь возможности исчерпания памяти и идентификаторов процессов (PID). Впрочем, и
их тоже можно легко устранить: достаточно задать соответствующие лимиты в их тоже можно легко устранить: достаточно задать соответствующие лимиты в
конфигурационном файле службы (см. конфигурационном файле службы (см.
\href{http://www.0pointer.de/public/systemd-man/systemd.exec.html}{systemd.exec(5)}).}. \href{http://www.freedesktop.org/software/systemd/man/systemd.exec.html}%
{systemd.exec(5)} и
\href{http://www.freedesktop.org/software/systemd/man/systemd.resource-control.html}%
{systemd.resource-control(5)}).}.
В некоторых случаях возникает необходимость отправить сигнал именно основному В некоторых случаях возникает необходимость отправить сигнал именно основному
процессу службы. Например, используя +SIGHUP+, мы можем заставить демона процессу службы. Например, используя +SIGHUP+, мы можем заставить демона
@@ -1241,8 +1244,8 @@ RootDirectoryStartOnly=yes
доступ к иерархии файловых систем ОС (иначе наш скрипт просто не~сможет доступ к иерархии файловых систем ОС (иначе наш скрипт просто не~сможет
выполнить bind-монтирование нужных каталогов). Более подробную информацию по выполнить bind-монтирование нужных каталогов). Более подробную информацию по
опциям конфигурации вы можете получить на опциям конфигурации вы можете получить на
\href{http://0pointer.de/public/systemd-man/systemd.service.html}{страницах} \href{http://www.freedesktop.org/software/systemd/man/systemd.service.html}{страницах}
\href{http://0pointer.de/public/systemd-man/systemd.exec.html}{руководства}. \href{http://www.freedesktop.org/software/systemd/man/systemd.exec.html}{руководства}.
Поместив приведенный выше текст примера в файл Поместив приведенный выше текст примера в файл
+/etc/systemd/system/foobar.service+, вы сможете запустить chroot'нутого демона +/etc/systemd/system/foobar.service+, вы сможете запустить chroot'нутого демона
@@ -1276,8 +1279,8 @@ InaccessibleDirectories=/home
единственным исключением~--- она не~будет видеть каталог +/home+, что позволит единственным исключением~--- она не~будет видеть каталог +/home+, что позволит
защитить данные пользователей от потенциальных хакеров. (Подробнее об этих защитить данные пользователей от потенциальных хакеров. (Подробнее об этих
опциях можно почитать на опциях можно почитать на
\href{http://0pointer.de/public/systemd-man/systemd.exec.html}{странице \href{http://www.freedesktop.org/software/systemd/man/systemd.exec.html}%
руководства}.) {странице руководства}.)
Фактически, FSNS по множеству параметров превосходят +chroot()+. Скорее всего, Фактически, FSNS по множеству параметров превосходят +chroot()+. Скорее всего,
Avahi и RealtimeKit в ближайшем будущем перейдут от +chroot()+ к использованию Avahi и RealtimeKit в ближайшем будущем перейдут от +chroot()+ к использованию
@@ -1327,7 +1330,7 @@ debootstrap/febootstrap. В этом случае возможности +system
взаимодействия с процессом init.}. взаимодействия с процессом init.}.
Однако, куда более интересные возможности предоставляет программа Однако, куда более интересные возможности предоставляет программа
\href{http://0pointer.de/public/systemd-man/systemd-nspawn.html}{systemd-nspawn}, \href{http://www.freedesktop.org/software/systemd/man/systemd-nspawn.html}{systemd-nspawn},
входящая в стандартный комплект поставки systemd. По сути, это улучшенный аналог входящая в стандартный комплект поставки systemd. По сути, это улучшенный аналог
+chroot(1)+~--- она не~только подменяет корневой каталог, но и создает отдельные +chroot(1)+~--- она не~только подменяет корневой каталог, но и создает отдельные
пространства имен для дерева файловых систем (FSNS) и для идентификаторов пространства имен для дерева файловых систем (FSNS) и для идентификаторов
@@ -1635,7 +1638,12 @@ $ eog plot.svg
Она создает наглядные диаграммы, показывающие моменты запуска служб и время, Она создает наглядные диаграммы, показывающие моменты запуска служб и время,
затраченное на их запуск, по отношению к другим службам. На текущий момент, она затраченное на их запуск, по отношению к другим службам. На текущий момент, она
не~показывает явно, кто кого ожидает, но догадаться обычно несложно. не~показывает явно, кто кого ожидает, но догадаться обычно
несложно\footnote{Прим. перев.: Начиная с systemd 203, добавлена поддержка
специальной команды +systemd-analyze critical-chain+, которая выводит самую
медленную цепочку юнитов (цепь в графе зависимостей, формируемом при
загрузке). Время запуска всех юнитов в этой цепочке определяет итоговое время
загрузки системы.}.
Чтобы продемонстрировать эффект, порожденный двумя нашими оптимизациями, Чтобы продемонстрировать эффект, порожденный двумя нашими оптимизациями,
приведем ссылки на соответствующие графики: приведем ссылки на соответствующие графики:
@@ -1755,20 +1763,24 @@ LVM, RAID и multipath). Если они вам не~нужны, вы легко
всех дистрибутивах: всех дистрибутивах:
\begin{itemize} \begin{itemize}
\item \item
\hreftt{http://0pointer.de/public/systemd-man/hostname.html}{/etc/hostname}: \hreftt{http://www.freedesktop.org/software/systemd/man/hostname.html}%
{/etc/hostname}:
имя хоста для данной системы. Одна из наиболее простых и важных имя хоста для данной системы. Одна из наиболее простых и важных
системных настроек. В разных дистрибутивах оно настраивалось системных настроек. В разных дистрибутивах оно настраивалось
по-разному: Fedora использовала +/etc/sysconfig/network+, по-разному: Fedora использовала +/etc/sysconfig/network+,
OpenSUSE~--- +/etc/HOSTNAME+, Debian~--- +/etc/hostname+. Мы OpenSUSE~--- +/etc/HOSTNAME+, Debian~--- +/etc/hostname+. Мы
остановились на варианте, предложенном Debian. остановились на варианте, предложенном Debian.
\item \item
\hreftt{http://0pointer.de/public/systemd-man/vconsole.conf.html}{/etc/vconsole.conf}: \hreftt{http://www.freedesktop.org/software/systemd/man/vconsole.conf.html}%
{/etc/vconsole.conf}:
конфигурация раскладки клавиатуры и шрифта для консоли. конфигурация раскладки клавиатуры и шрифта для консоли.
\item \item
\hreftt{http://0pointer.de/public/systemd-man/locale.conf.html}{/etc/locale.conf}: \hreftt{http://www.freedesktop.org/software/systemd/man/locale.conf.html}%
{/etc/locale.conf}:
конфигурация общесистемной локали. конфигурация общесистемной локали.
\item \item
\hreftt{http://0pointer.de/public/systemd-man/modules-load.d.html}{/etc/modules-load.d/*.conf}: \hreftt{http://www.freedesktop.org/software/systemd/man/modules-load.d.html}%
{/etc/modules-load.d/*.conf}:
каталог\footnote{Прим. перев.: Для описания этого и трех каталог\footnote{Прим. перев.: Для описания этого и трех
последующих каталогов автор пользуется термином <<drop-in последующих каталогов автор пользуется термином <<drop-in
directory>>. Данный термин означает каталог, в который можно directory>>. Данный термин означает каталог, в который можно
@@ -1785,21 +1797,25 @@ LVM, RAID и multipath). Если они вам не~нужны, вы легко
ядра, которые нужно принудительно подгрузить при загрузке ядра, которые нужно принудительно подгрузить при загрузке
(впрочем, необходимость в этом возникает достаточно редко). (впрочем, необходимость в этом возникает достаточно редко).
\item \item
\hreftt{http://0pointer.de/public/systemd-man/sysctl.d.html}{/etc/sysctl.d/*.conf}: \hreftt{http://www.freedesktop.org/software/systemd/man/sysctl.d.html}%
{/etc/sysctl.d/*.conf}:
каталог для задания параметров ядра (+sysctl+). Дополняет каталог для задания параметров ядра (+sysctl+). Дополняет
классический конфигурационный файл +/etc/sysctl.conf+. классический конфигурационный файл +/etc/sysctl.conf+.
\item \item
\hreftt{http://0pointer.de/public/systemd-man/tmpfiles.d.html}{/etc/tmpfiles.d/*.conf}: \hreftt{http://www.freedesktop.org/software/systemd/man/tmpfiles.d.html}%
{/etc/tmpfiles.d/*.conf}:
каталог для управления настройками временных файлов (systemd каталог для управления настройками временных файлов (systemd
обеспечивает создание, очистку и удаление временных файлов и обеспечивает создание, очистку и удаление временных файлов и
каталогов, как во время загрузки, так и во время работы каталогов, как во время загрузки, так и во время работы
системы). системы).
\item \item
\hreftt{http://0pointer.de/public/systemd-man/binfmt.d.html}{/etc/binfmt.d/*.conf}: \hreftt{http://www.freedesktop.org/software/systemd/man/binfmt.d.html}%
{/etc/binfmt.d/*.conf}:
каталог для регистрации дополнительных бинарных форматов каталог для регистрации дополнительных бинарных форматов
(например, форматов Java, Mono, WINE). (например, форматов Java, Mono, WINE).
\item \item
\hreftt{http://0pointer.de/public/systemd-man/os-release.html}{/etc/os-release}: \hreftt{http://www.freedesktop.org/software/systemd/man/os-release.html}%
{/etc/os-release}:
стандарт для файла, обеспечивающего идентификацию дистрибутива и стандарт для файла, обеспечивающего идентификацию дистрибутива и
его версии. Сейчас различные дистрибутивы используют для этого его версии. Сейчас различные дистрибутивы используют для этого
разные файлы (например, +/etc/fedora-release+ в Fedora), и разные файлы (например, +/etc/fedora-release+ в Fedora), и
@@ -1813,7 +1829,8 @@ LVM, RAID и multipath). Если они вам не~нужны, вы легко
сложившуюся ситуацию, мы решили перейти к единому простому сложившуюся ситуацию, мы решили перейти к единому простому
формату представления этой информации. формату представления этой информации.
\item \item
\hreftt{http://0pointer.de/public/systemd-man/machine-id.html}{/etc/machine-id}: \hreftt{http://www.freedesktop.org/software/systemd/man/machine-id.html}%
{/etc/machine-id}:
файл с идентификатором данного компьютера (перекрывает файл с идентификатором данного компьютера (перекрывает
аналогичный идентификатор D-Bus). Гарантируется, что в любой аналогичный идентификатор D-Bus). Гарантируется, что в любой
системе, использующей systemd, этот файл будет существовать и системе, использующей systemd, этот файл будет существовать и
@@ -1822,7 +1839,8 @@ LVM, RAID и multipath). Если они вам не~нужны, вы легко
D-Bus, чтобы упростить решение множества задач, требующих D-Bus, чтобы упростить решение множества задач, требующих
наличия уникального и постоянного идентификатора компьютера. наличия уникального и постоянного идентификатора компьютера.
\item \item
\hreftt{http://0pointer.de/public/systemd-man/machine-info.html}{/etc/machine-info}: \hreftt{http://www.freedesktop.org/software/systemd/man/machine-info.html}%
{/etc/machine-info}:
новый конфигурационный файл, хранящий информации о полном новый конфигурационный файл, хранящий информации о полном
(описательном) имени хоста (например, <<Компьютер Леннарта>>) и (описательном) имени хоста (например, <<Компьютер Леннарта>>) и
значке, которым он будет обозначаться в графических оболочках, значке, которым он будет обозначаться в графических оболочках,
@@ -2094,8 +2112,9 @@ systemd?
быть подгружен автоматически, все равно существует гораздо более быть подгружен автоматически, все равно существует гораздо более
удобные методы указать его принудительную подгрузку~--- удобные методы указать его принудительную подгрузку~---
например, путем создания соответствующего файла в каталоге например, путем создания соответствующего файла в каталоге
\hreftt{http://0pointer.de/public/systemd-man/modules-load.d.html}{/etc/modules-load.d/} \hreftt{http://www.freedesktop.org/software/systemd/man/modules-load.d.html}%
(стандартный метод настройки принудительной подгрузки модулей). {/etc/modules-load.d/} (стандартный метод настройки
принудительной подгрузки модулей).
\item И наконец, хотелось бы отметить, что каталог +/etc+ определен как \item И наконец, хотелось бы отметить, что каталог +/etc+ определен как
место для хранения системных настроек (<<Host-specific system место для хранения системных настроек (<<Host-specific system
configuration>>, согласно FHS). Наличие внутри него подкаталога configuration>>, согласно FHS). Наличие внутри него подкаталога
@@ -2115,9 +2134,10 @@ systemd?
штатно поддерживаются systemd, нет никакого смысла дублировать штатно поддерживаются systemd, нет никакого смысла дублировать
их где-то еще (перечень опций, которые можно задать для любой их где-то еще (перечень опций, которые можно задать для любой
службы, приведен на страницах справки службы, приведен на страницах справки
\href{http://0pointer.de/public/systemd-man/systemd.exec.html}{systemd.exec(5)} \href{http://www.freedesktop.org/software/systemd/man/systemd.exec.html}%
и {systemd.exec(5)} и
\href{http://0pointer.de/public/systemd-man/systemd.service.html}{systemd.service(5)}.) \href{http://www.freedesktop.org/software/systemd/man/systemd.service.html}%
{systemd.service(5)}.)
Если же ваша настройка просто добавляет еще один уровень Если же ваша настройка просто добавляет еще один уровень
отключения запуска службы~--- не~плодите лишние сущности, отключения запуска службы~--- не~плодите лишние сущности,
откажитесь от нее. откажитесь от нее.
@@ -2140,7 +2160,7 @@ systemd?
штатные unit-файлы systemd. Если ваш файл из +sysconfig+ содержит лишь штатные unit-файлы systemd. Если ваш файл из +sysconfig+ содержит лишь
определения переменных, можно воспользоваться опцией определения переменных, можно воспользоваться опцией
+EnvironmentFile=-/etc/sysconfig/foobar+ (подробнее об этой опции см. +EnvironmentFile=-/etc/sysconfig/foobar+ (подробнее об этой опции см.
\href{http://0pointer.de/public/systemd-man/systemd.exec.html}{systemd.exec(5)}), \href{http://www.freedesktop.org/software/systemd/man/systemd.exec.html}{systemd.exec(5)}),
позволяющей прочитать из файла набор переменных окружения, который будет позволяющей прочитать из файла набор переменных окружения, который будет
установлен при запуске службы. Если же для задания настроек вам необходим установлен при запуске службы. Если же для задания настроек вам необходим
полноценный язык программирования~--- ничто не~мешает им воспользоваться. полноценный язык программирования~--- ничто не~мешает им воспользоваться.
@@ -2179,16 +2199,18 @@ systemd?
+/lib/systemd/system+ (а также, возможно, и в других\footnote{Прим. перев.: +/lib/systemd/system+ (а также, возможно, и в других\footnote{Прим. перев.:
Перечень каталогов, в которых выполняется поиск общесистемных юнит-файлов, Перечень каталогов, в которых выполняется поиск общесистемных юнит-файлов,
приведен на странице руководства приведен на странице руководства
\href{http://www.0pointer.de/public/systemd-man/systemd.html}{systemd(1)} \href{http://www.freedesktop.org/software/systemd/man/systemd.html}{systemd(1)}
(раздел <<System unit directories>>). Указанные выше каталоги (раздел <<System unit directories>>). Указанные выше каталоги
+/etc/systemd/systemd+ и +/lib/systemd/system+ соответствуют значениям по +/etc/systemd/systemd+ и +/lib/systemd/system+ соответствуют значениям по
умолчанию для упомянутых там переменных pkg-config +systemdsystemconfdir+ и умолчанию для упомянутых там переменных pkg-config +systemdsystemconfdir+ и
+systemdsystemunitdir+ соответственно.}). Для служб, работающих в нескольких +systemdsystemunitdir+ соответственно. Начиная с systemd версии 198, данный
экземплярах, эта схема становится немного сложнее: перечень, в более точной и развернутой форме, присутствует на странице
\emph{foobar}+@+\emph{quux}+.service+, где \emph{foobar}~--- имя службы, общее \href{http://www.freedesktop.org/software/systemd/man/systemd.unit.html}%
для всех экземпляров, а \emph{quux}~--- идентификатор конкретного экземпляра. {systemd.unit(5)}.}). Для служб, работающих в нескольких экземплярах, эта схема
Например, +serial-gett@ttyS2.service+~--- это служба getty для COM-порта, становится немного сложнее: \emph{foobar}+@+\emph{quux}+.service+, где
запущенная на +ttyS2+. \emph{foobar}~--- имя службы, общее для всех экземпляров, а \emph{quux}~---
идентификатор конкретного экземпляра. Например, +serial-gett@ttyS2.service+~---
это служба getty для COM-порта, запущенная на +ttyS2+.
При необходимости, экземпляры служб можно легко создать динамически. Скажем, вы При необходимости, экземпляры служб можно легко создать динамически. Скажем, вы
можете, безо всяких дополнительных настроек, запустить новый экземпляр getty на можете, безо всяких дополнительных настроек, запустить новый экземпляр getty на
@@ -2324,9 +2346,9 @@ serial-getty@serial-by\x2dpath-pci\x2d0000:00:1d.0\x2dusb\x2d0:1.4:1.1\x2dport0.
(Небольшое замечание: помимо +%i+ и +%I+, существует еще несколько (Небольшое замечание: помимо +%i+ и +%I+, существует еще несколько
спецификаторов, и большинство из них доступно и в обычных файлах конфигурации спецификаторов, и большинство из них доступно и в обычных файлах конфигурации
юнитов, а не~только в шаблонах. Подробности можно посмотреть на юнитов, а не~только в шаблонах. Подробности можно посмотреть на
\href{http://0pointer.de/public/systemd-man/systemd.unit.html}{странице \href{http://www.freedesktop.org/software/systemd/man/systemd.unit.html}%
руководства}, содержащей полный перечень этих спецификаторов с краткими {странице руководства}, содержащей полный перечень этих спецификаторов с
пояснениями.) краткими пояснениями.)
\section{Службы с активацией в стиле inetd} \section{Службы с активацией в стиле inetd}
\label{sec:inetd} \label{sec:inetd}
@@ -2369,7 +2391,8 @@ systemd прежде всего ориентирована на локальны
быть использован службами для обеспечения сокет-активации. В основе этого быть использован службами для обеспечения сокет-активации. В основе этого
\href{http://0pointer.de/blog/projects/socket-activation.html}{простого и \href{http://0pointer.de/blog/projects/socket-activation.html}{простого и
минималистичного} механизма лежит функция минималистичного} механизма лежит функция
\hreftt{http://0pointer.de/public/systemd-man/sd_listen_fds.html}{sd\_listen\_fds()}. \hreftt{http://www.freedesktop.org/software/systemd/man/sd_listen_fds.html}%
{sd\_listen\_fds()}.
Однако, интерфейс, традиционно используемый в inetd, еще проще. Он позволяет Однако, интерфейс, традиционно используемый в inetd, еще проще. Он позволяет
передавать запускаемой службе только один сокет, который формируется из потоков передавать запускаемой службе только один сокет, который формируется из потоков
STDIN и STDOUT запущенного процесса. Поддержка этого механизма также STDIN и STDOUT запущенного процесса. Поддержка этого механизма также
@@ -2506,17 +2529,17 @@ StandardInput=socket
собственно, и включает для данной службы режим совместимости с inetd-активацией. собственно, и включает для данной службы режим совместимости с inetd-активацией.
Опция +StandardInput=+ позволяет указать, куда будет подключен поток STDIN Опция +StandardInput=+ позволяет указать, куда будет подключен поток STDIN
процесса данной службы (подробности см. процесса данной службы (подробности см.
\href{http://0pointer.de/public/systemd-man/systemd.exec.html}{на странице \href{http://www.freedesktop.org/software/systemd/man/systemd.exec.html}%
руководства}). Задав для нее значение +socket+, мы обеспечиваем подключение {на странице руководства}). Задав для нее значение +socket+, мы обеспечиваем
этого потока к сокету соединения, как того и требует механизм inetd-активации. подключение этого потока к сокету соединения, как того и требует механизм
Заметим, что явно указывать опцию +StandardOutput=+ в данном случае inetd-активации. Заметим, что явно указывать опцию +StandardOutput=+ в данном
необязательно~--- она автоматически устанавливается в то же значение, что и случае необязательно~--- она автоматически устанавливается в то же значение, что
+StandardInput+, если явно не~указано что-то другое. Кроме того, можно отметить и +StandardInput+, если явно не~указано что-то другое. Кроме того, можно
наличие <<+-+>> перед именем бинарного файла sshd. Таким образом мы указываем отметить наличие <<+-+>> перед именем бинарного файла sshd. Таким образом мы
systemd игнорировать код выхода процесса sshd. По умолчанию, systemd сохраняет указываем systemd игнорировать код выхода процесса sshd. По умолчанию, systemd
коды выхода для всех экземпляров службы, завершившихся с ошибкой (сбросить эту сохраняет коды выхода для всех экземпляров службы, завершившихся с ошибкой
информацию можно командой +systemctl reset-failed+). SSH (сбросить эту информацию можно командой +systemctl reset-failed+). SSH довольно
довольно часто завершается с ненулевым кодом выхода, и мы разрешаем systemd часто завершается с ненулевым кодом выхода, и мы разрешаем systemd
не~регистрировать подобные <<ошибки>>. не~регистрировать подобные <<ошибки>>.
Служба +sshd@.service+ предназначена для работы в виде независимых экземпляров Служба +sshd@.service+ предназначена для работы в виде независимых экземпляров
@@ -2616,15 +2639,15 @@ Linux подсистема ipset гораздо лучше подходит дл
стороны, systemd тоже предоставляет ряд возможностей, отсутствующих в xinetd, в стороны, systemd тоже предоставляет ряд возможностей, отсутствующих в xinetd, в
частности, индивидуальный контроль над каждым экземпляром службы (см. выше), и частности, индивидуальный контроль над каждым экземпляром службы (см. выше), и
внушительный внушительный
\href{http://0pointer.de/public/systemd-man/systemd.exec.html}{набор настроек} \href{http://www.freedesktop.org/software/systemd/man/systemd.exec.html}{набор
для контроля окружения, в котором запускаются экземпляры. Я надеюсь, что настроек} для контроля окружения, в котором запускаются экземпляры. Я надеюсь,
возможностей systemd должно быть достаточно для решения большинства задач, а в что возможностей systemd должно быть достаточно для решения большинства задач, а
тех редких случаях, когда вам потребуются специфические опции xinetd~--- ничто в тех редких случаях, когда вам потребуются специфические опции xinetd~--- ничто
не~мешает вам запустить его в дополнение к systemd. Таким образом, уже сейчас в не~мешает вам запустить его в дополнение к systemd. Таким образом, уже сейчас в
большинстве случаев xinetd можно выкинуть из числа обязательных системных большинстве случаев xinetd можно выкинуть из числа обязательных системных
компонентов. Можно сказать, что systemd не~просто возвращает функциональность компонентов. Можно сказать, что systemd не~просто возвращает функциональность
классического юниксового inetd, но еще и восстанавливает ее ключевую классического юниксового inetd, но еще и восстанавливает ее ключевую роль в
роль в Linux-системах. Linux-системах.
Теперь, вооруженные этими знаниями, вы можете портировать свои службы с inetd на Теперь, вооруженные этими знаниями, вы можете портировать свои службы с inetd на
systemd. Но, конечно, будет лучше, если этим займутся разработчики из апстрима systemd. Но, конечно, будет лучше, если этим займутся разработчики из апстрима
@@ -2662,8 +2685,9 @@ Linux уже очень давно, но при этом практически
простыми в использовании, чтобы заинтересовать администраторов и апстримных простыми в использовании, чтобы заинтересовать администраторов и апстримных
разработчиков. Вот краткий перечень наиболее интересных разработчиков. Вот краткий перечень наиболее интересных
возможностей\footnote{Прим. перев.: В приведенном здесь списке не~упомянута возможностей\footnote{Прим. перев.: В приведенном здесь списке не~упомянута
встроенная в systemd поддержка фильтров seccomp, так как она была добавлена уже встроенная в systemd поддержка фильтров seccomp (опция +SystemCallFilter=+),
после написания исходной статьи.}: так как она была добавлена уже после написания исходной статьи, в выпуске
systemd 187.}:
\begin{itemize} \begin{itemize}
\item Изолирование служб от сети \item Изолирование служб от сети
\item Предоставление службам независимых каталогов +/tmp+ \item Предоставление службам независимых каталогов +/tmp+
@@ -2674,9 +2698,14 @@ Linux уже очень давно, но при этом практически
\end{itemize} \end{itemize}
Все эти опции описаны в man-страницах systemd, главным образом, в Все эти опции описаны в man-страницах systemd, главным образом, в
\href{http://0pointer.de/public/systemd-man/systemd.exec.html}{systemd.exec(5)}. \href{http://www.freedesktop.org/software/systemd/man/systemd.exec.html}{systemd.exec(5)}%
Если вам потребуются какие-либо уточнения, пожалуйста, обратитесь к этим \footnote{Прим. перев.: Начиная с systemd версии 206, значительная часть
страницам. обсуждаемых здесь настроек вынесена на отдельную страницу
\href{http://www.freedesktop.org/software/systemd/man/systemd.cgroup.html}%
{systemd.cgroup(5)}. Начиная с systemd 207, эта страница переименована в
\href{http://www.freedesktop.org/software/systemd/man/systemd.resource-control.html}%
{systemd.resource-control(5)}.}. Если вам потребуется дополнительная информация,
вы можете обратиться к ним.
Все эти опции доступны на системах с systemd, вне зависимости от использования Все эти опции доступны на системах с systemd, вне зависимости от использования
SELinux или любой другой реализации MAC. SELinux или любой другой реализации MAC.
@@ -3338,8 +3367,8 @@ StartLimitAction=reboot-force
Да, и еще: если у вас возникнет вопрос, имеется ли в вашей системе аппаратный Да, и еще: если у вас возникнет вопрос, имеется ли в вашей системе аппаратный
таймер~--- скорее всего да, если ваш компьютер не~очень старый. Чтобы получить таймер~--- скорее всего да, если ваш компьютер не~очень старый. Чтобы получить
точный ответ, вы можете воспользоваться утилитой точный ответ, вы можете воспользоваться утилитой
\href{http://karelzak.blogspot.de/2012/05/eject1-sulogin1-wdctl1.html}{wdctl}, \hreftt{http://karelzak.blogspot.de/2012/05/eject1-sulogin1-wdctl1.html}{wdctl},
включенной в последний релиз util-linux\footnote{Прим. перев.: Утилита wdctl включенной в последний релиз util-linux\footnote{Прим. перев.: Утилита +wdctl+
присутствует в util-linux, начиная с версии~2.22, которая, на~момент написания присутствует в util-linux, начиная с версии~2.22, которая, на~момент написания
этих строк, еще не~вышла.}. Эта программа выведет всю необходимую этих строк, еще не~вышла.}. Эта программа выведет всю необходимую
информацию о вашем аппаратном сторожевом таймере. информацию о вашем аппаратном сторожевом таймере.
@@ -3499,7 +3528,7 @@ getty\footnote{Отметим, что +systemctl enable+ \emph{для экзем
/etc/systemd/system/getty.target.wants/serial-getty@ttyS2.service ; systemctl /etc/systemd/system/getty.target.wants/serial-getty@ttyS2.service ; systemctl
daemon-reload}.}\footnote{\label{ftn:enableserial}Прим. перев.: На самом деле, daemon-reload}.}\footnote{\label{ftn:enableserial}Прим. перев.: На самом деле,
работать с символьными ссылками придется даже в современных версиях systemd (на работать с символьными ссылками придется даже в современных версиях systemd (на
момент написания этих строк, последней является версия 204), так как момент написания этих строк, последней является версия 206), так как
разработчики забыли включить в файл +serial-getty@.service+ секцию +[Install]+, разработчики забыли включить в файл +serial-getty@.service+ секцию +[Install]+,
в результате чего попытка выполнения +systemctl enable+ для экземпляра в результате чего попытка выполнения +systemctl enable+ для экземпляра
соответствующей службы ведет к закономерной ошибке. Впрочем, исправить это соответствующей службы ведет к закономерной ошибке. Впрочем, исправить это
@@ -3617,7 +3646,7 @@ Journal был включен в Fedora начиная с F17. В Fedora~18 jour
\item Все отметки времени сформированы с учетом вашего часового пояса. \item Все отметки времени сформированы с учетом вашего часового пояса.
\item Для навигации по тексту используется просмотрщик (pager), по \item Для навигации по тексту используется просмотрщик (pager), по
умолчанию +less+\footnote{Прим. перев.: В инструментах systemd, умолчанию +less+\footnote{Прим. перев.: В инструментах systemd,
включая journalctl, просмотрщик включается только при прямом включая +journalctl+, просмотрщик включается только при прямом
выводе на экран, и отключается при перенаправлении вывода в файл выводе на экран, и отключается при перенаправлении вывода в файл
или передаче его по каналу (shell pipe).}. или передаче его по каналу (shell pipe).}.
\item Выводятся \emph{все} доступные данные, включая информацию из \item Выводятся \emph{все} доступные данные, включая информацию из
@@ -3680,7 +3709,10 @@ $ journalctl -f
При вызове +journalctl+ без параметров, она выводит все сообщения, начиная с При вызове +journalctl+ без параметров, она выводит все сообщения, начиная с
самого первого из сохраненных. Разумеется, это огромный объем информации. На самого первого из сохраненных. Разумеется, это огромный объем информации. На
практике иногда бывает достаточно ограничиться сообщениями, сгенерированными с практике иногда бывает достаточно ограничиться сообщениями, сгенерированными с
момента последней загрузки системы: момента последней загрузки системы\footnote{Прим. перев.: Начиная с systemd
версии 206, синтаксис опции <<+-b+>> был расширен: теперь она позволяет
просматривать логи не~только за текущую, но и за предыдущие загрузки, например,
<<+-b -1+>>~--- прошлая загрузка, <<+-b -2+>>~--- позапрошлая и т.д.}:
\begin{Verbatim} \begin{Verbatim}
$ journalctl -b $ journalctl -b
\end{Verbatim} \end{Verbatim}
@@ -3960,16 +3992,16 @@ systemd предоставляет ряд высокоуровневых нас
несколькими рабочими процессами получит такую же долю процессорного времени, несколькими рабочими процессами получит такую же долю процессорного времени,
как и Apache, даже если тот запустил 1000 CGI-процессов. Разумеется, такое как и Apache, даже если тот запустил 1000 CGI-процессов. Разумеется, такое
поведение при необходимости можно легко отключить~--- см. опцию поведение при необходимости можно легко отключить~--- см. опцию
\hreftt{http://0pointer.de/public/systemd-man/systemd.conf.html}{DefaultControllers=} \hreftt{http://www.freedesktop.org/software/systemd/man/systemd-system.conf.html}%
в файле +/etc/systemd/system.conf+. {DefaultControllers=} в файле +/etc/systemd/system.conf+.
Если \emph{равномерное} распределение процессорного времени между службами вас Если \emph{равномерное} распределение процессорного времени между службами вас
не~устраивает, и вы хотите выделить определенным службам больше или меньше не~устраивает, и вы хотите выделить определенным службам больше или меньше
времени~--- используйте опцию времени~--- используйте опцию
\hreftt{http://0pointer.de/public/systemd-man/systemd.exec.html}{CPUShares=} в \hreftt{http://www.freedesktop.org/software/systemd/man/systemd.resource-control.html}%
конфигурационном файле службы. По умолчанию это значение равно 1024. Увеличивая {CPUShares=} в конфигурационном файле службы. По умолчанию это значение равно
это число, вы даете службе больше процессорного времени, уменьшая~--- 1024. Увеличивая это число, вы даете службе больше процессорного времени,
соответственно, меньше. уменьшая~--- соответственно, меньше.
Рассмотрим небольшой практический пример. Допустим, вам нужно увеличить Рассмотрим небольшой практический пример. Допустим, вам нужно увеличить
для службы Apache относительную долю потребления процессора до 1500. Для этого для службы Apache относительную долю потребления процессора до 1500. Для этого
@@ -3999,19 +4031,19 @@ CPUShares=1500
основного файла. Все вышесказанное относится и к другим примерам из этого основного файла. Все вышесказанное относится и к другим примерам из этого
раздела.}. Сохраняем файл, приказываем systemd перечитать конфигурацию, и раздела.}. Сохраняем файл, приказываем systemd перечитать конфигурацию, и
перезапускаем Apache, чтобы настройки вступили в силу\footnote{Прим. перев.: перезапускаем Apache, чтобы настройки вступили в силу\footnote{Прим. перев.:
systemd версий до 197 включительно, не~имел штатного механизма для изменения systemd версий до 197 (включительно) не~имел штатного механизма для изменения
параметров контрольных групп <<на лету>> (без перезапуска службы). Но вы можете параметров контрольных групп <<на лету>> (без перезапуска службы). Если у вас
узнать контрольную группу службы командой наподобие все же возникнет такая необходимость, вы можете узнать контрольную группу службы
+systemctl show -p ControlGroup avahi-daemon.service+, и выполнить настройки командой +systemctl show -p ControlGroup имя_службы.service+, и выполнить
любым удобным для вас способом, например, через запись значений в псевдофайлы требуемые настройки напрямую через запись значений в псевдофайлы cgroupfs
cgroupfs (разумеется, при следующем запуске службы к ней будут применены (разумеется, при следующем запуске службы к ней будут применены параметры,
параметры, указанные в конфигурационном файле). В версиях systemd со 198 по 204, указанные в конфигурационном файле). В версиях systemd со 198 по 204,
в программе +systemctl+ поддерживались команды +set-cgroup-attr+, программа +systemctl+ поддерживала команды +set-cgroup-attr+,
+unset-cgroup-attr+ и +get-cgroup-attr+, позволявшие манипулировать практически +unset-cgroup-attr+ и +get-cgroup-attr+, позволявшие манипулировать настройками
всеми параметрами контрольных групп. Начиная с systemd 205, они были заменены контрольных групп. Начиная с systemd 205, они были заменены командой
командой +set-property+. Установленных таким образом параметры сохраняются во +set-property+, работающей с параметрами конфигурации юнитов. Установленные
вспомогательных конфигурационных файлах в +.d+-каталогах (см. примечание через +systemctl+ настройки сохраняются во вспомогательных конфигурационных
выше).}: файлах, которые размещаются в +.d+-каталогах (см. примечание выше).}:
\begin{Verbatim} \begin{Verbatim}
systemctl daemon-reload systemctl daemon-reload
systemctl restart httpd.service systemctl restart httpd.service
@@ -4055,8 +4087,12 @@ systemd создавать соответствующие группы, доба
Второй из этих пределов превышать нельзя, независимо от наличия свободной Второй из этих пределов превышать нельзя, независимо от наличия свободной
памяти. Подробнее см. раздел <<Soft limits>> в памяти. Подробнее см. раздел <<Soft limits>> в
\href{http://www.kernel.org/doc/Documentation/cgroups/memory.txt}{файле \href{http://www.kernel.org/doc/Documentation/cgroups/memory.txt}{файле
документации}.}. При этом поддерживаются суффиксы K, M, G и T, обозначающие документации}. Отметим, что из-за планируемого прекращения поддержки параметра
соответственно, килобайт, мегабайт, гигабайт и терабайт (по основанию 1024). +memory.soft_limit_in_bytes+ на уровне ядра, опция +MemorySoftLimit=+ была
\href{http://cgit.freedesktop.org/systemd/systemd/commit/?id=ddca82aca08712a302cfabdbe59f73ee9ed3f73a}%
{удалена} из systemd начиная с версии 207.}. При этом поддерживаются суффиксы K,
M, G и T, обозначающие соответственно, килобайт, мегабайт, гигабайт и терабайт
(по основанию 1024).
\begin{Verbatim} \begin{Verbatim}
.include /usr/lib/systemd/system/httpd.service .include /usr/lib/systemd/system/httpd.service
@@ -4139,12 +4175,21 @@ BlockIOReadBandwith=/var/log 5M
недостаточно~--- допустим, вам нужно задать низкоуровневую настройку cgroups, недостаточно~--- допустим, вам нужно задать низкоуровневую настройку cgroups,
для которой мы (пока) не~добавили высокоуровневого аналога. На этот случай мы для которой мы (пока) не~добавили высокоуровневого аналога. На этот случай мы
предусмотрели универсальных механизм задания таких опций в конфигурационных предусмотрели универсальных механизм задания таких опций в конфигурационных
файлах юнитов\footnote{Прим. перев.: Описываемый механизм управления файлах юнитов\footnote{Прим. перев.: Описываемый здесь механизм управления
низкоуровневыми настройками контрольных групп (+ControlGroupAttribute=+) низкоуровневыми настройками контрольных групп (+ControlGroupAttribute=+)
присутствовал в systemd до 204 версии включительно. Начиная с версии 205, он был присутствовал в systemd до 204 версии включительно. Начиная с версии 205, он был
удален по требованию разработчиков cgroups. Также были удалены возможности удален по требованию разработчиков cgroups. Также были удалены возможности
напрямую задавать для юнита контрольную группу (+ControlGroup=+) и устанавливать напрямую задавать для юнита контрольную группу (+ControlGroup=+) и устанавливать
права доступа для управления группами (+ControlGroupModify=+).}. Рассмотрим, права доступа для управления группами (+ControlGroupModify=+). Взамен,
разработчики systemd планируют значительно расширить поддержку высокоуровневых
настроек для параметров cgroups~--- сразу после того, как разработчики
cgroups определятся, какие именно параметры они будут поддерживать. Наличие
некоторого хаоса в этой области обусловлено происходящей сейчас полной
переработкой реализации контрольных групп на уровне ядра и механизмов работы с
ними из пространства пользователя. Техническая сторона данного вопроса раскрыта
в статье
\href{http://www.freedesktop.org/wiki/Software/systemd/ControlGroupInterface}%
{The New Control Group Interfaces} (пока не~переведена).}. Рассмотрим,
например, задание для службы параметра \emph{swappiness} (относительная например, задание для службы параметра \emph{swappiness} (относительная
интенсивность использования подкачки для процессов службы). В systemd нет интенсивность использования подкачки для процессов службы). В systemd нет
высокоуровневой настройки для этого значения. Однако вы можете задать его, высокоуровневой настройки для этого значения. Однако вы можете задать его,
@@ -4176,8 +4221,8 @@ ControlGroupAttribute=memory.swappiness 70
Для углубленного изучения темы, затронутой в этой статье, вы можете обратиться к Для углубленного изучения темы, затронутой в этой статье, вы можете обратиться к
документации по документации по
\href{http://0pointer.de/public/systemd-man/systemd.exec.html}{поддерживаемым \href{http://www.freedesktop.org/software/systemd/man/systemd.resource-control.html}%
настройкам юнитов}, а также по контроллерам {поддерживаемым настройкам юнитов}, а также по контроллерам
\href{http://www.kernel.org/doc/Documentation/scheduler/sched-design-CFS.txt}{cpu}, \href{http://www.kernel.org/doc/Documentation/scheduler/sched-design-CFS.txt}{cpu},
\href{http://www.kernel.org/doc/Documentation/cgroups/memory.txt}{memory} и \href{http://www.kernel.org/doc/Documentation/cgroups/memory.txt}{memory} и
\href{http://www.kernel.org/doc/Documentation/cgroups/blkio-controller.txt}{blkio}. \href{http://www.kernel.org/doc/Documentation/cgroups/blkio-controller.txt}{blkio}.
@@ -4429,8 +4474,12 @@ systemd 197 (и, соответственно, с Fedora~19), мы добави
в systemd простейшим контейнерным менеджером~--- в systemd простейшим контейнерным менеджером~---
\hyperref[sec:chroots]{systemd-nspawn}. Мы надеемся, что соответствующая \hyperref[sec:chroots]{systemd-nspawn}. Мы надеемся, что соответствующая
возможность вскоре появится и в возможность вскоре появится и в
\href{http://libvirt.org/drvlxc.html}{libvirt-lxc}. А пока, за отсутствие \href{http://libvirt.org/drvlxc.html}{libvirt-lxc}\footnote{Прим. перев.:
альтернатив, рассмотрим использование этого механизма на примере systemd-nspawn. \href{https://www.redhat.com/archives/libvir-list/2013-July/msg00825.html}{Патчи},
реализующие эту возможность, были подготовлены и приняты разработчиками libvirt
во второй декаде июля 2013 г., и входят в libvirt начиная с версии~1.1.1.}. А
пока, за отсутствием альтернатив, рассмотрим использование этого механизма на
примере systemd-nspawn.
Начнем с установки файлов ОС контейнера в выбранный каталог. Детальное Начнем с установки файлов ОС контейнера в выбранный каталог. Детальное
рассмотрение этого вопроса выходит далеко за рамки нашего обсуждения, и рассмотрение этого вопроса выходит далеко за рамки нашего обсуждения, и
@@ -4476,12 +4525,13 @@ KillMode=process
перев.: Ручной запуск на хосте соответствующей команды +systemd-nspawn -b+ во перев.: Ручной запуск на хосте соответствующей команды +systemd-nspawn -b+ во
время работы такой службы просто создаст \emph{еще один контейнер}. Хотя время работы такой службы просто создаст \emph{еще один контейнер}. Хотя
корневой каталог у них один и тот же, пространства имен (например, списки корневой каталог у них один и тот же, пространства имен (например, списки
процессов) у каждого будут свои. Впрочем, данная задача может быть решена процессов) у каждого будут свои. Подключиться к работающему контейнеру можно при
утилитой +nsenter+, которая должна войти в следующий релиз util-linux помощи утилиты +nsenter+, которая включена в состав util-linux начиная с версии
(предположительно, 2.23).}. Чтобы исправить это упущение, настроим на контейнере 2.23 (на момент написания исходной статьи этой утилиты еще не~существовало).}.
SSH-сервер, причем таким образом, что подключение к его порту активировало весь Чтобы исправить это упущение, настроим на контейнере SSH-сервер, причем таким
контейнер, а затем активировало сервер, работающий внутри. Начнем с того, что образом, что подключение к его порту активировало весь контейнер, а затем
прикажем хосту слушать порт SSH для контейнера. Для этого создадим на хосте файл активировало сервер, работающий внутри. Начнем с того, что прикажем хосту
слушать порт SSH для контейнера. Для этого создадим на хосте файл
+/etc/systemd/system/mycontainer.socket+: +/etc/systemd/system/mycontainer.socket+:
\begin{Verbatim} \begin{Verbatim}
[Unit] [Unit]
@@ -4497,13 +4547,12 @@ ListenStream=23
списки процессов и точек монтирования, но не~сетевые стеки, поэтому порты хоста списки процессов и точек монтирования, но не~сетевые стеки, поэтому порты хоста
и гостей не~должны конфликтовать\footnote{Прим. перев.: Ограниченные возможности и гостей не~должны конфликтовать\footnote{Прим. перев.: Ограниченные возможности
виртуализации сети в +systemd-nspawn+ значительно затрудняют использование виртуализации сети в +systemd-nspawn+ значительно затрудняют использование
описываемой технологии. Ее практическое применение будет иметь смысл после описываемой технологии. Ее практическое применение будет иметь смысл
реализации соответствующей поддержки в lxc-libvirt, либо расширения возможностей либо в lxc-libvirt, либо после расширения возможностей nspawn. Впрочем, опытные
nspawn. Впрочем, опытные администраторы легко могут найти обходные пути, администраторы легко могут найти обходные пути, например: присваивание хосту
например: присваивание хосту дополнительного IP-адреса (безо всякой дополнительного IP-адреса (безо всякой виртуализации, командой +ip addr add+) и
виртуализации, командой +ip addr add+) и привязка слушающих сокетов к конкретным привязка слушающих сокетов к конкретным адресам (в параметре +ListenStream=+
адресам (в параметре +ListenStream=+ сокет-файлов и/или в директиве сокет-файлов и/или в директиве +ListenAddress+ файла +sshd_config+ хоста).}.
+ListenAddress+ файла +sshd_config+ хоста).}.
Пока что systemd, работающий внутри контейнера, не~знает, что делать с тем Пока что systemd, работающий внутри контейнера, не~знает, что делать с тем
сокетами, которые ему передает systemd хоста. Если вы попробуете подключиться к сокетами, которые ему передает systemd хоста. Если вы попробуете подключиться к
@@ -4521,7 +4570,7 @@ nspawn. Впрочем, опытные администраторы легко
+StandardInput=socket+, которые не~задействованы на хосте. Это обусловлено тем +StandardInput=socket+, которые не~задействованы на хосте. Это обусловлено тем
фактом, что внутри контейнера сокет-активация производится в стиле inetd (служба фактом, что внутри контейнера сокет-активация производится в стиле inetd (служба
получает только один сокет, причем замкнутый на ее потоки STDIN и STDOUT), в то получает только один сокет, причем замкнутый на ее потоки STDIN и STDOUT), в то
время как на стороне хоста используется родной стиль активации systemd, при время как на стороне хоста используется штатный стиль активации systemd, при
котором запущенному процессу (в данном случае +systemd-nspawn+) просто котором запущенному процессу (в данном случае +systemd-nspawn+) просто
передаются открытые файловые дескрипторы (+fd+) всех сокетов. Одно из достоинств передаются открытые файловые дескрипторы (+fd+) всех сокетов. Одно из достоинств
такого подхода~--- возможность передавать сразу несколько сокетов, что позволяет такого подхода~--- возможность передавать сразу несколько сокетов, что позволяет
@@ -4573,8 +4622,8 @@ systemd начнет прослушивать TCP-порт 23. При подкл
сокеты, для которых соответствующих юнитов не~найдется, будут сокеты, для которых соответствующих юнитов не~найдется, будут
закрыты\footnote{Прим. перев.: Стоит особо отметить, что описанная технология закрыты\footnote{Прим. перев.: Стоит особо отметить, что описанная технология
работает только для служб, поддерживающих сокет-активацию в режимах inetd (все работает только для служб, поддерживающих сокет-активацию в режимах inetd (все
классические inetd-службы, кроме встроенных) или systemd (зависят от библиотеки классические inetd-службы, кроме встроенных) или systemd (обычно зависят от
+libsystemd-daemon.so+, либо содержат в исходниках заголовочный файл библиотеки +libsystemd-daemon.so+, либо содержат в исходниках заголовочный файл
+sd-daemon.h+). Службы, которые сами открывают себе слушающий сокет и +sd-daemon.h+). Службы, которые сами открывают себе слушающий сокет и
не~содержат кода для приема уже открытого сокета, так активировать нельзя.}, а не~содержат кода для приема уже открытого сокета, так активировать нельзя.}, а
те сокеты, которые будут настроены для прослушивания внутри контейнера, но те сокеты, которые будут настроены для прослушивания внутри контейнера, но
@@ -4728,7 +4777,7 @@ systemd 198, необязательно копировать файл целик
нужно поместить соответствующую символьную ссылку в каталог нужно поместить соответствующую символьную ссылку в каталог
+getty.target.wants/+\footnote{Прим. перев.: Приведенная в оригинале команда +getty.target.wants/+\footnote{Прим. перев.: Приведенная в оригинале команда
+systemctl enable serial-getty@ttyS2.service+ работать не~будет (по крайней +systemctl enable serial-getty@ttyS2.service+ работать не~будет (по крайней
мере, в версиях до 204 включительно). Подробнее мере, в версиях до 206 включительно). Подробнее
см.~примечание~\ref{ftn:enableserial}.}: см.~примечание~\ref{ftn:enableserial}.}:
\begin{Verbatim} \begin{Verbatim}
# ln -s /usr/lib/systemd/system/serial-getty@.service \ # ln -s /usr/lib/systemd/system/serial-getty@.service \
@@ -5222,7 +5271,8 @@ dmesg > dmesg.txt
systemd.log_level=debug systemd.log_target=kmsg log_buf_len=1M systemd.log_level=debug systemd.log_target=kmsg log_buf_len=1M
\end{Verbatim} \end{Verbatim}
\item Файл +systemd-dump.txt+, полученный в результате выполнения \item Файл +systemd-dump.txt+, полученный в результате выполнения
команды команды\footnote{Прим. перев.: Начиная с systemd версии 207,
вместо +systemctl dump+ нужно вызывать +systemd-analyze dump+.}
\begin{Verbatim} \begin{Verbatim}
systemctl dump > systemd-dump.txt systemctl dump > systemd-dump.txt
\end{Verbatim} \end{Verbatim}
@@ -5371,7 +5421,7 @@ API для скриптов. Тем не~менее, существует ряд
\section{Предсказуемые имена сетевых интерфейсов\sfnote{Перевод статьи \section{Предсказуемые имена сетевых интерфейсов\sfnote{Перевод статьи
<<\href{http://www.freedesktop.org/wiki/Software/systemd/PredictableNetworkInterfaceNames}% <<\href{http://www.freedesktop.org/wiki/Software/systemd/PredictableNetworkInterfaceNames}%
{Predictable Network Interface Names}>> с официального сайта проекта, по {Predictable Network Interface Names}>> с официального сайта проекта, по
состоянию на 2013-05-22 08:55:30 (коммит dc0a2).}} состоянию на 2013-09-10 01:52:06 (коммит c0524).}}
Начиная с версии 197, systemd/udev присваивает сетевым интерфейсам (Ethernet, Начиная с версии 197, systemd/udev присваивает сетевым интерфейсам (Ethernet,
WLAN, WWAN\footnote{Прим. перев.: WWAN (Wireless Wide Area Network)~--- WLAN, WWAN\footnote{Прим. перев.: WWAN (Wireless Wide Area Network)~---
@@ -5475,7 +5525,12 @@ systemd/udev\footnote{Прим. перев.: См. коммит
\item Имена интерфейсов остаются неизменными при добавлении или \item Имена интерфейсов остаются неизменными при добавлении или
удалении устройств. удалении устройств.
\item Имена интерфейсов остаются неизменными при обновлении/изменении \item Имена интерфейсов остаются неизменными при обновлении/изменении
ядра и драйверов. ядра и драйверов\footnote{Прим. перев.: На самом деле, не~все
так просто. Если, в результате обновлении ядра/драйверов, в них
появится ранее отсутствовавшая поддержка вашей прошивки,
не~исключена вероятность, что имена некоторых интерфейсов
перейдут с третьей схемы на первую или вторую. Будьте готовы к
такому развитию событий.}.
\item Имена интерфейсов остаются неизменными при замене сломанных \item Имена интерфейсов остаются неизменными при замене сломанных
сетевых карт новыми. сетевых карт новыми.
\item Имена формируются автоматически, безо всякого вмешательства \item Имена формируются автоматически, безо всякого вмешательства
@@ -5529,7 +5584,8 @@ cp /usr/lib/udev/rules.d/80-net-name-slot.rules /etc/udev/rules.d/80-net-name-sl
Кроме того, начиная с systemd версии 199, поддерживается параметр загрузки Кроме того, начиная с systemd версии 199, поддерживается параметр загрузки
+net.ifnames=0+, позволяющий отключить механизм предсказуемых имен (указание его +net.ifnames=0+, позволяющий отключить механизм предсказуемых имен (указание его
в конфигурации загрузчика эквивалентно первому из вышеперечисленных вариантов). в файле конфигурации загрузчика эквивалентно первому из вышеперечисленных
вариантов).
\subsection{Как именно работает новая схема?} \subsection{Как именно работает новая схема?}