04.03.2024

Выпуск системного менеджера systemd 255

После четырёх месяцев разработки представлен релиз системного менеджера systemd 255. Среди наиболее важных улучшений: поддержка экспорта накопителей через NVMe-TCP, компонент systemd-bsod для полноэкранного вывода сообщений об ошибках, утилита systemd-vmspawn для запуска виртуальных машин, утилита varlinkctl для управления сервисами Varlink, утилита systemd-pcrlock для анализа регистров TPM2 PCR и генерации правил доступа, модуль аутентификации pam_systemd_loadkey.so.

Ключевые изменения в новом выпуске:

  • Добавлен компонент «systemd-storagetm«, дающий возможность автоматически экспортировать все локальные блочные устройства при помощи драйвера NVMe-TCP (NVMe over TCP), позволяющего обращаться к NVMe-накопителям по сети (NVM Express over Fabrics), используя протокол TCP. За предоставление доступа в режиме NVMe over TCP отвечает новый юнит «storage-target-mode.target», который можно включить на стадии загрузки, указав в командной строке ядра «rd.systemd.unit=storage-target-mode.target», например, при необходимости удалённого обращения к накопителю в диагностических целях.
  • Добавлен компонент «systemd-bsod» с реализацией аналога «синего экрана смерти», позволяющего на этапе загрузки выводить сообщения о критических ошибках (LOG_EMERG) в форме полноэкранного уведомления.
  • Добавлена утилита «systemd-vmspawn«, представляющая аналог утилиты systemd-nspawn для запуска образа операционной системы в виртуальной машине (утилита systemd-nspawn предназначена для запуска контейнеров, а systemd-vmspawn предоставляет похожий интерфейс для виртуальных машин). В настоящее время для запуска виртуальных машин доступен только бэкенд на базе QEMU.
  • Добавлена утилита «varlinkctl» для вызова и интроспекции сервисов, использующих протокол Varlink.
  • Добавлена утилита «systemd-pcrlock» для анализа и предсказания состояний регистров TPM2 PCR (Platform Configuration Register) и формирования сохраняемых в индексе TPM2 NV правил доступа, разрешающих обращение к объектам TPM2, таким как ключи шифрования диска, только из заверенных цифровой подписью компонентов, запускаемых на стадии верифицированной загрузки. В качестве входных данных для анализа может использоваться результат запроса состояния PCR в TPM2, выдаваемый прошивкой UEFI лог событий текущей загрузки (/sys/kernel/security/tpm0/binary_bios_measurements) или локально сохранённый лог TPM2 (/run/log/systemd/tpm2-measure.log). Поддержка сохраняемых правил доступа добавлена в systemd-cryptsetup, systemd-cryptenroll и systemd-repart.
  • Добавлен PAM-модуль pam_systemd_loadkey.so, предназначенный для автоматического извлечения из хранилища ключей в ядре (keyring) парольной фразы, используемой в cryptsetup для разблокировки зашифрованной корневой ФС, и выставления этой парольной фразы в качестве токена аутентификации (PAM authtok). Модуль может применяться, например, для настройки авторазблокировки доступа к GNOME Keyring и KDE Wallet при включении автоматического входа в систему.
  • Добавлена поддержка перехода в спящий режим (hibernation) с сохранением содержимого памяти в файлы подкачки, хранимые в ФС Btrfs.
  • В юниты добавлены свойства MemoryPeak, MemorySwapPeak, MemorySwapCurrent и MemoryZSwapCurrent, соответствующие доступным через cgroup v2 свойствам memory.peak, memory.swap.peak, memory.swap.current и memory.zswap.current. Информация о данных свойствах включена в вывод «systemctl status».
  • Переработан способ запуска сервисов, который переведён на использование вызова posix_spawn с опциями CLONE_VM и CLONE_VFORK для запуска процесса и применение отдельного исполняемого файла systemd-executor для настройки запускаемого процесса. Ранее процессы ответвлялись функцией fork с копированием памяти управляющего процесса в режиме copy-on-write и выполнением необходимых настроек (монтирование пространств имён и выставление CGroup) до запуска целевого исполняемого фала через вызов exec, что приводило к проблемам из-за невозможности обращения к некоторым API Glibc на стадии между выполнением функций fork и exec.
  • Код для отслеживания внутренних процессов переведён на использование PIDFD вместо PID в окружениях с ядром, поддерживающим PIDFD (PIDFD связывается с конкретным процессом и не меняется, в том время как PID может быть привязан к другому процессу после завершения текущего процесса, ассоциированного с этим PID). Реализована возможность создания scope-юнитов, используя PIDFD вместо PID для выбора процессов.
  • Прекращена поддержка раздельных иерархий каталогов (когда /usr монтируется отдельно от корня или разделены каталоги /bin и /usr/bin, /lib и /usr/lib). В будущем также решено прекратить поддержку cgroups v1, скриптов сервисов System V и EFI-переменных SystemdOptions.

  • Команда «systemctl switch-root» ограничена для применения только в initrd. Для замены корневой ФС в обычном окружении следует использовать «systemctl soft-reboot».
  • Объявлены устаревшими параметры SuspendMode, HybridSleepMode, HibernateStat и HybridSleepState в секции «[Sleep]» файла systemd-sleep.conf. Данные параметры теперь игнорируются и могут принимать только значения по умолчанию.
  • В юниты добавлена опция SurviveFinalKillSignal, позволяющая игнорировать финальный сигнал SIGTERM/SIGKILL, выдаваемый во время завершения работы, что может оказаться полезным для оставления запущенным юнита во время мягкой перезагрузки системы в режиме soft-reboot.
  • Добавлена настройка NFTSet, позволяющая использовать идентификаторы cgroup для переключения логики в правилах межсетевого экрана.
  • Добавлена опция ConditionSecurity=measured-uki, гарантирующая, что юнит может быть запущен только в системе, загруженной с верифицированного образа ядра в формате UKI.
  • В systemd-boot добавлены новые горячие клавиши «B» и «O» для перезагрузки и выключения системы из загрузочного меню. Добавлена настройка «menu-disabled» для отключения показа загрузочного меню.
  • В утилиту systemd-repart добавлены новые опции «—copy-from» для получения описаний раздела из указанного образа ФС, «—copy-source» для указания базового каталога для параметра CopyFiles, «—make-ddi=confext», «—make-ddi=sysext» и «—make-ddi=portable» для генерации разных типов DDI, и «—tpm2-device-key» для привязки диска к определённому открытому ключу TPM2.
  • В утилиту journalctl в параметр «—lines» добавлено значение «+N» для вывода N старейших записей.
  • В udevadm добавлен флаг «—json» для вывода в формате JSON.
  • В утилиты systemd-analyze, systemd-tmpfiles, systemd-sysusers, systemd-sysctl и systemd-binfmt добавлена опция «—tldr» для вывода только фактических параметров конфигурации без пробелов и комментариев.
  • В подсистему seccomp добавлена поддержка архитектуры LoongArch64. Разрешено использование seccomp для фильтрации системных вызовов в сервисах, выполняемых не под пользователем root без включения настройки NoNewPrivileges=yes.
  • В утилиту systemd-mount добавлена опция «—tmpfs» для монтирования нового экземпляра ‘tmpfs’.

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