След три месеца разработка, наличен е релизът на системния мениджър 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 за системни и потребителски юнити е реализирана възможност за запазване на файлови дескриптори преди извикването на kexec и възстановяването им след перезареждане на ядрото чрез kexec. В юнитите също така може да се създават собствени сесии 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’ за задаване на capabilities. Добавен е конфигурационен файл tmpfiles.d/root.conf, задаващ права за достъп 0555 (-r-xr-xr-x) към коренната директория (/) с цел защита от неправилно задаване на права при динамично генериране на кореновата FS.
- В утилитата 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/ или в сервисни 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) е прекратена. Обновяването на летен принцип от версии systemd до издание 247 вече не се поддържа.
- При компилиране с библиотеката musl вече е необходимо поне издание musl 1.2.6.
Допълнително можем да отбележим излизането на проекта liberated-systemd 261, развиващ fork на systemd, освободен от код, който може да се използва за следене на потребителите. В предложеното издание промените се състоят в премахване на кода, добавящ в userdb полето birthDate с рождената дата на потребителя, а в утилитата homectl опцията «—birth-date» за настройка на възрастта.
Източник: opennet.ru
