Після п'яти місяців розробки представлений реліз системного менеджера systemd 251.
Основні зміни:
- Підвищено системні вимоги. Мінімальна версія ядра Linux, що підтримується, збільшена з 3.13 до 4.15. Для роботи потрібна таймер CLOCK_BOOTTIME. Для складання необхідний компілятор з підтримкою стандарту C11 та розширень GNU (для заголовних файлів продовжує використовуватися стандарт C89).
- Додано експериментальну утиліту systemd-sysupdate для автоматичного визначення, завантаження та встановлення оновлень з використанням атомарного механізму заміни розділів, файлів або каталогів (використовуються два незалежні розділи/файли/каталоги, на одному з яких знаходиться поточний працюючий ресурс, а на іншому встановлюється чергове оновлення, після чого розділи/файли/каталоги змінюються місцями).
- Представлена нова внутрішня бібліотека, що розділяється libsystemd-core- .so, яка встановлюється в каталог /usr/lib/systemd/system і відповідає існуючій бібліотеці libsystemd-shared- .so. Використання бібліотеки libsystemd-core- .so дозволяє скоротити загальний настановний розмір рахунок повторного використання бінарного коду. Номер версії може задаватися через параметр 'shared-lib-tag' у складальній системі meson і дає можливість дистрибутивам одночасно постачати декілька версій даних бібліотек.
- Реалізовано передачу в обробники OnFailure/OnSuccess змінних оточення $MONITOR_SERVICE_RESULT, $MONITOR_EXIT_CODE, $MONITOR_EXIT_STATUS, $MONITOR_INVOCATION_ID та $MONITOR_UNIT з інформації про юніт, що відстежується.
- Для unit-ів реалізовано налаштування ExtensionDirectories, яке можна використовуватиме організації завантаження компонентів розширення системи (System Extension) зі звичайних каталогів, а чи не дискових образів. Вміст каталогу розширення системи накладається за допомогою OverlayFS і застосовується для розширення ієрархії каталогів /usr/ та /opt/, та додавання додаткових файлів під час роботи, навіть якщо вказані каталоги вмонтовані в режимі лише для читання. До команди 'portablectl attach —extension=' також додано підтримку вказівки каталогу.
- Для unit-ів, примусово завершених обробником systemd-oomd через брак пам'яті в системі, забезпечена передача ознаки 'oom-kill' та відображення в атрибуті 'user.oomd_ooms' числа примусових завершень.
- Для unit-ів додані нові специфікатори шляхів %y/%Y, що відбивають нормалізований шлях до юніту (з розкриттям символічних посилань). Також додані специфікатори %q для встановлення значення PRETTY_HOSTNAME і %d для встановлення CREDENTIALS_DIRECTORY.
- У непривілейованих сервісах, що запускаються звичайним користувачем з використанням прапора «-user», дозволено зміну налаштувань RootDirectory, MountAPIVFS, ExtensionDirectories, Capabilities, ProtectHome, Directory, TemporaryFileSystem, PrivateTmp, PrivateDevices, PrivateNetwork, ProtectClock , ProtectKernelTunables, ProtectKernelModules, ProtectKernelLogs та MountFlags. Можливість доступна лише при включенні в системі простору імен ідентифікаторів користувача (user namespaces).
- У налаштуванні LoadCredential дозволено вказати ім'я каталогу як аргумент, у цьому випадку робиться спроба завантаження облікових даних з усіх файлів у вказаному каталозі.
- У systemctl у параметрі «timestamp» з'явилася можливість вказівки прапора unix для показу часу в епохальному форматі (число секунд з 1 січня 1970 року).
- У "systemctl status" реалізований прапор "old-kernel", що показується, якщо завантажене в сеансі ядро має більш старий номер версії, ніж доступне в системі базове ядро. Також доданий прапор «unmerged-usr» для визначення, що вміст каталогів /bin/ та /sbin/ сформований не через символічні посилання /usr.
- Для генераторів, що запускаються процесом PID 1, надані нові змінні оточення $SYSTEMD_SCOPE (запуск із системного або користувальницького сервісу), $SYSTEMD_IN_INITRD (запуск з initrd або хост-оточення), $SYSTEMD_FIRST_BOOT (індикатор першого завантаження), $SYSTEMD ) та $SYSTEMD_ARCHITECTURE (архітектура, для якої зібрано ядро).
- В обробнику PID 1 реалізовано можливість завантаження параметрів системних облікових даних з QEMU-інтерфейсу fw_cfg або через вказівку в командному рядку ядра параметра systemd.set_credential. У директиві LoadCredential забезпечено автоматичний пошук облікових даних у каталогах /etc/credstore/, /run/credstore/ та /usr/lib/credstore/, якщо в якості аргументу вказано відносний шлях. Аналогічна поведінка застосована для директиви LoadCredentialEncrypted, в якій додатково перевіряються каталоги /etc/credstore.encrypted/, /run/credstore.encrypted/ та /usr/lib/credstore.encrypted/.
- У systemd-journald стабілізовано можливість експорту у форматі JSON. У командах journalctl-list-boots і bootctl list додана підтримка виведення у форматі JSON (прапор «json»).
- У udev додані нові файли з базами даних hwdb, що містять відомості про портативні пристрої (КПК, калькулятори тощо) та пристрої, що використовуються при створенні звуку та відео (DJ-пульти, кейпади).
- У udevadm додані нові опції "-prioritized-subsystem" для завдання пріоритету проходження систем (використовується в systemd-udev-trigger.service для обробки в першу чергу блокових пристроїв і TPM), "-type=all", "initialized-match" та "-initialized-nomatch" для вибору ініціалізованих або неініціалізованих пристроїв, "udevadm info -tree" для показу дерева об'єктів в ієрархії /sys/. У udevadm також додані нові команди «wait» та «lock» для очікування появи в БД запису про пристрій та блокування блокового пристрою під час форматування або запису таблиці розділів.
- Додано новий набір символічних посилань на пристрої /dev/disk/by-diskseq/ для ідентифікації блокових пристроїв за порядковим номером (diskseq).
- У файли .link у секції [Match] додано підтримку параметра «Firmware» для зіставлення пристрою по рядку з описом прошивки.
- У systemd-networkd для unicast-маршрутів, що налаштовуються через секцію [Route], значення scope змінено за умовчанням на link для відповідності поведінці команди ip route. У розділі [Bridge] додано параметр Isolated=true|false для налаштування однойменного атрибуту мережних мостів у ядрі. У секції [Tunnel] додано параметр External для встановлення тунелю типу external (режим збору метаданих). У секції [DHCPServer] додані параметри BootServerName, BootServerAddress і BootFilename для налаштування адреси сервера, імені сервера та імені завантажувального файлу, що надсилаються сервером DHCP під час завантаження в режимі PXE. У секції [Network] видалено параметр L2TP, замість якого в .netdev файлах можна використовувати нове налаштування Local у прив'язці до інтерфейсу L2TP.
- Додано новий юніт «systemd-networkd-wait-online@ .service», який можна використовувати для очікування підняття певного мережного інтерфейсу.
- Реалізовано можливість використання файлів .netdev для створення віртуальних пристроїв WLAN для налаштування яких запропоновано секцію [WLAN].
- У файлах .link/.network у секції [Match] реалізовано параметр Kind зіставлення типу пристрою («bond», «bridge», «gre», «tun», «veth»).
- Забезпечено запуск systemd-resolved на більш ранньому етапі завантаження, у тому числі реалізований запуск з initrd за наявності systemd-resolved в образі initrd.
- У systemd-cryptenroll додано опцію —fido2-credential-algorithm для вибору алгоритму шифрування облікових даних та опцію —tpm2-with-pin для керування введенням PIN-коду при розблокуванні розділу з використанням TPM. /etc/crypttab додана аналогічна опція tpm2-pin. При розблокуванні пристроїв через TPM забезпечено шифрування параметрів для захисту від перехоплення ключів шифрування.
- У systemd-timesyncd додано D-Bus API для динамічного отримання інформації з NTP-сервера через IPC.
- Для визначення необхідності кольорового виведення у всіх командах реалізовано перевірку змінної оточення COLORTERM на додаток до NO_COLOR, SYSTEMD_COLORS і TERM, що раніше перевірялися.
- У складальній системі Meson реалізована опція install_tag для вибіркового складання та встановлення необхідних компонентів: pam, nss, devel (pkg-config), systemd-boot, libsystemd, libudev. Додана збірна опція default-compression для вибору алгоритму стиснення для systemd-journald та systemd-coredump.
- У sd-boot loader.conf додано експериментальне налаштування «reboot-for-bitlocker» для завантаження Microsoft Windows з BitLocker TPM.
Джерело: opennet.ru