Релиз системного менеджера systemd 209

20 февраля 2014 года

После почти пяти месяцев разработки Леннарт Поттеринг (Lennart Poettering) представил релиз системного менеджера systemd 209, примечательный обеспечением полноценной поддержки kdbus, включением в состав нового компонента systemd-networkd для настройки параметров сети, большим числом новых опций и API. Новый выпуск ориентирован в первую очередь на наращивание функциональности и содержит большую порцию нового кода, поэтому он требует дополнительной стабилизации и не рекомендуется для включения в состав веток дистрибутивов с длительным временем поддержки. В ближайшее время с интервалом в несколько недель планируется выпустить несколько корректирующих выпусков, устраняющих выявленные проблемы.

Systemd сочетает в себе функции системы инициализации, механизм для контроля за выполнением фоновых процессов, службу для журналирования событий и средства для управления сервисами, сеансами пользователей и подключаемыми устройствами. Для определения параметров сервисов в Systemd используется набор конфигурационных unit-файлов, вместо оформления сценариев запуска в виде shell-скриптов. Система нацелена на интенсивную параллелизацию выполнения сервисов на этапе загрузки системы, вобрав в себя лучшие черты таких систем, как launchd (Mac OS X), SMF (Solaris) и Upstart (Ubuntu, старые версии Fedora). В настоящее время на использование systemd уже перешли такие дистрибутивы, как Fedora, openSUSE, Mandriva и Arch Linux, одобрен переход дистрибутивов Debian и Ubuntu по умолчанию на systemd.

Основные улучшения:

  • Полноценная поддержка работы с использованием сервиса kdbus, реализованного на уровне ядра и не требующего запуска традиционного демона DBus, выполняемого на уровне пользователя. Для работы задействована новая библиотека sd-bus с реализацией универсальной прослойки для организации обмена сообщениями, способной работать как поверх kdbus, так и с использованием DBus. Библиотека libdbus исключена из числа обязательных зависимостей.

Поддержка kdbus интегрирована непосредственно в процесс, обслуживающий PID 1. При включении работы с использованием kdbus появляется поддержка нового типа юнитов ".busname", которые позволяют использовать технику активации по запросу с шины kdbus (запуск обработчика при поступлении связанного с ним имени шины), работающую по аналогии с юнитами .socket" (активация по сокету). Для преобразования классических файлов с параметрами активации по шине dbus1 в юниты .busname и .service добавлен специальный генератор. Для включения работы с использованием kdbus требуется сборка systemd с опцией "--enable-kdbus". Поддержка классического DBus сохранена и пока остаётся рекомендованной по умолчанию.

