Після трьох з половиною місяців розробки представлений реліз системного менеджера systemd 253.
Серед змін у новому випуску:
- До складу включена утиліта 'ukify', призначена для складання, перевірки та формування підписів для уніфікованих образів ядра (UKI, Unified Kernel Image), що об'єднують обробник для завантаження ядра з UEFI (UEFI boot stub), образ ядра Linux та системне оточення, що завантажується в пам'ять initrd, що застосовується для початкової ініціалізації на стадії до монтування кореневої ФС. Утиліта замінює собою функціональність, що раніше надається командою 'dracut —uefi', і доповнює її можливостями для автоматичного розрахунку зсувів у PE-файлах, об'єднання initrd, підписи вбудованих образів ядра, створення комбінованих образів c sbsign, евристикою для визначення uname ядра, перевіркою зображення заставкою та додаванням підписаних PCR-політик, згенерованих утилітою systemd-measure.
- Додано підтримку initrd-оточень не обмежених розміщенням у пам'яті, в яких замість tmpfs використовується overlayfs. Для таких оточень systemd не виконує видалення всіх файлів в initrd після перемикання кореневої ФС.
- У сервіси доданий параметр OpenFile для відкриття довільних файлів у ФС (або підключення до Unix-сокетів) і передачі пов'язаних з ними файлових дескрипторів в процес, що запускається (наприклад, коли потрібно організувати доступ до файлу для непривілейованого сервісу без зміни прав доступу на файл) .
- У systemd-cryptenroll при реєстрації нових ключів реалізовано можливість розблокування зашифрованих розділів за допомогою токенів FIDO2 (-unlock-fido2-device) без необхідності введення пароля. Забезпечено зберігання із сіллю заданого користувачем PIN-коду для ускладнення визначення методом перебору.
- Додано налаштування ReloadLimitIntervalSec та ReloadLimitBurst, а також опції командного рядка ядра (systemd.reload_limit_interval_sec та /systemd.reload_limit_burst) для обмеження інтенсивності перезапуску фонових процесів.
- Для unit-ів реалізована опція «MemoryZSwapMax» для налаштування властивості memory.zswap.max, що визначає максимальний розмір zswap.
- Для unit-ів реалізована опція "LogFilterPatterns", що дозволяє задати регулярні вирази для фільтрації інформації, що виводиться в балку (може використовуватися для виключення певного виводу або збереження тільки певних даних).
- У scope-юнітах реалізовано підтримку налаштування «OOMPolicy» для завдання поведінки при спробі витіснення при нестачі пам'яті (для сеансів входу виставлено значення OOMPolicy=continue, щоб OOM killer їх примусово не завершував).
- Визначено новий тип сервісів - "Type = notify-reload", який розширює тип "Type = notify" можливістю очікування завершення обробки сигналу перезапуску (SIGHUP). На новий тип переведені сервіси systemd-networkd.service, systemd-udevd.service та systemd-logind.
- У udev задіяна нова схема найменування мережевих пристроїв, відмінність якої в тому, що для не прив'язаних до шини PCI USB-пристроїв тепер виставляється ID_NET_NAME_PATH для забезпечення більшої передбачуваності імен. Для змінних SYMLINK реалізовано оператора '-=', який залишає символічні посилання не налаштованими, якщо до цього було визначено правило їх додавання.
- У systemd-boot перероблена передача затравки для генераторів псевдовипадкових чисел в ядрі та дискового бекенда. Додано підтримку завантаження ядра не тільки з розділу ESP (EFI System Partition), наприклад, з прошивки або безпосередньо для QEMU. Забезпечено аналіз параметрів SMBIOS для визначення запуску в оточенні віртуалізації. Реалізовано новий режим 'if-safe', при якому сертифікат для UEFI Secure Boot завантажується з ESP тільки, якщо вважається безпечним (запускається у віртуальній машині).
- В утиліті bootctl реалізовано генерацію системних токенів на всіх системах EFI, крім оточення віртуалізації. Додані команди 'kernel-identify' та 'kernel-inspect' для відображення типу образу ядра та інформації про опції командного рядка та версії ядра, unlink для видалення файлу, пов'язаного з першим типом завантажувальних записів, cleanup для видалення всіх файлів з каталогу "entry-token" в ESP і XBOOTLDR, не пов'язаних з першим типом завантажувальних записів. Забезпечено обробку змінної KERNEL_INSTALL_CONF_ROOT.
- У команді 'systemctl list-dependencies' забезпечено обробку опцій «—type» і «—state», а в команді 'systemctl kexec' додано підтримку оточень на базі гіпервізора Xen.
- У файлах .network у розділі [DHCPv4] з'явилася підтримка опцій SocketPriority і QuickAck, RouteMetric=high|medium|low.
- У systemd-repart додані опції «—include-partitions», «—exclude-partitions» та «—defer-partitions» для фільтрації розділів типу UUID, що, наприклад, дозволяє збирати образи в яких один розділ побудований на основі вмісту іншого розділу . Також додано опцію «—sector-size» для вказівки розміру сектора, що використовується під час створення розділу. Додано підтримку генерації ФС erofs. У налаштуванні Minimize реалізовано обробку значення «best» для вибору мінімально можливого розміру образу.
- У systemd-journal-remote дозволено використання налаштувань MaxUse, KeepFree, MaxFileSize та MaxFiles для обмеження споживання дискового простору.
- У systemd-cryptsetup додано підтримку відправлення попереджувальних запитів до токенів FIDO2 для визначення їх наявності до автентифікації.
- У crypttab додані нові параметри tpm2-measure-bank та tpm2-measure-pcr.
- У systemd-gpt-auto-generator реалізовано монтування розділів ESP і XBOOTLDR в режимах "noexec, nosuid, nodev", а також додано облік переданих через командний рядок ядра параметрів rootfstype і rootflags.
- У systemd-resolved надано можливість налаштування параметрів резолвера через вказівку опцій nameserver, domain, network.dns і network.search_domains у командному рядку ядра.
- У команді systemd-analyze plot з'явилася можливість виводу у форматі JSON при вказівці прапора json. Для керування висновком також додані нові опції "-table" і "-no-legend".
- У 2023 році планується припинити підтримку cgroups v1 та роздільних ієрархій каталогів (коли /usr монтується окремо від кореня або розділені каталоги /bin та /usr/bin, /lib та /usr/lib).
Джерело: opennet.ru