След три месеца разработка е наличен пускането на системния мениджър systemd 261. Ключови промени: подготовка за поддръжка на API за проверка на възрастта, поддръжка на подсистемите Kexec Handover и Live Update Orchestration за рестартиране без загуба на състояние, подсистема IMDS (Служба за метаданни на инстанцията), функционалност за защита на зареждането на системи без физически TPM (Модул за сигурна платформа), компонент systemd-sysinstall с реализация на инсталатор.
Среда изменений в новото издание:
- Добавен е нов компонент systemd-sysinstall с реализация на прост инсталатор на операционната система, който може да се управлява от командния ред или чрез интерактивен текстов интерфейс. Функционалността на systemd-sysinstall е изградена от вече съществуващите възможности на systemd: за конфигуриране на дисковите дялове е ангажирано systemd-repart, за инсталиране на ядрото и генериране на стартиращо меню — команда «bootctl link», за инсталиране на загрузчици systemd-boot — команда «bootctl install», за първоначална конфигурация на инсталираната система (например избор на локал и подредба на клавиатурата) — systemd-creds.
- В подготовка за изпълнението на изискванията на законите за интеграция на API за проверка на възрастта в ОС в БД userdb е добавено поле birthDate с дата на раждане на потребителя. Добавеното поле ще може да се използва в портала xdg-desktop-portal, който се развива за дистрибуции, и в услугата AccountsService за предоставяне на информация на приложенията за възрастовата категория на потребителя чрез D-Bus интерфейс org.freedesktop.AgeVerification1 или org.freedesktop.ParentalControls. За задаване на възрастта в утилитата homectl е добавена опция —birth-date.
- В обработчика PID1 е добавена поддръжка на подсистемите на Linux ядрото LUO (Live Update Orchestration) и KHO (Kexec Handover), позволяваща пълноценно рестартиране и обновление на ядрото без спиране на работата и без загуба на състоянието на системата, устройствата и процесите. KHO осигурява възможности за стартиране на ново ядро от старо без загуба на състоянието на системата, а LUO реализира запазването на състоянието на устройствата и оперативната памет, както и осигурява непрекъснатост на операциите, свързани с DMA и обработка на прекъсвания.
В systemd за системни и потребителски unit-ове е реализирана възможността за запазване на файловите дескриптори преди извикване на kexec и тяхното възстановяване след рестартиране на ядрото чрез kexec. В unit-ите също така могат да се създават собствени сесии LUO, съхранявани и възстановявани при изпълнение на kexec. За да се включи запазването на състоянието на хранилището на файлови дескриптори, трябва да се използва настройката FileDescriptorStorePreserve=yes. - Реализирана е подсистема systemd-imdsd, предоставяща API на базата на Varlink IPC за достъп на локални програми до услугите IMDS (Instance Metadata Service), предлагани от различни доставчици на облачни системи. IMDS позволява на виртуалните машини да получават информация за облачната среда, например, може да се получи информация за мрежовата конфигурация, географското местоположение на възела, типа CPU и размера на хранилището. В systemd-imdsd се предоставя както нискоуровневен API за достъп до отделни полета, така и високопробен интерфейс за запитвания по типови ключове, сопоставени с ключове, специфични за отделни облачни платформи. За взаимодействие с systemd-imdsd е добавен инструментът systemd-imds, позволяващ вноса на полета от IMDS в локалната система за записи.
За разпознаване на облачни платформи по информация от SMBIOS и определяне на наличната на текущия възел функционалност IMDS е добавена нова БД hwdb.d/40-imds.hwdb. Реализирано е разпознаване на облачни платформи Amazon EC2, Microsoft Azure, Google Compute Engine, Hetzner, Oracle Cloud, Scaleway, Tencent Cloud, Alibaba ECS и Vultr. Наличен е обработчик systemd-imds-generator за автоматично подставяне на услугата за получаване на данни чрез IMDS при откриване на работа под управлението на поддържана облачна платформа. Възможно е да се създават универсални изображения, поддържащи използването на IMDS при стартиране в облачни среди, но способни да работят и без IMDS. - В systemd-stub реализирана е функционалността boot secret, позволяваща да се състави ключ на базата на EFI-променлива, съхранявана в недостъпната за операционната система област и инициализирана със случайна стойност. В initrd ключът се предава чрез файл /.extra/boot-secret. Представената възможност може да е необходима за получаване на специфичен за системата случаен ключ за верифициране на процеса на зареждане или криптиране на системи без хардуерен TPM (Trusted Platform Module).
- Добавен е услугата systemd-tpm2-swtpm.service за стартиране на емулатор на TPM-чипове swtpm (Software TPM Emulator), който може да се използва за автоматично възстановяване при софтуерна реализация на TPM за защитено зареждане на системи без хардуерен TPM. Софтуерният TPM работи в потребителското пространство и не може да осигури същото ниво на защита като хардуерния TPM, но в някои ситуации е оправдано да се използва спрямо работа без TPM. Например, софтуерният TPM може да получи ключа за шифроване на дяловете чрез новата функционалност „boot secret“ и да използва за съхранение на своето състояние раздел ESP (EFI System Partition) на диска. За автоматично активиране на софтуерния TPM е предложен параметър в командния ред на ядрото systemd.tpm2_software_fallback.
- Обявен за стабилен и поставен в /usr/bin компонент systemd-sysupdate, предназначен за автоматично установяване, изтегляне и инсталиране на актуализации чрез атомарен механизъм за замяна на дялове, файлове или директории (използват се два независими дяла/файла/директории, единият от които съдържа текущия работещ ресурс, а на другия се инсталира следващото обновление, след което дяловете/файловете/директориите се разменят).
- В systemd-resolved реализирана е възможността за пренаписване или указване на нови DNS записи чрез разполагане на файлове във формат JSON в каталогите systemd/resolve/static.d/. За разлика от /etc/hosts в новите файлове може не само да се свързват IP адреси с имена на хостове, но и да се определят ресурсни DNS RR записи, различни от „A“ и „AAAA“. Освен това, в systemd-resolved са добавени настройки за размера на DNS кеша: DNSCacheSize, MulticastDNSCacheSize и LLMNRCacheSize.
- Добавена е утилита ‘storagectl’ за инспектиране на устройства за съхранение и управление на свързването на блокови устройства и файлови системи.
- В рамките на инициативата за намаляване на зависимостите в libsystemd е реализирано динамично зареждане на библиотеките libgnutls, libmicrohttpd, libcurl, libcrypto, libssl, libfdisk и libcryptsetup чрез повикване на dlopen() в ситуации, когато функциите им наистина са необходими.
- В systemd-tmpfiles е добавен флаг —inline, позволяващ задаване на директиви в командния ред без създаване на конфигурационни файлове в tmpfiles.d/ и без изпращане на настройки през STDIN. Добавен е нов тип директиви k/K за задаване възможности. Добавен е конфигурационен файл tmpfiles.d/root.conf, който задава права на достъп 0555 (-r-xr-xr-x) за коренната директория (/) с цел защита от неправилно задаване на права при динамично генериране на кореновата ФС.
- В утилитата bootctl е осигурено запазване на резервна копия на загрузчика systemd-boot и вписването на стара версия в UEFI като резервен вариант за зареждане.
- В systemd-vmspawn добавена е поддръжка за директно зареждане на ядрото без използване на UEFI фърмуер. Реализирана е опция —firmware-features за селективно включване или изключване на определени функции на фърмуерите. Добавен е режим —console=headless за стартиране на виртуалната машина без конзола и екран. Добавена е опция —image-disk-type за избор на типа на блочното хранилище, използвано в VM (virtio-blk, virtio-scsi, nvme, scsi-cd). Добавена е опция —coco (Confidential Computing) за активиране на режим на криптиране на паметта на виртуалните машини с употреба на технологията AMD SEV-SNP.
- В systemd-hostnamed и /etc/machine-info е добавена поддръжка за прикачване на произволни тагове към текущата система, използвайки параметъра Tags. Зададените тагове могат да бъдат използвани след това за селективно прилагане на настройки с проверка чрез израза ConditionMachineTag.
- Добавени са настройки EventLoopRateLimitIntervalSec и EventLoopRateLimitBurst, ограничаване на интензивността на цикъла за обработка на събития в PID1 с цел освобождаване на ресурси на CPU в случай на зацикляне.
- В управителя на услуги е реализирана настройка MinimumUptimeSec за задаване на минимално време на работа на системата (по подразбиране 15 секунди). Ако до изтичането на това време бъде инициирано изключване или рестартиране, то на приключваща стъпка се добавя съответното забавяне.
- За unit-ите са реализирани нови настройки CPUSetPartition за задаване на типа на раздела cpuset в cgroup (root, isolated, member), RestrictFileSystemAccess за разрешение на стартиране само на изпълняеми файлове, проверени по цифрова подписка с помощта на dm-verity, и CPUPressureWatch/CPUPressureThresholdSec/IOPressureWatch/IOPressureThresholdSec за получаване на известия за висока натовареност на CPU и вход/изход.
- Разширен е списъкът с метрики, предоставяни от утилитата systemd-report. Например, добавени са данни за размера на физическата памет и активните ядра на CPU, информация за съдържанието на полета SMBIOS и /etc/machine-info, информация за поддръжката на режима Confidential Computing и данни за производителя на чиповете TPM2.
- В systemd-oomd реализирана е възможността за определяне на правила за отстраняване на процеси при недостиг на памет в системата. Правилата могат да се задават в каталога /etc/systemd/oomd/rules.d/ или в service unit файлове чрез директивата OOMRule.
- В systemd-socket-proxy добавена е поддръжка за протокол PROXY, отговарящ на първата версия на протокола haproxy.
- В systemd-networkd реализиран е нов бекенд sd-dhcp-relay за DHCP реле. Настройките в секцията [DHCPServer] — BindToInterface, RelayTarget, RelayAgentCircuitId и RelayAgentRemoteId са обявени за остарели, вместо тях трябва да се използва параметър DHCPRelay в секцията [Network] и серия от нови настройки в секцията [DHCPRelay] и в файла networkd.conf. Добавена е команда networkctl dhcp-lease INTERFACE за запазване на информация за обвързване на IP адреси (DHCP lease).
- В утилита systemd-nspawn добавена е опцията —restrict-address-families, а в .nspawn файловете настройката RestrictAddressFamilies за ограничаване на използваните в контейнера адресни семейства на сокети. В бъдещи версии по подразбиране ще бъдат разрешени само семействата AF_INET, AF_INET6 и AF_UNIX.
- Поддръжката на стария формат на базата данни udev (версия 0.x) е прекратена. Актуализацията 'on the fly' от версии на systemd до версия 247 (opennet.ru) повече не се поддържа.
- При компилиране с библиотеката musl сега се изисква минимум версия musl 1.2.6.
Допълнително може да бъде отбелязано релиз проект liberated-systemd 261, развиващ fork на systemd, освободен от код, който може да се използва за следене на потребителите. В предложената версия промените се свеждат до премахването на код, добавящ в userdb поле birthDate с дата на раждане на потребителя, а в утилитовата homectl опция —birth-date за задаване на възраст.
Източник: linux.org.ru
