Знаменательные инновации
- В рамках systemd реализована библиотека-клиент dbus. Соответственно, весь код переписан. Апстрим dbus больше не является внешней зависимостью systemd. Выполнено в рамках процесса перехода на kdbus.
- Kdbus приведен к состоянию «можно пробовать». Однако, до релиза использовать не стоит - не реализованы policy, так что не безопасно.
- Новые возможности:
- systemd-networkd - базовая конфигурация сети (dhcp/link/bridge/bond/vlan). Уже можно использовать в статических конфигурациях. Клиент и реконфигурация пока не реализованы. Изначально было запланировано использование в initrd.
- systemd-socket-proxyd - прокси для сервисов, в которых не реализована поддержка socket активации, но зачем-то необходима.
- systemd-backlight/systemd-rfkill - сохранение/восстановление состояния подсведки/rfkill при загрузке/завершении работы. Новый параметр systemd.restore_state=[0|1] выключает/включает поведение.
- В udev новая схема поднятия линков на сетевых интерфейсах. Аттрибуты указываются в /etc/systemd/network/*.link файлах. Можно матчить интерфейсы по MAC адресу, sysfs, имени драйвера, имени интерфейса. Можно устанавливать WoL, скорость, дуплекс, MAC адрес итп. Внимание нелюбителям корявых имен сетевых интерфейсов! Логика переехала в 80-net-setup-link.rules, будте бдительны
Мелкие изменения
- Глобальные параметры таймаутов по-умолчанию конфигурируются через /etc/systemd/system.conf
- journalctl. Новый параметр --list-boots, --unit= поддерживает glob.
- systemctl, новые параметры и команды
- cat — выводит юнит и drop-in
- list-timers — выводит список активных .timer юнитов
- reboot — принимает дополнительные параметры для reboot()
- --job-mode= приходит на замену --fail, --irreversible, --ignore-dependencies
- list-* команды теперь поддерживают glob маски
Внутренние изменения
- %h, %s, %U больше не доступны для системного режима systemd
- systemd больше не предоставляет статические файлы для /usr/share/dbus-1/interfaces
- Новый флаг tmpfiles "--boot". Правила с суффиксом "!" выполняются только при наличии этого флага. (Основной потребитель - /run/nologin)
- Добавлено опциональное использование libseccomp вместо собственной реализации seccomp фильтров.
- Добавлено SystemCallErrorNumber= (для использования совместно с SystemCallFilter=), для конфигурации возвращаемого значения ошибки, при использовании запрещенных syscalls, вместо принудительного завершения процесса.
- SystemCallArchitectures= для ограничения неиспользуемых системных вызовов на данной архитектуре.
- Все systemd компоненты тепрь снабжены вотчдогом
- Поддержка SECLABEL{} в udev
- Экспорт состояния загрузки SELinux политики через dbus
- Для юнитов с User= устанавливается корректная переменная окружения $SHELL
- Новый режим KillMode= mixed. Отправляет SIGTERM $MAINPID, оставшимся - SIGKILL
- Для юнитов с OnCalendar= добавлены параметры «yearly» и «annually»
- Точность таймера для .timer юнитов конфигурируется с AccuracySec= (1min по-умолчанию)
- Параметр JoinsNamespaceOf= для подключения юнита к приватному пространству другого юнита (PrivateNetwork=, PrivateTmp=)
- Параметр PrivateDevices= для предоставления доступа лишь к /dev/{null,urandom,zero}
- logind API пополнено вызовами для определения, является ли сессия удаленной и получения хоста/пользователя
- fstab генератор научился расставлять зависимости. FsckPassNo= убран.
- В базу udev добавлена информация о SDIO устройствах
- При чтении юнитов, systemd будет уведомлять о подозрительных правах доступа
- Реализованы/выделены компоненты:
- sd-bus - облегченное API для работы через kdbus/dbus
- sd-event - минимальное API для eventloop через epoll
- sd-rtnl - минимальное апи для L2 конфигурации
- sd-dhcp - DHCPv4 клиент (для systemd-networkd)
- sd-resolve - асинхронный враппер поверх NSS, не использующий сигналы.
- libsystemd-{daemon,journal,login,id128}.so объеденены в libsystemd.so
Изменения в компонентах, которыми никто кроме разработчиков systemd не пользуется
- Основные утилиты (.*ctl) получили флаг -M для подключения к локальным контейнерам.
- systemd-run/systemd-analyze получили флаг -H для подключения через ssh
- machinectl, новые команды: login, reboot
- nspawn получает поддержку --setenv= (для установление переменных окружения в контейнере), --drop-capability= (для понижения привелегий), SELinux меток, kdbus доменов, и еще 100500 разных фич, которые мне лень тут писать.
- logind поддерживает псевдо-VT переключения для устройств, не поддерживающих VT
- Для scope юнитов добавлено свойство «Controller». Потенциально можнет быть использовано как shutdown hook.
>>> Подробности