Напомним, что в рамках проекта Kdbus развивается надёжная, быстрая и безопасная система обмена сообщениями, поддерживающая доставку сообщений как в мультикаст-режиме (от одного отправителя к группе получателей), так и в режиме точка-точка. Функциональность Kdbus выходит за рамки DBus, но позволяет создать реализации DBus поверх рассматриваемой подсистемы ядра, не требующие запуска в пространстве пользователя отдельного демона D-Bus. Kdbus пока не входит в состав основного ядра Linux и ожидается не раньше ядра 3.15. Для тестирования рекомендуется использовать свежий срез git-репозитория kdbus.

  • Новый компонент "systemd-networkd", предназначенный для унификации компонентов дистрибутивов, используемых для настройки параметров сети (скрипты /etc/network, /etc/sysconfig/network, /etc/sysconfig/network-scripts/ifcfg-* и т.п.). Сервис systemd-networkd реализован в форме фонового процесса и может выполняться параллельно с традиционными скриптами и демонами настройки сети. Настройка systemd-networkd производится через создание файлов конфигурации /etc/systemd/network/*.network.

Из поддерживаемых в настоящее время возможностей отмечаются средства для настройки VLAN, агрегирования интерфейсов (bonding) и сетевых мостов. Поддерживается настройка параметров локальных сетевых интерфейсов как через статические правила, так и через DHCP. Средства для интеграции с интерактивными конфигураторами сети относятся к планам на будущее, поэтому область использования "systemd-networkd" пока ограничена настройкой сети для initrd, контейнеров, встраиваемых систем и серверов.

При выборе файла конфигурации для текущего устройства используется логика сходная с выбором ".link"-файлов, при которой осуществляется линейный разбор файлов в алфавитном порядке и применение первого подходящего условиям файла конфигурации. В отличие от файлов ".link", для категории ".network" доступна возможность сопоставления по именам сетевых интерфейсов, учёта состояния линка и привязки обработчиков горячего подключения интерфейсов по маске. Например, можно обойтись одним конфигурационным блоком для автоматического добавления в сетевой мост всех имеющихся Ethernet-интерфейсов.

Пример файла конфигурации:


[Match]
MACAddress=
Path=
Driver=
Type=
Name=

[Network]
Description=

[IP]
Gateway=192.168.1.1
Address=label at 192.168.1.23/24
Address=fe80::9aee:94ff:fe3f:c618/64

<pre>

  • Ранее разрозненные компоненты libsystemd-journal.so, libsystemd-id128.so, libsystemd-login и libsystemd-daemon объединены в одну общую библиотеку libsystemd.so, что позволило заметно сократить дублирование кода в разных частях systemd и избавиться от цикличных зависимостей. На уровне экспортируемых символов новая библиотека полностью соответствует старым библиотекам. При указании опции "--enable-compat-libs" предусмотрена возможность сборки заглушек, транслирующих старые библиотечные вызовы в libsystemd.so;
  • Добавлена новая программа "systemd-socket-proxyd", которую можно использовать в качестве двунаправленного прокси для TCP-сокетов. В частности, программа будет полезна для обеспечения поддержки активации по сокету в сервисах, которые сами по себе не предусматривают возможность такой активации, в том числе для запуска виртуальных машин.
  • Добавлены новые утилиты для сохранения/восстановления состояния rfkill и подсветки клавиатуры при завершении работы/загрузке;
  • В udev добавлена новая конструкция SECLABEL{} для привязки к файлам устройств специальных меток безопасности (security label). В настоящее время поддерживается только SECLABEL{selinux}, но в будущем ожидается поддержка и других фреймворков;
  • В udev реализована новая схема настройки атрибутов сети на основе файлов /etc/systemd/network/*.link. В данных файлах теперь допустимо сопоставление по MAC-адресу, пути файла устройства, имени и типу устройства с применением атрибутов с правилами наименования, скорости линка, MTU, duplex-режимам , Wake-on-LAN, MAC-адресом или правилами назначения MAC-адреса;
  • В базу данных оборудования udev добавлена информация о SDIO-устройствах;
  • Новые API: sd-event.h, sd-rntl.h, sd-dhcp-client.h, sd-resolve.h, sd-bus.h, sd-memfd.h, sd-rtnl.h и sd-utf8.h;
  • В утилиту journalctl добавлена опция "--list-boots" для вывода списка недавних загрузок с данными о времени загрузки и идентификаторах;
  • В утилиты systemctl, loginctl, timedatectl, busctl, systemd-run и т.п. добавлена опция "-M" для прямого (без SSH) соединения с определённым локальным изолированным контейнером, созданным при помощи libvirt-lxc или nspawn;
  • В systemd-run и systemd-analyze добавлена опция "-H" для соединения с внешним хостом по SSH, что может использоваться, например, для поставки в очередь работ на удалённых хостах;
  • В machinectl добавлены команды "login" и "reboot" для вызова getty login в контейнере или перезагрузки контейнера;
  • В systemctl добавлена команда "list-timers" для вывода списка установленных таймер-юнитов (аналог cron) и времени их следующего срабатывания. В таймер-юнитах добавлена поддержка значений "yearly" и "annually" в блоке OnCalendar= для определения срабатывания раз в год, а также настройка AccuracySec= для управления точностью вызова (по умолчанию 1min).
  • В systemctl добавлена команда "cat" для показа полной конфигурации юнита, т.е. содержимого базового юнита и юнита с изменениями;
  • В systemd-nspawn добавлены опции для запуска контейнера с привязкой к меткам SELinux, определения специфичных переменных окружения, отключения использования отдельного пространства идентификаторов процессов, переноса сетевого интерфейса в контейнер;
  • В /etc/systemd/system.conf добавлены новые директивы для задания используемых по умолчанию таймаутов для юнитов и лимитов на время запуска;
  • Во все фоновые процессы добавлена логика отслеживания зависаний (watchdog);
  • Организовано автоматическое включение вывода статуса процесса загрузки, если загрузка застопорилась, что позволяет пользователю оценить причину задержки.

Источники править


 
 
Creative Commons
Эта статья содержит материалы из статьи «Релиз системного менеджера systemd 209», опубликованной OpenNET и распространяющейся на условиях лицензии Creative Commons Attribution (CC BY) — указание автора, источник и лицензию.
 
Эта статья загружена автоматически ботом NewsBots в архив и ещё не проверялась редакторами Викиновостей.
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.

Комментарии

Викиновости и Wikimedia Foundation не несут ответственности за любые материалы и точки зрения, находящиеся на странице и в разделе комментариев.