Після чотирьох місяців розробки представлений реліз системного менеджера systemd 255. Серед найбільш важливих покращень: підтримка експорту накопичувачів через NVMe-TCP, компонент systemd-bsod для повноекранного виведення повідомлень про помилки, утиліта systemd-vmspawn для запуску віртуальних машин, утиліта var , утиліта 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.zswa Інформація про ці властивості включена у висновок «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'.
Джерело: opennet.ru
