След четири месеца разработка е представен релиз на системния мениджър systemd 255. Между най-важните подобрения са: поддръжка на експортиране на устройства през NVMe-TCP, компонент systemd-bsod за показване на съобщения за грешки на цял екран, утилита systemd-vmspawn за стартиране на виртуални машини, утилитата varlinkctl за управление на услуги Varlink, утилитата systemd-pcrlock за анализ на регистри TPM2 PCR и генериране на правила за достъп, модулът за автентикация pam_systemd_loadkey.so.
Ключови промени в новата версия:
- Добавен е компонентът „systemd-storagetm“, който позволява автоматично експортиране на всички локални блокови устройства чрез драйвера NVMe-TCP (NVMe по TCP), което позволява достъп до NVMe устройства по мрежата (NVM Express over Fabrics), използвайки TCP протокол. Новият юнит „storage-target-mode.target“ отговаря за предоставянето на достъп в режим NVMe по TCP и може да бъде активиран по време на зареждане чрез задаване на параметъра в командния ред на ядрото „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 при включване на автоматичен вход в системата.
- Добавена е поддръжка на преминаване в хибернация с запазване на съдържанието на паметта във файлове за подкачка, съхранявани в файловата система 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’.
Източник: opennet.ru
