Вышла стабильная версия systemd 255 с поддержкой ВSOD («синего экрана смерти») в Linux

от автора

7 декабря 2023 года состоялся релиз стабильной версии подсистемы инициализации и управления службами в Linux systemd 255, где добавлен компонент systemd-bsod, который обеспечивает поддержку ВSOD («синего экрана смерти») в Linux.

Новая утилита systemd-bsod позволяет выводить предупреждения (зарегистрированные сообщения об ошибках из журнала LOG_EMERG) в виде белых букв на синем фоне в полноэкранном режиме и QR-код с ошибкой, если загрузка компонентов Linux завершилась отказом.

Это добавление показа bsod в systemd было разработано в рамках обсуждения и внедрения улучшений взаимодействия с пользователем при ранних сбоях загрузки системы под названием Outreachy 2023.

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

Согласно информации OpenNET, ключевые изменения дополнения в выпуске systemd 255:

  • добавлен компонент «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-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://habr.com/ru/articles/779242/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *