Новый релиз системного менеджера systemd 255: теперь с «синим экраном смерти»

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

39d337fb6aef80e48cca88140d52c66a.jpg

Что там нового?

Что касается systemd, альтернативы классической подсистемы инициализации init, то работу над ней изначально вели Леннарт Поттеринг (Lennart Poettering) и Кай Зиверс (Kay Sievers). Проект стартовал в 2010 году, а systemd стал дефолтным компонентом CentOS, Debian, Fedora, openSUSE, Red Hat Enterprise Linux, SUSE Linux Enterprise Server.

b08322162b6bd8433f501c0131d7053b.png

Обо всех нововведениях рассказать не позволит объём материала, но самые главные затронем — среди них есть весьма интересные:

  • Так, например, добавлен компонент «systemd-storagetm», который позволяет в автоматическом режиме экспортировать все локальные блочные устройства при помощи драйвера NVMe-TCP (NVMe over TCP). Так, он открывает возможность обращаться к NVMe-накопителям по сети (NVM Express over Fabrics), используя протокол TCP. За доступ отвечает компонент «storage-target-mode.target», который можно включить ещё на стадии загрузки. Для этого нужно в командной строке ядра указать «rd.systemd.unit=storage-target-mode.target».

  • Появилась новая утилита для анализа и прогнозирования состояний регистров TPM2 PCR (Platform Configuration Register) и формирования сохраняемых в индексе TPM2 NV правил доступа. Утилита получила название «systemd-pcrlock». Что касается доступа, то речь идёт о разрешении обращения к объектам TPM2, таким как ключи шифрования диска, только из заверенных цифровой подписью компонентов, запускаемых на стадии верифицированной загрузки.

  • В юнитах появились новые свойства, включая MemoryPeak, MemorySwapPeak, MemorySwapCurrent и MemoryZSwapCurrent. Они соответствуют доступным через cgroup v2 свойствам memory.peak, memory.swap.peak, memory.swap.current и memory.zswap.current. Информация о данных свойствах включена в вывод systemctl status.

  • Кроме того, добавлена и новая утилита «systemd-vmspawn». Это фактически аналог systemd-nspawn для запуска образа операционной системы в виртуальной машине (утилита «systemd-nspawn» предназначена для запуска контейнеров, а «systemd-vmspawn» предоставляет похожий интерфейс для виртуальных машин).

  • Ещё стоит упомянуть и изменение способа запуска сервисов, переведённых на использование posix_spawn с опциями CLONE_VM и CLONE_VFORK для запуска процесса, и применение отдельного исполняемого файла «systemd-executor» для настройки запускаемого процесса. Ранее процессы ответвлялись функцией fork с копированием памяти управляющего процесса в режиме copy-on-write и выполнением необходимых настроек (монтирование пространств имён и выставление CGroup).

  • Важное изменение в прекращении поддержки раздельных иерархий каталогов (когда /usr монтируется отдельно от корня или разделены каталоги /bin и /usr/bin, /lib и /usr/lib). В будущем также решено прекратить поддержку cgroups v1, скриптов сервисов System V и EFI-переменных SystemdOptions.

  • Объявили устаревшими и параметры SuspendMode, HybridSleepMode, HibernateStat и HybridSleepState в секции »[Sleep]» файла «systemd-sleep.conf». Данные параметры теперь игнорируются и могут принимать только значения по умолчанию.

  • Зато в юнитах появилась опция SurviveFinalKillSignal, позволяющая игнорировать финальный сигнал SIGTERM/SIGKILL, выдаваемый во время завершения работы.

  • В утилите «systemd-repart» появились новые опции:»--copy-from» для получения описаний раздела из указанного образа ФС,»--copy-source» для указания базового каталога для параметра CopyFiles,»--make-ddi=confext»,»--make-ddi=sysext» и »--make-ddi=portable» для генерации разных типов DDI,»--tpm2-device-key» для привязки диска к определённому открытому ключу TPM2.

  • Что касается утилит systemd-analyze, systemd-tmpfiles, systemd-sysusers, systemd-sysctl и systemd-binfmt, то в них появилась новая опция »--tldr» для вывода только фактических параметров конфигурации без пробелов и комментариев.

  • В подсистеме seccomp добавлена поддержка архитектуры LoongArch64. Разрешено использование seccomp для фильтрации системных вызовов в сервисах, выполняемых не под юзером root без включения настройки NoNewPrivileges=yes.

Ну, а теперь — о systemd-bsod и «синем экране смерти»

76c8b9058cc19e616251fd1ee1d2c782.jpg

Обычно, когда мы говорим о BSOD, сразу перед глазами появляется тот самый экран из Windows. Конечно, он не всегда был синим, впервые в более-менее современном виде он был ещё в Windows NT 3.1.

В каждой новой версии операционной системы от Microsoft внешний вид этого экрана менялся. Так, в версиях 9x сообщение об ошибке было очень коротким. Всё изменилось с Windows XP, где разработчики чуть добавили данных о найденной проблеме.

Начиная с «восьмёрки» на BSOD появляется грустный смайлик, никуда не пропала и техническая информация. Интересный момент: в Windows 11 «синий экран смерти» сделали чёрным, но после того как большинство пользователей выразили недовольство, синий цвет вернули. Возможно, причиной были и не пользователи, но возмущённых сменой цвета было действительно много.

d91abd811e65a4633316e3d62e5d5101.jpg

Ну, а теперь некий аналог BSOD смогут лицезреть и пользователи Linux. Это удовольствие обеспечивает компонент systemd-bsod. От выводит на дисплей в полноэкранном режиме сообщения об ошибках из журнала LOG_EMERG.

Текст белого цвета, так что его легко прочитать на светло-синем фоне. По примеру BSOD из поздних версий Windows, systemd-bsod выводит на экран и QR-код, который расположен в правом нижнем углу. Код можно считать при помощи смартфона, получив более-менее развёрнутую информацию об ошибке.

Разработчики уверены, что это нововведение будет полезно в выявлении и решении проблем, которые связаны с ядром Linux и аппаратным обеспечением. Он представляет собой гораздо более наглядный инструмент мониторинга и устранения сложностей, которые могут возникнуть в процессе загрузки ОС.

© Habrahabr.ru