Дата публикации:Wed, 17 Sep 2025 23:03:53 +0300
После девяти месяцев разработки представлен релиз системного менеджера systemd 258. Ключевые изменения: прекращение поддержки cgroups v1 и компонентов управления системой в стиле System V, новые утилиты systemd-factory-reset и systemd-pty-forward, концепция домашних областей, поддержка загрузки в дисковый образ, полученный через HTTP.
Среди изменений в новом выпуске:
- Добавлена утилита systemd-factory-reset для инициирования или отмены сброса настроек в исходное состояние (factory reset) при следующей загрузке. Для мгновенного сброса добавлен юнит factory-reset-now.target. Для сброса во время загрузки добавлен параметр командной строки ядра "systemd.factory_reset". Добавлена концепция домашних областей (home area), позволяющая задавать подкаталоги внутри основной домашней директории ($HOME), в которые может раздельно входить пользователь для работы в разных рабочих пространствах. Например, для одного пользователя можно создать отдельные области для тестирования настроек и для разработки (~/Areas/foo и ~/Areas/bar). Для подключения к дополнительной области при входе нужно указать в логине название области, отделив его символом "%" ("username%foo") или использовать утилиту run0 с опцией "--area". Поддержка домашних областей пока реализована только в systemd-homed и недоступна для полных графических сеансов. В параметры командной строки ядра "systemd.pull" и "rd.systemd.pull", применяемые для автоматической загрузки виртуальных машин, контейнеров или образов-расширений (sysext, confext), добавлен флаг "blockdev". При указании данного флага загруженный образ прикрепляется к loopback-устройству, что позволяет напрямую загружаться в дисковый образ, полученный через HTTP. Например: rd.systemd.pull=raw,machine,verify=no,blockdev:image:https://192.168.100.1:8081/image.raw \ root=/dev/disk/by-loop-ref/image.raw-part2 Добавлена утилита systemd-pty-forward при помощи которой можно создать псевдотерминал ("PTY") и запустить на нем процесс, перенаправляя любой вывод на исходный терминал, на котором была запущена утилита. Удалён код, обеспечивавший поддержку cgroups v1. Удалены компоненты управления системой в стиле System V, такие как утилиты itctl, runlevel и telinit, устройство /dev/initctl, концепция уровней запуска (runlevel), unit-файлы runlevel[0-6].target и возможность управления состоянием через команду init. Удаление поддержки скриптов сервисов System V намечено на следующий выпуск. Минимальные требования к версии ядра Linux подняты до выпуска 5.4 (рекомендуется версия 5.7). Права доступа к устройствам tty/pts изменены с 0620 (-rw--w----) на 0600 (-rw-------) для запрета записи в чужой терминал другим пользователям с той же группой. Для возвращения старого поведения при сборке можно использовать опцию '-Dtty-mode=0620'. В systemd-resolved и systemd-importd прекращена поддержка библиотек GnuTLS и libgcrypt, в качестве криптобэкенда оставлен только OpenSSL. В unit-файлы добавлена поддержка условия "ConditionKernelModuleLoaded" для проверки загрузки определённого модуля ядра. Условие "ConditionKernelVersion" заменено на более общую конструкцию "ConditionVersion", через которую кроме ядра можно проверить версии systemd и glibc. Включена поддержка пользовательских квот для раздела /tmp/, размещённого в tmpfs, и для /dev/shm/. Для slice-юнитов, используемых для разбиения системы на части (app.slice, background.slice, session.slice) с целью изоляции ресурсов между различными пользовательскими сервисами, реализованы настройки ConcurrencySoftMax и ConcurrencyHardMax для управления числом одновременно активных юнитов. Добавленные возможности можно использовать как механизм для управления запуском работ с учётом потребления ресурсов, поддерживающий иерархические пулы работ. В настройку ExecStart добавлена поддержка префикса '|', определяющего запуск через командный интерпретатор. Реализован API на базе протокола Varlink, который может применяться для определения текущего состояния, списка юнитов и состояния юнитов. Добавлен дополнительный каталог с преднастройками ("preset") для системных сервисов, выполняемых в initrd, позволяющий разделить включение системных сервисов для хоста и initrd. Добавлена возможность привязки квот к отдельным сервисам, используя настройки StateDirectoryQuota, StateDirectoryAccounting, CacheDirectoryQuota, CacheDirectoryAccounting, LogsDirectoryQuota и LogsDirectoryAccounting. В systemd-udevd добавлена поддержка свойств ID_NET_BRING_UP_BEFORE_JOINING_BRIDGE, ID_NET_NAME_INCLUDE_DOMAIN, ID_AV_LIGHTS. Добавлен параметр командной стройки ядра "udev.trace" и опция "--traceu" в утилите devadm для трассировки логики работы udev во время загрузки и во время работы. В утилиту udevadm добавлена команда "cat" для показа содержимого установленных файлов с правилами. Обеспечена автоматическая маркировка отладочных USB-интерфейсов Android (ADB DbC, ADB, Fastboot) для доступа непривилегированными пользователями. В systemd-networkd добавлены настройки IPv4DuplicateAddressDetectionTimeoutSec, UseSIP в секции "[DHCPv6]", MPLSRouting в секции "[Network]", Preference в секции "[IPv6RoutePrefix]", LinkLocalLearning, Locked, MACAuthenticationBypass и VLANTunnel в секции "[Bridge]". В клиент DHCPv4 добавлена поддержка протокола BOOTP. В systemd-logind добавлены новые классы сеансов: "none" для отключения создания сеанса; "user-light" и "user-early-light" для создания пользовательских сеансов без активации для пользователя сервисного менеджера (для неинтерактивных сеансов). В systemd-resolved добавлена поддержка зон делегирования ("delegate zone"), позволяющих маршрутизировать запросы DNS для определённых доменов через заданные серверы DNS. Обеспечена отправка параллельных запросов DNS-записей A и AAAA для одного домена. В resolved.conf добавлена настройка RefuseRecordTypes для определения блокируемых типов записей, например, для блокирования записей "A" на хостах только с IPv6. В команду "systemctl start" добавлена опция "--verbose" для отображения лога работы юнитов, над которыми выполняется операция. В systemd-boot добавлена поддержка двух новых спецификаций загрузчиков - "uki" и "uki-url". Во втором случае реализована возможность загружать образ UKI c внешнего хоста по протоколу HTTP. Добавлена возможность встраивания образов прошивок UEFI в образы UKI (Unified Kernel Image). В loader.conf добавлена настройка "reboot-on-error" для определения действий (перезагрузить или вывести загрузочное меню) в случае сбоя выбранной загрузочной позиции. В systemd-nspawn добавлена поддержка непривилегированного запуска образов контейнеров, хранимых в обычных директориях. В systemd-importd добавлена поддержка образов, сжатых алгоритмом zstd (в дополнение к .xz, .gz и .bz2.). Добавлены параметры командной строки ядра "systemd.break" и "rd.systemd.break", позволяющие вставлять интерактивные точки останова, прерывающие загрузку в заданные моменты. Доступны четыре точки останова: "pre-udev", "pre-basic", "pre-mount" и "pre-switch-root". В следующем выпуске намечено прекращение поддержки каталога /run/lock/ и пакетного фильтра iptables (в systemd-networkd и systemd-nspawn останется только поддержка nftables). Также намечено повышение требований к минимальным версиям: ядро Linux 5.10, glibc 2.34, openssl 3.0.0, python 3.9.0.
Ссылка на оригинал: https://www.opennet.ru/opennews/art.shtml?num=63898