Релиз systemd 236

Леннарт Поттеринг представил релиз системного менеджера systemd 236. Из новшеств можно отметить поддержку формата дискового шифрования LUKS2, новые опции /etc/fstab (x-systemd.makefs, x-systemd.growfs), возможность использования Tmpfiles.d в пользовательском каталоге, поддержку привязки не только каталогов через «machinectl bind», серию новых настроек для unit-файлов.

Основные изменения:

  • Добавлена поддержка формата шифрования дисков LUKS2, примечательного упрощённой системой управления ключами, возможностью использования секторов большого размера (4096 вместо 512, снижает нагрузку при расшифровке), символьными идентификаторами разделов (label) и средствами резервирования метаданных с возможностью их автоматического восстановления из копии в случае выявления повреждения. Для использования LUKS2 требуется сборка с библиотекой libcryptsetup2;
  • В /etc/fstab добавлена обработка опций монтирования x-systemd.makefs и x-systemd.growfs, которые позволяют организовать форматирование ФС перед монтированием (действует только если раздел не отформатирован) или изменение размера ФС до границ блочного устройства после монтирования (действует только если ФС меньше размера раздела). Возможность изменения размера поддерживается только для ext4 и btrfs;
  • Каталог с настройками Tmpfiles.d теперь можно использовать в числе пользовательской конфигурации (~/.config/user-tmpfiles.d/). Для запуска настроек из ~/.config/user-tmpfiles.d/ в systemd-tmpfiles добавлена опция »--user», которая применяется в systemd-tmpfiles-setup.service и systemd-tmpfiles-clean.service для каждого сеанса пользователя;
  • В unit-файлы и настройки tmpfiles.d добавлена поддержка новых спецификаторов »%»:»%S» для определения базовой директории (например, /var/lib для системного контекста или $XDG_CONFIG_HOME для контекста пользователя), %C для директории с кэшем (/var/cache или $XDG_CACHE_HOME) и %L для директории с логами (/var/log или $XDG_CONFIG_HOME/log/);
  • В «machinectl bind» добавлена возможность применения привязки (bind mount) не только директорий, но и обычных файлов, устройств, fifo и сокетов;
  • В bootctl добавлена команда «list» для вывода списка доступных элементов загрузочного меню;
  • В systemd-firstboot добавлена возможность установки начальной раскладки клавиатуры;
  • Добавлена настройка LogLevelMax для задания максимального уровня лога, под которым любые процессы сервиса могут отправлять логи (все сообщения с более низким приоритетом будут отбрасываться);
  • Добавлена настройка LogExtraFields для включения дополнительных полей, которые будут прикрепляться ко всем записям в логе, генерируемом любым процессом, связанным с текущим unit-файлом;
  • Добавлены настройки StandardInputData и StandardInputText, а также опция StandardInput=data, которые могут применяться для определения текстовых или бинарных данных, которые нужно передать запускаемым процессам сервиса через стандартный ввод (данные кодируются прямо в директиве);
  • Настройки StandardInput, StandardOutput и StandardError теперь могут применяться для связывания stdin/stdout/stderr запускаемого процесса напрямую с файлом или сокетом AF_UNIX при помощи опции «file:»;
  • В unit-файлах появилась новая настройка CollectMode, при помощи которой можно управлять логикой работы сборщика мусора. Например, данная опция может применяться для активации чистки юнитов, которые не удалось запустить автоматически. В systemd-run и systemd-mount данная функциональность доступна через новую опцию »-G»;
  • В дополнение к FailureAction в юниты также добавлена настройка SuccessAction для определения действия, запускаемого на этапе завершения работы успешно выполненного юнита. Например, может потребоваться выполнять определённую работу внутри контейнера при его остановке;


  • В правилах networkds теперь можно использовать новые опции IncomingInterface и OutgoingInterface для настройки входящего и исходящего сетевых интерфейсов;
  • В systemd-networkd добавлена поддержка сетевых устройств «vxcan»;
  • В networkd добавлен флаг RequiredForOnline, который учитывается в systemd-wait-online при определении сетевой доступности системы;
  • В systemd-resolved добавлена возможность регистрации сервисов DNS-SD в локальной сети при помощи MulticastDNS;
  • В реализации DNSSEC из systemd-resolved добавлена поддержка RFC 8080 (ключи и цифровые подписи Ed25519);
  • В systemd-resolve добавлен набор опций »--set-dns»,»--set-domain»,»--set-llmnr»,»--set-mdns»,»--set-dnssec»,»--set-nta» и »--revert» для динамического изменения настроек DNS, привязанных к сетевым интерфейсам;
  • В systemd-nspawn добавлена опция »--network-namespace-path», которую можно использовать для присоединения контейнера к существующему пространству имён через передачу пути к файлу «netns»;
  • В systemd-resolved добавлена поддержка файла /run/systemd/resolve/stub-resolv.conf, на который рекомендовано ставить символическую ссылку с /etc/resolv.conf. В новом файле настроен резолвинг через 127.0.0.53 (systemd-resolved) и включены динамически определяемые домены для поиска, позволяющие добиться более корректного определения имён DNS в программах не использующих локальный DNS API, такой как NSS;
  • В systemd-networkd реализация сервера для анонса маршрутов IPv6 (Router Advertisment) теперь может опционально анонсировать DNS-сервер и информацию о домене;
  • В DHCPv6-клиент networkd добавлена поддержка опции FQDN (RFC 4704);
  • Находящийся в каталоге modprobe.d файл, обеспечивающий переопределение параметров модуля bonding.ko для корректного управления интерфейсом bond0 из systemd-networkd, расширен установкой опции «numdummies=0» для модуля dummy.ko, препятствующей автоматическому созданию интерфейса dummy0 (все интерфейсы dummy должны быть явно заданы);


  • Запрещено применять неизвестные спецификаторы '%' в файлах конфигурации unit-ов и в tmpfiles.d. Все символы процента, за которыми следуют буквы или цифры, не связанные со спецификаторами, теперь должны экранироваться в форме '%%' (выражения вида «size=5%» и «size=5%, foo=bar» остаются допустимы, но «LABEL=x%y%z» приведёт к выводу ошибки);
  • Устанавливаемый udev тег «uaccess» больше не применяется к устройствам /dev/kvm и /dev/dri/renderD* для которых теперь по умолчанию выставляются права доступа 0666. Устройство /dev/dri/renderD*, как и /dev/kfd, теперь будет принадлежать группе «render»;
  • В systemd-timesyncd.service, systemd-journal-gatewayd.service и systemd-journal-upload.service включена опция «DynamicUser=yes» (при каждом запуске для сервиса создаётся новый пользователь с идентификатором из диапазона 61184…65519), которая требует добавления «nss-systemd» в /etc/nsswitch.conf для корректного сопоставления UID;
  • В journalctl добавлен параметр »--output-fields» для ограничения числа полей, выводимых в режимах verbose и JSON;
  • В systemd-timesyncd добавлены настройки «RootDistanceMaxSec», «PollIntervalMinSec» и «PollIntervalMaxSec» для установки максимально допустимой задержки при выборе серверов синхронизации времени и задания интервалов опроса;
  • В systemctl добавлена опция »--dry-run» для отображения планируемых действий без их фактического выполнения. В настоящее время опция пока поддерживается только в командах shutdown и sleep;
  • В обработчик настройки ConditionSecurity добавлена поддержка определения модулей TOMOYO;
  • Применяемые в unit-файлах секции »[Install]» теперь допустимо использовать и в файлах замены настроек из каталогов *.d;
  • В настройке SystemCallFilter теперь можно указывать значение «errno» для каждого системного вызова, например «SystemCallFilter=~uname: EILSEQ»;
  • В systemd-analyze добавлен параметр «calendar» для проверки и тестирования спецификаций календарного времени в настройках OnCalendar в таймерах.

© OpenNet