Systemd 259 уже не за горами, и недавно выпущенная RC1-версия даёт нам чёткое представление о том, чего ожидать от финальной версии этой наиболее широко используемой в Linux системы инициализации и менеджера служб.
Одним из наиболее значимых шагов является окончательное прекращение поддержки сценариев инициализации System V. Генераторы SysV, генератор rc-local и вспомогательные средства sysv-install будут удалены в следующей версии 260. Разработчики призывают дистрибьюторов и авторов программного обеспечения предоставлять собственные файлы юнитов.
Заметное изменение в поведении проявляется в конфигурации журнала по умолчанию. Теперь Systemd по умолчанию использует постоянное хранилище, а не переключается автоматически в зависимости от наличия /var/log/journal.
Также развивается система учёта памяти: файловая система cgroup2 монтируется с включённым отслеживанием использования HugeTLB, для чего требуется ядро не ниже 6.6. В сетевых настройках systemd-networkd и systemd-nspawn полностью отказываются от iptables и создания NAT на основе libiptc, а nftables становится единственным поддерживаемым бэкендом.
В то же время systemd-networkd добавляет параметры конфигурации домена аренды DHCP, поля имени хоста для статических аренд, метод Describe() для свойств интерфейса и хук resolve, позволяющий выполнять локальное разрешение имён для подключённых контейнеров и виртуальных машин.
Systemd-resolved получает метод Varlink DumpDNSConfiguration() и поддержку локальных хуков разрешения через сокеты, размещённые в /run/systemd/resolve.hook, что позволяет привилегированным службам влиять на результаты разрешения имён.
Кроме того, systemd-boot и systemd-stub удаляют поддержку TPM 1.2, оставляя только TPM 2.0. Политика безопасности в отношении разделов, доступных через встроенное ПО, ужесточается, поскольку разделы XBOOTLDR теперь должны использовать VFAT при автоматическом разделении, что соответствует требованиям, уже применяемым к ESP.
Во всей кодовой базе многие зависимости от общих библиотек перенесены в dlopen(), чтобы снизить обязательные требования к среде выполнения, а libcap полностью удалена в пользу внутренних реализаций. Systemd-importd полностью переключает обработку tar на libarchive и теперь поддерживает экземпляры для каждого пользователя.
Дополнительные обновления включают в себя параллельную загрузку модулей в systemd-modules-load, новые криптографические параметры в systemd-integrity-setup, расширенные возможности mountfsd, короткий флаг -W для journalctl и новый поиск UUID в userdb.
Что нового и изменилось в systemd 259
- Повышенные системные требования
- Для systemd 259 планируется повышение минимальных зависимостей: ядро Linux должно быть версии ≥ 5.10 (рекомендуется ≥ 5.14).
- Требуются также более свежие версии библиотек: glibc ≥ 2.34, OpenSSL ≥ 3.0.0, libseccomp ≥ 2.4.0, и другие.
- Это может означать, что старые дистрибутивы или системы с устаревшими компонентами могут не поддерживать systemd 259 без обновлений.
- Поддержка musl libc (экспериментальная)
- В версии 259 введена экспериментальная поддержка для использования musl libc вместо glibc.
- Это может быть важно для облегчённых систем, контейнеров или дистрибутивов, ориентированных на небольшие зависимости.
- Новый режим run0 —
--empower- Появился новый флаг
--empowerдляrun0, который запускает сессию с повышенными привилегиями без переключения на root. - При этом процессы получают полный набор «ambient capabilities», и добавляются в системную группу «empower», что позволяет, например, работать с polkit-привилегиями более безопасно.
- Такой режим — менее инвазивный способ получать привилегии, он не меняет UID, не меняет домашний каталог, и снижает риск того, что файлы будут созданы с «неправильным» владельцем.
- Однако это работает не во всех случаях — некоторые программы всё ещё проверяют UID, а не capabilities или политику polkit.
- Появился новый флаг
- Журнал systemd (journald)
- По умолчанию хранение журнала теперь в режиме persistent (то есть логи сохраняются между перезагрузками), а не «auto», как раньше.
- Это изменение может повысить удобство отладки и анализа логов в длительной перспективе.
- Изменения в systemd-udev и repart
- systemd-udevd и systemd-repart теперь более «грациозно» перезагружают таблицы разделов (re-read partition tables) на блочных устройствах.
- В systemd-repart добавлены новые параметры: можно задавать TPM-политику через
repart.d/(TPM2PCRs), а также указать binary LUKS-ключ черезKeyFile=. - Поддержка TPM 1.2 в systemd-boot удаляется, акцент делается на TPM 2.0.
- OOMKill и ManagedOOMKills счётчики
- В systemd 259 добавлены новые свойства в сервисных юнитах, позволяющие учитывать количество process kills (убийств процессов) системой из-за OOM (Out of Memory).
- Это даёт админам больше информации о том, сколько раз система «убивала» процессы, что может помочь в настройке памяти и ресурсных лимитов.
- Оптимизация библиотек и загрузки
- Многие зависимости, такие как audit, PAM, libacl, libblkid, libseccomp, libselinux, и другие, будут загружаться через
dlopen()вместо обычной динамической линковки. Это снижает «след»» systemd в контейнерах и уменьшает размер загружаемых зависимостей. - systemd-modules-load теперь загружает конфигурированные модули ядра параллельно, что может ускорить загрузку.
- Многие зависимости, такие как audit, PAM, libacl, libblkid, libseccomp, libselinux, и другие, будут загружаться через
- Изменения в проверке целостности
- systemd‑integrity-setup теперь поддерживает алгоритмы HMAC-SHA256, PHMAC-SHA256 и PHMAC-SHA512.
- Это означает усиление криптографической защиты при настройке целостности (например, для защищённых систем или устройств, где важна верификация содержимого).
- Удаление устаревших интерфейсов и функций
- Поддержка скриптов System V (init-скриптов) объявляется устаревшей и будет удалена в v260.
- Это ещё один шаг в сторону полного отказа от старых init-скриптов в пользу родных
systemdunit‑файлов.
Дополнительную информацию обо всех изменениях см. здесь.