Доступен системный менеджер systemd 258

После девяти месяцев разработки представлен релиз системного менеджера 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.

Источник: http://www.opennet.ru/opennews/art.shtml?num=63898