diff --git a/s4a.tex b/s4a.tex index 24f6700..91d51ee 100644 --- a/s4a.tex +++ b/s4a.tex @@ -2702,7 +2702,7 @@ systemd 187.}: \footnote{Прим. перев.: Начиная с systemd версии 206, значительная часть обсуждаемых здесь настроек вынесена на отдельную страницу \href{http://www.freedesktop.org/software/systemd/man/systemd.cgroup.html}% -{systemd.cgroup(5)}. Начиная с systemd 207, эта страница переименована в +{systemd.cgroup(5)}. Начиная с systemd 208, эта страница переименована в \href{http://www.freedesktop.org/software/systemd/man/systemd.resource-control.html}% {systemd.resource-control(5)}.}. Если вам потребуется дополнительная информация, вы можете обратиться к ним. @@ -2797,7 +2797,14 @@ PrivateTmp=yes присутствуют: сокеты размещаются в защищенном подкаталоге, который создается на ранних стадиях загрузки). Разумеется, для служб, использующих +/tmp+ в целях коммуникации, включение опции +PrivateTmp=yes+ недопустимо. К счастью, подобных -служб сейчас уже не~так уж и много. +служб сейчас уже не~так уж и много\footnote{Прим. перев.: Начиная с systemd 209, +поддерживается опция +JoinsNamespaceOf=+ (секция +[Unit]+), позволяющая +поместить два и более юнитов в одну <<песочницу>> (пространство имен), в +результате чего такие юниты смогут взаимодействовать между собой, как через +сетевой интерфейс обратной петли, так и через файлы в каталоге +/tmp+, +при этом оставаясь изолированными от остальной системы. Подробности можно +уточнить на странице руководства +\href{http://www.freedesktop.org/software/systemd/man/systemd.unit.html}{systemd.unit(5)}.}. \end{caveat} Эта опция использует технологию пространств имен файловых систем (filesystem @@ -3527,14 +3534,16 @@ getty\footnote{Отметим, что +systemctl enable+ \emph{для экзем \texttt{ln -s /usr/lib/systemd/system/serial-getty@.service /etc/systemd/system/getty.target.wants/serial-getty@ttyS2.service ; systemctl daemon-reload}.}\footnote{\label{ftn:enableserial}Прим. перев.: На самом деле, -работать с символьными ссылками придется даже в современных версиях systemd (на -момент написания этих строк, последней является версия 206), так как -разработчики забыли включить в файл +serial-getty@.service+ секцию +[Install]+, -в результате чего попытка выполнения +systemctl enable+ для экземпляра -соответствующей службы ведет к закономерной ошибке. Впрочем, исправить это -несложно: достаточно скопировать данный файл в +/etc/systemd/system/+, после -чего дописать в него секцию +[Install]+ с параметром +WantedBy=getty.target+, а -затем выполнить +systemctl daemon-reload+.}: +работать с символьными ссылками пришлось бы даже в более свежих версиях +systemd (до 209 включительно), так как в файле +serial-getty@.service+ +отсутствовала секция +[Install]+, в результате чего попытка выполнения ++systemctl enable+ для экземпляра соответствующей службы приводила к +закономерной ошибке. Данная проблема была устранена только в systemd 210. +В~случае использования более старых версий, исправить ее можно и самостоятельно: +достаточно скопировать указанный файл из +/usr/lib/systemd/system/+ в ++/etc/systemd/system/+, после чего дописать в него секцию +[Install]+, +содержащую параметр +WantedBy=getty.target+, и затем выполнить ++systemctl daemon-reload+.}: \begin{Verbatim} # systemctl enable serial-getty@ttyS2.service # systemctl start serial-getty@ttyS2.service @@ -3576,8 +3585,9 @@ daemon-reload}.}\footnote{\label{ftn:enableserial}Прим. перев.: На с а также сообщения, которые процессы служб выводят на STDOUT и STDERR. Полученная информация индексируется и предоставляется пользователю по запросу. Journal может работать одновременно с традиционными демоном syslog (например, rsyslog -или syslog-ng), либо полностью его заменять. Более подробно см. в -\href{http://0pointer.de/blog/projects/the-journal.html}{первом анонсе}. +или syslog-ng), либо полностью его заменять. За подробностями стоит +обратиться к \href{http://0pointer.de/blog/projects/the-journal.html}{первому +анонсу}. Journal был включен в Fedora начиная с F17. В Fedora~18 journal вырос в мощный и удобный механизм работы с системным журналом. Однако, и в~F17, и в~F18 journal @@ -4090,9 +4100,9 @@ systemd создавать соответствующие группы, доба документации}. Отметим, что из-за планируемого прекращения поддержки параметра +memory.soft_limit_in_bytes+ на уровне ядра, опция +MemorySoftLimit=+ была \href{http://cgit.freedesktop.org/systemd/systemd/commit/?id=ddca82aca08712a302cfabdbe59f73ee9ed3f73a}% -{удалена} из systemd начиная с версии 207.}. При этом поддерживаются суффиксы K, -M, G и T, обозначающие соответственно, килобайт, мегабайт, гигабайт и терабайт -(по основанию 1024). +{удалена} из systemd, начиная с версии 208.}. При этом поддерживаются суффиксы +K, M, G и T, обозначающие соответственно, килобайт, мегабайт, гигабайт и +терабайт (по основанию 1024). \begin{Verbatim} .include /usr/lib/systemd/system/httpd.service @@ -4416,7 +4426,11 @@ $ gdbus call --system --dest org.freedesktop.systemd1 --object-path /org/freedes те, которые пока не~поддерживают, ее \href{http://0pointer.de/blog/projects/socket-activation.html}{не~так уж} и \href{http://0pointer.de/blog/projects/socket-activation2.html}{сложно} -добавить). Реализованный в systemd механизм управления +добавить\footnote{Прим. перев.: Начиная с версии 209, в состав systemd входит +утилита +\hreftt{http://www.freedesktop.org/software/systemd/man/systemd-socket-proxyd.html}% +{systemd-socket-proxyd}, позволяющая использовать сокет-активацию даже для +служб, которые ее не~поддерживают.}). Реализованный в systemd механизм управления \hyperref[sec:instances]{экземплярами служб} позволяет подготовить универсальные шаблоны конфигурации служб, и в соответствии с ними для каждого сайта будет запускаться свой экземпляр службы. Кроме того, не~стоит забывать, @@ -4545,14 +4559,22 @@ ListenStream=23 слушать 23-й TCP-порт хоста. В примере выбран именной 23-й, потому что 22-й скорее всего окажется занят SSH-сервером самого хоста. nspawn виртуализует списки процессов и точек монтирования, но не~сетевые стеки, поэтому порты хоста -и гостей не~должны конфликтовать\footnote{Прим. перев.: Ограниченные возможности -виртуализации сети в +systemd-nspawn+ значительно затрудняют использование -описываемой технологии. Ее практическое применение будет иметь смысл -либо в lxc-libvirt, либо после расширения возможностей nspawn. Впрочем, опытные -администраторы легко могут найти обходные пути, например: присваивание хосту -дополнительного IP-адреса (безо всякой виртуализации, командой +ip addr add+) и -привязка слушающих сокетов к конкретным адресам (в параметре +ListenStream=+ -сокет-файлов и/или в директиве +ListenAddress+ файла +sshd_config+ хоста).}. +и гостей не~должны конфликтовать\footnote{Прим. перев.: До выхода 209 версии +systemd, возможности по виртуализации сети в +systemd-nspawn+ были весьма +ограниченными (поддерживалась только полная изоляция сети от хоста), что весьма +затрудняло использование описываемой технологии. Впрочем, опытные администраторы +легко могли найти обходные пути, например: присваивание хосту дополнительного +IP-адреса (безо всякой виртуализации, командой +ip addr add+) и привязка +слушающих сокетов к конкретным адресам (в параметре +ListenStream=+ сокет-файлов +и/или в директиве +ListenAddress+ файла +sshd_config+ хоста). Начиная с systemd +версии 209, +systemd-nspawn+ предоставляет довольно широкие возможности по +виртуализации сети: проброс сетевого интерфейса хоста в контейнер +(+--network-interface=+), а также создание в контейнере виртуального сетевого +интерфейса (+--network-veth+), связывающего его с хостом. Такой виртуальный +интерфейс при необходимости может быть объединен в мост с интерфейсами хоста +(+--network-bridge=+), что обеспечит доступ из контейнера к соответствующим +сегментам сети. Подробности см. на~странице руководства +\href{http://www.freedesktop.org/software/systemd/man/systemd-nspawn.html}{systemd-nspawn(1)}.}. Пока что systemd, работающий внутри контейнера, не~знает, что делать с тем сокетами, которые ему передает systemd хоста. Если вы попробуете подключиться к @@ -4776,9 +4798,8 @@ systemd 198, необязательно копировать файл целик Чтобы обеспечить автоматически запуск getty на этом порту при каждой загрузке, нужно поместить соответствующую символьную ссылку в каталог +getty.target.wants/+\footnote{Прим. перев.: Приведенная в оригинале команда -+systemctl enable serial-getty@ttyS2.service+ работать не~будет (по крайней -мере, в версиях до 206 включительно). Подробнее -см.~примечание~\ref{ftn:enableserial}.}: ++systemctl enable serial-getty@ttyS2.service+ в systemd версии 209 и ниже +работать не~будет. Подробнее см.~примечание~\ref{ftn:enableserial}.}: \begin{Verbatim} # ln -s /usr/lib/systemd/system/serial-getty@.service \ > /etc/systemd/system/getty.target.wants/serial-getty@ttyS2.service @@ -4953,8 +4974,8 @@ $ systemd --test --system --unit=foobar.target \section{Диагностика неполадок\sfnote{Перевод статьи <<\href{http://freedesktop.org/wiki/Software/systemd/Debugging}{Debugging -systemd Problems}>> с официального сайта проекта, по состоянию на 2013-05-26 -08:34:30 (коммит 10ae3).}} +systemd Problems}>> с официального сайта проекта, по состоянию на 2013-12-20 +10:44:01 (коммит abb5a).}} \subsection{Диагностика проблем с загрузкой} @@ -5086,7 +5107,7 @@ systemctl enable debug-shell.service \begin{Verbatim} cd $ПУТЬ_К_ВАШЕМУ_КОРНЮ/etc/systemd/system mkdir -p sysinit.target.wants -ln -s /lib/systemd/system/debug-shell.service sysinit.target.wants/ +ln -s /usr/lib/systemd/system/debug-shell.service sysinit.target.wants/ \end{Verbatim} Отладочная оболочка будет запущена с правами +root+ на консоли +tty9+ @@ -5165,8 +5186,8 @@ sync && poweroff -f systemd.log_level=debug systemd.log_target=kmsg log_buf_len=1M enforcing=0 \end{Verbatim} - \item Создайте файл +/lib/systemd/system-shutdown/debug.sh+, добавьте - ему право на запуск и запишите в него следующие строки: + \item Создайте файл +/usr/lib/systemd/system-shutdown/debug.sh+, + добавьте ему право на запуск и запишите в него следующие строки: \begin{Verbatim} #!/bin/sh mount -o remount,rw / @@ -5285,7 +5306,7 @@ systemctl dump > systemd-dump.txt \section{Совместимость с SysV\sfnote{Перевод статьи <<\href{http://www.freedesktop.org/wiki/Software/systemd/Incompatibilities}% {Compatibility with SysV}>> с официального сайта проекта, по -состоянию на 2013-05-18 08:20:25 (коммит fa003).}} +состоянию на 2013-10-06 21:37:19 (коммит 4db1c).}} systemd обеспечивает высокий уровень совместимости с поведением классической системы инициализации SysV init, реализованной во многих дистрибутивах. Это @@ -5421,7 +5442,7 @@ API для скриптов. Тем не~менее, существует ряд \section{Предсказуемые имена сетевых интерфейсов\sfnote{Перевод статьи <<\href{http://www.freedesktop.org/wiki/Software/systemd/PredictableNetworkInterfaceNames}% {Predictable Network Interface Names}>> с официального сайта проекта, по -состоянию на 2013-09-10 01:52:06 (коммит c0524).}} +состоянию на 2014-02-21 15:36:45 (коммит 5613f).}} Начиная с версии 197, systemd/udev присваивает сетевым интерфейсам (Ethernet, WLAN, WWAN\footnote{Прим. перев.: WWAN (Wireless Wide Area Network)~--- @@ -5562,40 +5583,65 @@ systemd/udev\footnote{Прим. перев.: См. коммит \begin{enumerate} \item Вы можете полностью отключить новую схему, вернувшись к классическим непредсказуемым именам. Для этого достаточно - заблокировать (замаскировать) соответствующий файл правил udev: + заблокировать (замаскировать) файл правил udev, отвечающий за + именование интерфейсов: \begin{Verbatim} -ln -s /dev/null /etc/udev/rules.d/80-net-name-slot.rules +ln -s /dev/null /etc/udev/rules.d/80-net-setup-link.rules \end{Verbatim} + (Заметим, что в версиях systemd со 197 по 208 соответствующий + файл назывался +80-net-name-slot.rules+.) \item Вы можете вручную назначить интерфейсам наиболее понятные для вас имена (например, +internet0+, +dmz0+, +lan0+). Для этого, подготовьте свои собственные правила, указав в них нужные имена при помощи параметра +NAME+, после чего сохраните их в файл с более высоким приоритетом, чем правила по умолчанию, например, - +/etc/udev/rules.d/70-my-net-names.rules+. (Приоритет файлов - определяется на основании алфавитной сортировки их имен.) + +/etc/udev/rules.d/70-my-net-names.rules+\footnote{Прим. перев.: + Начиная с systemd 209, существует более удобный способ настройки + имен и других параметров сетевых интерфейсов (MAC-адреса, + скорости, дуплекса, MTU, состояния Wake on LAN)~--- он описан в + секции <> на странице руководства + \href{http://www.freedesktop.org/software/systemd/man/udev.html#Network%20Link%20Configuration}{udev(7)}.}. + (Приоритет файлов определяется на основании алфавитной + сортировки их имен.) \item Вы можете скорректировать правила, используемые по умолчанию, например, задействовав схему именования интерфейсов по - MAC-адресам. Для, этого скопируйте файл правил в каталог +/etc+ + MAC-адресам. Для, этого скопируйте соответствующий + конфигурационный файл в каталог +/etc+ \begin{Verbatim} -cp /usr/lib/udev/rules.d/80-net-name-slot.rules /etc/udev/rules.d/80-net-name-slot.rules +cp /usr/lib/systemd/network/99-default.link /etc/systemd/network/99-default.link \end{Verbatim} - после чего измените его так, как считаете нужным. + после чего измените значение параметра +NamePolicy=+ так, как + считаете нужным (подробнее см.~секцию <> на странице руководства + \href{http://www.freedesktop.org/software/systemd/man/udev.html#Network%20Link%20Configuration}{udev(7)})% + \footnote{Прим. перев.: В systemd версий со 197 по 208, за + логику именования интерфейсов отвечал файл правил udev + +/usr/lib/udev/rules.d/80-net-name-slot.rules+, поэтому + копировать из +/usr/lib+ в +/etc+ и редактировать нужно было + именно его. Начиная с версии 209, управление именованием + интерфейсов вынесено в udev-утилиту (built-in) +net_setup_link+, + которая вызывается через файл правил + +/etc/udev/rules.d/80-net-setup-link.rules+ и настраивается + через файлы +*.link+, размещенные в каталогах + +{/etc,/run,/usr/lib}/systemd/network+. За подготовку исходных + данных, на основе которых формируются имена интерфейсов, как и + раньше, отвечает утилита +net_id+.}. \end{enumerate} Кроме того, начиная с systemd версии 199, поддерживается параметр загрузки +net.ifnames=0+, позволяющий отключить механизм предсказуемых имен (указание его -в файле конфигурации загрузчика эквивалентно первому из вышеперечисленных -вариантов). +в файле конфигурации загрузчика практически эквивалентно первому из +вышеперечисленных вариантов). \subsection{Как именно работает новая схема?} Подробности технической реализации описаны в блоке комментариев в \href{http://cgit.freedesktop.org/systemd/systemd/tree/src/udev/udev-builtin-net_id.c#n20}% -{исходном коде net-id built-in}. Ознакомьтесь с ним, если у вас возникают +{исходном коде net\_id built-in}. Ознакомьтесь с ним, если у вас возникают вопросы, касающиеся расшифровки новых имен\footnote{Прим. перев.: Далее приводится перевод упомянутого блока комментариев. Последним коммитом, -затронувшим данный файл, на момент перевода является a4bbe от 8 июля -2013 г.}. +затронувшим данный файл, на момент перевода является e0d4a от 9 января +2014 г.}. \begin{Verbatim} Предсказуемые имена сетевых интерфейсов формируются на основании: @@ -5606,8 +5652,9 @@ cp /usr/lib/udev/rules.d/80-net-name-slot.rules /etc/udev/rules.d/80-net-name-sl Первые два символа в имени определяют тип интерфейса: en -- ethernet - wl -- wlan - ww -- wwan + sl -- SLIP (IP через последовательный порт) + wl -- WLAN + ww -- WWAN Последующие символы определяеются используемой схемой: o -- для устройств, встроенных в материнскую плату @@ -5651,7 +5698,7 @@ Multi-function PCI устройство с двумя портами: ID_NET_NAME_MAC=enx78e7d1ea46dc ID_NET_NAME_PATH=enp2s0f1 -Подключенная к PCI wlan-карта: +Подключенная к PCI WLAN-карта: /sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/net/wlp3s0 ID_NET_NAME_MAC=wlx0024d7e31130 ID_NET_NAME_PATH=wlp3s0