Дождались — вышел релиз системного менеджера systemd 247
Разработка системного менеджера systemd 247 заняла у создателей свыше четырех месяцев, но это того стоило. В новом выпуске появился экспериментальный обработчик нехватки памяти, добавлен механизм для безопасной передачи конфиденциальных данных в сервисы, а также стабилизирована утилита system-dissect.
На самом деле, нового гораздо больше, подробности — под катом.
- Одно из самых заметных изменений — внесение в правила udev нарушающих обратную совместимость изменений. Эти изменения нужны для корректной реализации в udev uevent-событий «bind» и «unbind», внесенных в модель устройств ядра Linux 4.14. Обычно они генерируются для USB-устройств и девайсов, в которые до начала работы нужно загрузить прошивку. Для того чтобы использовать новый systemd-udevd, дистрибутивам потребуется обновить правила udev, заменив вызовы 'ACTION!=«add|change», GOTO=«xyz_end»' на 'ACTION==«remove», GOTO=«xyz_end»'.
По словам разработчиков, это необходимо из-за нарушающих совместимость изменений в ядре Linux. Теперь большое количество драйверов используют события «bind» и «unbind», для поддержки которых требуется кардинальное изменение логики обработки событий. Поэтому разработчики переработали концепцию тегов, которая позволяет помечать, а также фильтровать устройства в процессе отслеживания. Теги udev привязываются к определенному устройству и могут быть удалены, до того как удаляется устройство. В целом, тег теперь связывается не с событием устройства, а с ним самим, не меняясь после нового события.
- В journalctl добавлена опция »--image» для обращения к логам в дисковом образе. Обеспечена подсветка вывода в режиме »--output=cat».
- Кроме того, добавлена экспериментальная поддержка раннего реагирования на нехватку памяти в системе (systemd-oomd), реализованная на базе обработчика oomd, который развивает компания Facebook. Oomd при этом использует подсистему ядра PSI, которая дает возможность проанализировать в пространстве пользователя данные о времени ожидания разных ресурсов для точной оценки уровня загруженности системы и характера замедления работы.
- Для системных сервисов предложена новая логика безопасной передачи конфиденциальных данных, включая пароли, ключи шифрования, имена пользователей, сертификаты и т.п. Для передачи данных предложены такие параметры, как SetCredential и LoadCredential. Учетные данные передаются через промежуточные файлы в специализированном каталоге, который определяется через переменную окружения $CREDENTIALS_DIRECTORY.
- В JSON-профили пользователей systemd-homed разработчики добавили поддержку ключей восстановления, которые включают сгенерированные автоматически запасные парольные фразы для разблокировки учетной записи или каталогов. Это необходимо в том случае, если утерян токен FIDO2 или PKCS#11
- Также стабилизирован и размещен в /usr/bin инструмент systemd-dissect. Он занимается разбором дисковых образов в соответствии с Bootable Partition Specification. Инструмент можно использовать для монтирования в локальную директорию дисковых образов со сложной раскладкой разделов.
- Еще один положительный момент — динамическая загрузка libqrencode, libpcre2, libidn/libidn2, libpwquality и libcryptsetup с использованием dlopen (), вместо жесткого указания зависимостей в заголовке ELF.
- Для тех сервисов, которые используют параметры RootImage и RootDirectory, по умолчанию активирована настройка MountAPIVFS, включающая автоматическое подключение псевдо-ФС /proc/, /sys/ и /dev/.
- Важный апдейт — добавление нового фильтра системных вызовов »@known», который включает системные вызовы, известные на момент сборки systemd.