systemd 214

11 июня был представлен очередной релиз системного менеджера systemd, совмещающего в себе функции системы инициализации, обратно совместимой с SysV и LSB, ведения журнала и управления сессиями пользователей. systemd основан на модели зависимостей (в противовес событийной модели), производит отслеживание процессов запущенных сервисов при помощи механизма cgroups ядра Linux, поддерживает механизмы сокет- и dbus-активации и предоставляет удобный декларативный синтаксис unit-файлов для описания демонов и других сущностей, что позволяет производить агрессивную параллелизацию при запуске и остановке сервисов.

В рамках проекта также разрабатывается ряд легковесных приложений и демонов, выполняющих второстепенные, но распространённые задачи по управлению системой — от настройки подсистемы VT (systemd-vconsole-setup) до управления сетью (systemd-networkd) и профилирования загрузки (systemd-bootchart).

Основные изменения:

Демоны systemd-networkd, systemd-resolved и systemd-bus-proxyd теперь запускаются не от имени root’а и сбрасывают максимум привилегий. Файл resolv.conf, генерируемый systemd-resolved, теперь находится в /run/systemd/resolve. Убрана зависимость от библиотеки libattr, поскольку требуемый функционал уже значительное время предоставляется библиотекой glibc. Код совместимости с System V init и LSB был вынесен из PID 1 в отдельный генератор unit-файлов. Обнаружение виртуализации (systemd-detect-virt) теперь работает без CAP_SYS_PTRACE. systemd-networkd теперь поддерживает создание виртуальных Ethernet-интерфейсов (veth), а также GRE- и VTI-туннелей. systemd-networkd больше не пытается подгрузить модули, требуемые для некоторых типов туннелей, если ядро не делает этого автоматически. Если в вашем случае это так (ядро недостаточно новое), предлагается использовать /etc/modules-load.d для принудительной загрузки этих модулей. В секции [Service] юнит-файлов добавлены опции ProtectedHome= и ProtectedSystem=, позволяющие запретить процессам сервиса запись в /home и / соответственно. В секции [Socket] юнит-файлов добавлены опции SocketUser=, SocketGroup=, RemoveOnStop= и Symlinks=, предназначение которых очевидно из названия. Для опции Restart= в секции [Service] добавлено новое значение on-abnormal, инструктирующее systemd перезапускать сервис только в случаях падения, таймаута запуска или срабатывания сторожевого таймера, но не в случае завершения с ненулевым кодом возврата.Рекомендуется использовать Restart=on-abnormal или Restart=on-failure для всех долгоживущих сервисов. В systemd-tmpfiles было добавлено действие C (копирование файлов или директорий), а действие m (установка прав доступа и владения) теперь эквивалентно действию z (установка прав доступа, владения и контекста SELinux с поддержкой выбора файлов по маске). Добавлена первичная поддержка перестроения /var при запуске системы, что в конечном итоге должно позволить запускать контейнеры, имея только немодифицируемый образ /usr и tmpfs в качестве корневой ФС (т. н. stateless system).Сопутствующий функционал добавлен в systemd-nspawn (ключ --tmpfs=<путь>) и systemd-tmpfiles (уже упомянутое действие C). Изменения, касающиеся udev:

Во время выполнения действий, касающихся файлов блочных устройств, udev теперь блокирует эти файлы при помощи flock (LOCK_SH|LOCK_NB). Пока файл блочного устройства заблокирован, например, с помощью flock (LOCK_EX), udev будет игнорировать все события для этого устройства — предполагается, что этот механизм будет задействован приложениями разметки дисков. Если файл блочного устройства был открыт для записи, его закрытие вызовет повторное сканирование таблицы разделов и (при необходимости) генерацию событий класса change для файлов устройства и всех его разделов. Файлы устройств /dev/fd* теперь принадлежат группе disk, а не floppy.  poettering, systemd

©  Linux.org.ru