Выпуск systemd 217 c реализацией консоли в пространстве пользователя

Леннарт Поттеринг (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»; По умолчанию включен алгоритм управления очередями ожидающих отправки пакетов fq_codel (Fair Queuing Controlled Delay), разработанный в рамках инициативы по борьбе с негативным влиянием промежуточной буферизации пакетов (Bufferbloat) сетевым оборудованием. В sysctl.d/ добавлен вызов «net.core.default_qdisc = fq_codel»; Реализовано определение контейнеров Docker в качестве отдельного типа виртуализации; Поддержка формата базы активных учётных записей UNIX utmp теперь может быть активирована на этапе сборки для поддержки устаревших систем; Добавлена обработка опции «rescue», указываемой при загрузке ядра Linux. Если данная опция установлена, то systemd будет загружен в режиме защиты от сбоев (rescue.target). Ранее вызов данного режима требовал нажатия 1 или указания опции ядра «systemd.unit=rescue.target»; Добавлена обработка опций командной строки ядра «mount.usr=», «mount.usrflags=» и «mount.usrfstype=», которые обрабатываются по аналогии с опциями «root=», «rootflags=» и «rootfstype=», но для раздела /usr; Добавлена поддержка нового сообщения D-Bus ALLOW_INTERACTIVE_AUTHORIZATION, позволяющего организовать процесс интерактивной авторизации с использованием PolicyKit при выполнении многих привилегированных операций, включая включение и выключение юнит-файлов; Добавлена поддержка завершения работы или перезагрузки в случае истечения таймаута нахождения задания в очереди запуска (JobTimeoutAction= и JobTimeoutRebootArgument=). Подобная возможность может быть задействована например для перезапуска в случае зависания на этапе загрузки или ипрекращения работы при случайном включении ноутбука в сумке и остановившегося на этапе ввода пароля доступа к зашифрованным дисковым разделам. По умолчанию инициируется завершение работы при неполном выполнении basic.target в течение 15 минут; Службы теперь могут заранее уведомлять управляющий процесс о предстоящем перезапуске (RELOADING=1) или прекращении работы (STOPPING=1), что позволяет отследить и показать внутреннее состояние подконтрольного процесса, а также избежать состояния гонки, когда процесс ещё полностью не завершился, но уже закрыл соединение D-Bus; В journalctl добавлены новые опции »-t/--identifier=» для выборки по идентификатору/тегу syslog и »--utc» для показа времени в GMT/UTC. Для отключения обрезания вывода по числу символов в строке теперь можно указать »-n/--lines=all»; Пользовательские unit-ы теперь могут загружаться из директории $XDG_RUNTIME_DIR/systemd/user/, что позволяет явно переопределить путь для ранее поддерживаемой директории /run/systemd/user; Система управления пользовательскими сеансами 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».

© OpenNet