Леннарт Поттеринг (Lennart Poettering) представил выпуск системного менеджера systemd 217, который сочетает в себе функции системы инициализации, механизм для контроля за выполнением фоновых процессов, службу для журналирования событий и средства для управления сервисами, сеансами пользователей и подключаемыми устройствами. Для определения параметров сервисов в Systemd используется набор конфигурационных unit-файлов, вместо оформления сценариев запуска в виде shell-скриптов. Система нацелена на интенсивную параллелизацию выполнения сервисов на этапе загрузки системы, вобрав в себя лучшие черты таких систем, как launchd (Mac OS X), SMF (Solaris) и Upstart (Ubuntu, старые версии Fedora). В настоящее время на использование systemd уже перешли такие дистрибутивы, как Fedora, openSUSE, Mandriva и Arch Linux, одобрен переход дистрибутивов Debian и Ubuntu по умолчанию на systemd.
Наиболее существенные изменения:
- В состав включён демон systemd-consoled с реализацией эмулятора терминала для замены штатных консолей (kernel-console, linux-console), при сборке ядра без поддержки виртуальных терминалов (CONFIG_VT=n), т.е. позволяющий использовать kmscon в качестве реализации консоли в пространстве пользователя. В настоящее время systemd-consoled позиционируется как экспериментальная возможность, предоставляющая по одному терминалу для пользователей, в настройках которых указано "Desktop=systemd-console";
- По умолчанию включен алгоритм управления очередями ожидающих отправки пакетов, разработанного в рамках инициативы по борьбе с негативным влиянием промежуточной буферизации пакетов (Bufferbloat) сетевым борудованием. В sysctl.d/ добавлен вызов "net.core.default_qdisc = fq_codel";
- Реализовано определение контейнеров Docker в качестве отдельного типа виртуализации;
- Поддержка формата базы активных учётных записей UNIX utmp теперь может быть активирована на этапе сборки для поддержки устаревших систем;
- Добавлена обработка опции "rescue", указываемой при загрузке ядра Linux. Если данная опция установлена, то system будет загружен в режиме защиты от сбоев (rescue.target). Ранее вызов данного режима требовал нажатия 1 или указания опции ядра "systemd.unit=rescue.target";
- Добавлена обработка опции командной строки ядра "mount.usr=", "mount.usrflags=" и "mount.usrfstype=", которые обрабатываются по аналогии с опциями "root=", "rootflags=" и "rootfstype=", но для раздела /usr;
- Добавлена поддержка нового сообщения D-Bus ALLOW_INTERACTIVE_AUTHORIZATION, позволяющего организовать процесс интерактивной авторизации с использованием PolicyKit при выполнении многих привилегированных операций, включая включение и выключение юнит-файлов;
- В journalctl добавлены новые опции "-t/--identifier=" для выборки по идентификатору/тегу syslog и "--utc" для показа времени в GMT/UTC. Для отключения обрезания вывода по числу символов в строке теперь можно указать "-n/--lines=all";
- Службы теперь могут заранее уведомлять управляющий процесс о предстоящем перезапуске (RELOADING=1) или прекращении работы (STOPPING=1), что позволяет отследить и показать внутреннее состояние подконтрольного процесса, а также избежать состояния гонки, когда процесс ещё полностью не завершился, но уже закрыл соединение D-Bus;
- Пользовательские unit-ы теперь также могут загружаться из директории $XDG_RUNTIME_DIR/systemd/user/, что позволяет явно переопределить путь для ранее поддерживаемой директории /run/systemd/user;
- Добавлена поддержка завершения работы или перезагрузки в случае истечения таймаута нахождения задания в очереди запуска (JobTimeoutAction= и JobTimeoutRebootArgument=). Подобная возможность может быть задействована например для перезапуска в случае зависания на этапе загрузки или ипрекращения работы при случайном включении ноутбука в сумке и остановившегося на этапе ввода пароля доступа к зашифрованным дисковым разделам. По умолчанию сейчас инициируется завершение работы при неполном выполнении basic.target в течение 15 минут;
- Система управления пользовательскими сеансами systemd-logind теперь может быть настроена для обработки событий закрытия/открытия крышки ноутбука даже при подключении дополнительного монитора или подсоединения к док-станции (HandleLidSwitchDocked=);
- В systemd-networkd добавлена возможность указания метрик маршрутизации для маршрутов, добавленных через DHCP;
- Добавлена опция SELinuxContextFromNet=, позволяющая устанавливать контекст SELinux для сервисов активации по сокету на основе данных, предоставленных сетевым стеком;
- Прекращена поддержка средств загрузки прошивок в пространстве пользоватея, в связи с чем версия минимально поддерживаемого ядра Linux повышена до выпуска 3.7;
- Для udev-правил добавлена возможность удаления тегов для устройств при помощи опции TAG-="foobar";
- Удалена реализация технологии readahead для заполнения дискового кэша при выполнении операций чтения, так как она во многих ситуациях не даёт ожидаемого выигрыша в производительности даже для НЖМД, а также бессмыслена для SDD-накопителей;
- Протокол Password Agent добавлена поддержка запросов, при которых отображается пользовательский ввод, что полезно, например, для контроля ввода имени пользователя. Данный режим включается при запуске systemd-ask-password с опцией "--echo";
- При наличии поддержки kdbus для сервисных юнитов теперь доступна опция BusPolicy=, позволяющая привязать все сервисные процессы к специальной более защищённой шине, к которой ограничен доступ других сервисов;
- В утилите networkctl обеспечен показ файлов .network и .link, задействованных для определённого сетевого интерфейса;
- В утилиту systemctl добавлена поддержка новых команд "add-wants" и "add-requires" для упрощения задействования в юнитах специфичных целей;
- Удалена утилита "multi-seat-x", так как её функциональность теперь интегрирована в X Server 1.16;
- В команду "udevadm hwdb --update" добавлена поддержка опции "--usr" для размещения перестроенной базы оборудования в разделе /usr, вместо /etc;
- В .time-юниты добавлена возможность указания строкового определения периодов "semi-annually", "quarterly" и "minutely" в дополнение к ранее доступным "anually" и "hourly".