Леннарт Поттеринг (Lennart Poettering) представил релиз системного менеджера systemd 198, примечательный добавлением утилит bootctl, systemd-activate и kernel-install, поддержкой SSL в systemd-journal-gatewayd, возможностью управлять ограничением ресурсов на лету, поддержкой переопределения опций unit-файлов через создание отдельных файлов в специальной директории, возможностью использования одного загрузочного раздела для разных дистрибутивов.
Systemd сочетает в себе функции системы инициализации, механизм для контроля за выполнением фоновых процессов, службу для журналирования событий и средства для управления сервисами, сеансами пользователей и подключаемыми устройствами. Для определения параметров сервисов в Systemd используется набор конфигурационных unit-файлов, вместо оформления сценариев запуска в виде shell-скриптов. Система нацелена на интенсивную параллелизацию выполнения сервисов на этапе загрузки системы, вобрав в себя лучшие черты таких систем, как launchd (Mac OS X), SMF (Solaris) и Upstart (Ubuntu, старые версии Fedora). В настоящее время на использование systemd уже перешли такие дистрибутивы, как Fedora, openSUSE, Mandriva и Arch Linux.
Из наиболее интересных новшеств можно отметить:
- Добавлена поддержка переопределения отдельных элементов конфигурации unit-файлов или дополнения unit-файлов, через создание дополнительных файлов в ассоциированной с сервисом директории. Указанная возможности позволяет изменять параметры без непосредственного изменения unit-файла. Дополнительные файлы конфигурации создаются как "/etc/systemd/systemd/foobar.service.d/*.conf" и загружаются после обработки unit-файла, т.е. могут дополнять или переопределять их. Ранее для внесения изменений в unit-файлы приходилось копировать нужный unit из директории /usr/lib/systemd/system/ в /etc/systemd/system/ и там вносить в него изменения или создавать новый файл в /etc/systemd/system/ и подключать в нему существующий unit через директиву ".include";
- Обеспечена возможность динамического изменения на лету параметров ограничения ресурсов на базе cgroups для всех unit-файлов. Например, без остановки работы сервиса можно поменять ограничения командой, подобной "systemctl set-cgroup-attr foobar.service cpu.shares 2000". После выполнения команды изменение будет сохранено на диск и продолжит действовать после перезапуска сервиса;
- В nspawn в список включаемых для контейнеров capabilities добавлено назначение CAP_AUDIT_WRITE и CAP_AUDIT_CONTROL, что позволяет упростить загрузку в изолированном контейнере немодифицироанной системы Fedora, которые по прежнему нужно загружать с передачей ядро параметра audit=0 из-за наблюдаемых проблем в работе системы аудита;
- В nspawn добавлены новые опции "--bind=" и "--bind-ro=" для монтирования внутри контейнера заданных внешних директорий. Кроме того, nspawn теперь монтирует в контейнере собственную ФС devpts, что позволяет избежать утечки pty-устройств из основной системы;
- В systemd обеспечено чтение EFI-переменных с информацией о производительности процесса загрузки, предоставляемой прошивками. После загрузки указанную информацию можно проанализировать с использованием утилиты "systemd-analyze". Новая возможность пока работает только при использовании загрузчика Gummiboot, но в булушем может быть реализована и для других загрузчиков;
- Добавлен новый генератор, который автоматически монтирует ESP-разделы (EFI System Partition) в каталог /boot;
- В состав включена новая утилита bootctl с реализацией интерфейса для выполнения некоторых операций с загрузчиком. В настоящее время bootctl имеет статус экспериментальной разработки для начального ознакомления. В дальнейшем не исключено создание демона, подобного timedated, localed и hostnamed, который можно использовать в GUI-конфигураторах для перечисления доступных опций загрузки и инициирования служебного режима загрузки прошивки.
- Новая утилита kernel-install, предназначенная для установки образов ядра в соответствии со спецификацией Boot Loader;
- Новая утилита systemd-activate, которая может быть использована для тестирования и отладки активации демонов через сокет;
- Добавлена подборка unit-файлов для упрощения адаптации использования systemd в образах initrd. Данные unit-ы добавляют в systemd минимально необходимую логику из различных реализаций initrd;
- Прекращена поддержка устаревших или специфичных для отдельных дистрибутивов имён LSB-свойств, определяемых при разборе init-скриптов: $x-display-manager, $mail-transfer-agent, $mail-transport-agent, $mail-transfer-agent, $smtp, $null. Так как systemd большее не поддерживает скрипты ранней стадии инициализации, то также игнорируются свойства $syslog и $local_fs;
- Добавлена возможность сброса отдельных списочных параметров конфигурации unit-файлов, через присвоение им пустого значения. Например, ранее присвоение Environment=FOO=BAR приводило при каждом использовании к добавлению новых переменных в список переменных окружения. Указав "Environment=" теперь можно предварительно очистить список переменных окружения. Указанная возможность полезна в сочетании с представленной выше системой переопределения конфигурации ".d/*.conf", так как может использоваться для переопределения заданных в unit-файлах списков переменных;
- В systemd-journal-gatewayd добавлена поддержка SSL. Systemd-journal-gatewayd теперь выполняется под отдельным непривилегированным пользователем systemd-journal-gateway:systemd-journal-gateway;
- В файлах окружения, таких как /etc/locale.conf, теперь поддерживается слияние строк, перенесённых с использованием обратного слэша ("\");
- В утилиту systemctl добавлена новая команда "list-dependencies" для рекурсивного отображения зависимостей unit-файла;
- Добавлена команда "systemctl unlock-sessions", позволяющая разом разблокировать экраны всех пользовательских сеансов, примерно также как выполняется общая блокировка через "systemctl lock-sessions";
- Существенно расширен набор для тестирования unit-файлов;
- В команду udevadm hwdb добавлена опция "--root=", позволяющая указать корневую директорию, относительно которой выполняются операции;
- Компонент systemd-bootchart перелицензирован и теперь поставляется под лицензией LGPLv2.1+ как и весь пакет;
- Поддержка Policykit теперь может быть включена/отключена на этапе сборки;
- Утилита systemd-analyze переписана на языке Си и вобрала в себя функциональность команды "systemctl dot";
- При запуске "systemctl status" без параметров теперь отображается общий статус всех активных и сбойных unit-ов;
- Python API расширен модулем для чтения файлов с журналом;
- В journalctl добавлены опции: "--reverse" (-r) для показа содержимого журнала с обратной сортировкой (новые записи сверху); "--pager-end" (-e) для перехода в конец журнала без листания вывода в less; "--user-unit=" - аналог "--unit=", отображающий только пользовательские unit-ы;
- Файлы с журналами теперь размещаются под отдельной группой "systemd-journal", созданной исключительно для организации доступа к журналам. Ранее владельцем файлов с журналами была группа "adm", которая используется не только для доступа к логам, теперь доступ "adm" и wheel" к файлам /var/log/journal назначается через ACL, а непосредственным владельцев является группа "systemd-journal";
- В systemd-detect-virt добавлена поддержка определения гостевых систем Xen в режиме паравиртуализации;
- Файловая система pstore теперь монтируется по умолчанию, если она доступна в системе;
- В дополнение к правилам SELinux и IMA, на ранней стадии загрузки теперь осуществляется и загрузка правил SMACK.