След три месеца разработка е наличен релиз на системен мениджър systemd 261. Ключови промени: подготовка за поддръжка на API за проверка на възраст, поддръжка на подсистеми Kexec Handover и Live Update Orchestration за рестартиране без загуба на състояние, подсистема IMDS (Instance Metadata Service), функционалност за защита на зареждането на системи без физически TPM (Trusted Platform Module), компонент 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 (Услуга за метаданни на инстанцията), предоставяни от различни доставчици на облачни системи. 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 за задаване capabilities. Добавен е конфигурационен файл 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 секунди). Ако преди изтичането на това време бъде инициирано завършване на работата или рестартиране, на завършващия етап се добавя съответна забавяне.
- За единиците са реализирани нови настройки 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/ или в сервизни единици чрез директивата 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). Актуализация на лето с версии systemd до издание 247 (opennet.ru) вече не се поддържа.
- При компилиране с библиотеката musl вече е необходимо поне издание musl 1.2.6.
Допълнително може да се отбележи релиз проекта liberated-systemd 261, развиващ fork на systemd, освободен от код, който може да се използва за наблюдение на потребителите. В предложеното издание промените се свеждат до премахване на кода, който добавя в userdb полето birthDate с дата на раждане на потребителя, а в утилитата homectl опция —birth-date за задаване на възраст.
Източник: linux.org.ru
