systemd 261 и liberated-systemd 261

После трёх месяцев разработки доступен релиз системного менеджера 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 (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) к корневой директории (/) для защиты от указания неверных прав при динамическом формировании корневой ФС. - В утилите 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для сохранения дампа c информацией о привязке 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, развивающего форк systemd, избавленный от кода, который может использоваться для слежки за пользователями. В предложенном выпуске изменения сводятся к удалению кода, добавляющего в userdb поле birthDate с датой рождения пользователя, а в утилиту homectl опцию --birth-date для установки возраста.
>>> Источник: OpenNET
