Выпуск системного менеджера systemd 244

После трёх месяцев разработки представлен релиз системного менеджера systemd 244.

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

  • Добавлена поддержка контроллера ресурсов cpuset на базе cgroups v2, предоставляющего механизм для привязки процессов к определённым CPU (настройка «AllowedCPUs») и NUMA-узлам памяти (настройка «AllowedMemoryNodes»);
  • Добавлена поддержка загрузки настроек из EFI-переменной SystemdOptions для конфигурации systemd, что позволяет настраивать поведение systemd в ситуации, когда проблематично изменить параметры командной строки ядра, а конфигурация с диска читается слишком поздно (напирмер, когда нужно настроить опции, связанные с иерархией cgroup). Для установки переменой в EFI можно использовать команду 'bootctl systemd-efi-options';
  • В юниты добавлена поддержка загрузки настроек из каталогов »{unit_type}.d/», привязанных к типам юнитов (например, «service.d/»), которые могут применяться для добавления настроек, охватывающих сразу все файлы юнитов данного типа;
  • Для сервисных юнитов добавлен новый режим sandbox-изоляции ProtectKernelLogs, позволяющий запретить доступ программы к лог-буферу ядра, доступному через системный вызов syslog (не путать с одноимённым API, предоставляемым в libc). В случае активации режима доступ приложения к /proc/kmsg, /dev/kmsg и CAP_SYSLOG будет заблокирован;


  • Для юнитов преложена настройка RestartKillSignal, позволяющая переопределить номер сигнала, используемого для завершения процесса в ходе выполнения перезапуска задач (можно изменить поведение остановки процесса на стадии подготовки к повторному запуску);
  • Команда «systemctl clean» адаптирована для применения с юнитами сокетов, монтирования и подкачки (socket, mount, swap);
  • На ранней стадии загрузки отключены ограничения на интенсивность вывода ядром сообщений через вызов printk, что позволяет накапливать более полные логи о ходе загрузки на стадии, когда хранилище для логов ещё не подключено (лог накапливается в кольцевом буфере ядра). Настройка лимитов для printk из командной строки ядра имеет больший приоритет и позволяет переопределить поведение systemd. Программы systemd, напрямую выводящие лог в /dev/kmsg (это делается только на раннем этапе загрузки), используют отдельные внутренние ограничения для защиты от забивания буфера;
  • В утилиту systemctl добавлена команда 'stop --job-mode=triggering', позволяющая остановить как указанный в командной строке юнит, так и все юниты, которые могут его вызвать;
  • Информация о состоянии юнита теперь включает сведения о вызывающих и вызываемых юнитах;
  • Обеспечена возможность использования настройки «RuntimeMaxSec» в scope-юнитах (ранее применялась только в service-юнитах). Например, «RuntimeMaxSec» теперь может применяться для ограничения времени PAM-сеансов через создание scope-юнита для учётной записи пользователя. Ограничение по времени также может задаваться через опцию systemd.runtime_max_sec в параметрах PAM-модуля pam_systemd;
  • Добавлена новая группа системных вызовов »@pkey», при ограничении контейнеров и сервисов упрощающая добавление в белые списки системных вызовов, связанных с защитой памяти;
  • В systemd-tmpfiles добавлен флаг «w+» для записи в режиме дополнения файла;


  • В вывод systemd-analyze добавлены сведения о соответствии конфигурации памяти ядра с настройками systemd (например, если какая-то сторонняя программа изменила параметры ядра);
  • В systemd-analyze добавлена опция »--base-time», при указании которой календарные данные рассчитываются относительно времени, указанного в данной опции, а не относительно текущего системного времени;
  • В «journalctl --update-catalog» обеспечено постоянство следования элементов в выводе (полезно для организации повторяемых сборок);
  • Добавлена возможность указания значения по умолчанию для настройки «WatchdogSec», используемой в сервисах systemd. На этапе компиляции базовое значение может быть определено через опцию »-Dservice-watchdog» (если выставлено пустое значение, watchdog будет отключён);
  • Добавлена сборочная опция »-Duser-path» для переопределения значения $PATH;
  • В утилиту systemd-id128 добавлена опция »-u» (»--uuid») для вывода 128-разрядных идентификаторов в UUID (каноническое представление UUID);
  • Для сборки теперь требуется libcryptsetup как минимум версии 2.0.1.




Изменения, связанные с настройкой сети:

  • В systemd-networkd добавлена поддержка переконфигурирования линка на лету, для чего в networkctl добавлены команды «reload» и «reconfigure DEVICE…» для перезагрузки настроек и переконфигурирования устройств;
  • В systemd-networkd прекращено создания маршрутов по умолчанию для локальных линков IPv4 с интранет адресами 169.254.0.0/16 ((Link-local). Ранее автоматическое создание маршрутов по умолчанию для подобных линков приводило к непредвиденному поведению и проблемам с маршрутизацией в некоторых случаях). Для возвращения старого поведения следует использовать настройку «DefaultRouteOnDevice=yes». Аналогично прекращено назначение локальных адресов IPv6, если локальная маршрутизация IPv6 для линка не включена;
  • В systemd-networkd при подключении в беспроводным сетям в режиме ad-hoc, по умолчанию реализовано применени конфигурации с локальной для линка адресацией (link-local);
  • Добавлены параметры RxBufferSiz и TxBufferSize для настройки размера принимающего и отправляющего буферов сетевого интерфейса;
  • В systemd-networkd реализовано объявление дополнительных маршрутов IPv6, регулируемая через опции Route и LifetimeSec в секции »[IPv6RoutePrefix]»;
  • systemd-networkd добавлена возможность настройки маршрутов «next hop» при помощи опций Gateway и Id в секции »[NextHop]»;
  • В systemd-networkd и networkctl для DHCP обеспечено обновление привязок IP-адресов (leases) на лету, реализуемое командой 'networkctl renew';
  • systemd-networkd обеспечен сброс конфигурации DHCP при перезапуске (для сохранения настроек следует использовать параметр KeepConfiguration). Значение настройки SendRelease по умолчанию изменено на «true»;
  • В клиенте DHCPv4 обеспечено использование значение опции OPTION_INFORMATION_REFRESH_TIME, переданное сервером. Для запроса у сервера специфичных опций предложен параметр «RequestOptions», а для отправки серверу опций — «SendOption». Для настройки типа IP-сервиса DHCP-клиентом добавлен параметр «IPServiceType»;
  • Для подстановки DHCPv4-серверм списка серверов SIP (Session Initiation Protocol) добавлены параметры «EmitSIP» и «SIP». На стороне клиента, приём от сервера параметров SIP может быть включён при помощи настройки «UseSIP=yes»;
  • В клиент DHCPv6 добавлен параметр «PrefixDelegationHint» для запроса адресного префикса;
  • В файлах .network обеспечена поддержка сопоставления беспроводных сетей по SSID и BSSID, например, для привязки к имени точки доступа и MAC-адресу. Значения SSID и BSSID отображаются в выводе networkctl для беспроводных интерфейсов. Дополнительно добавлена возможность сопоставления по типу беспроводной сети (параметр WLANInterfaceType);
  • В systemd-networkd добавлена возможность настройки дисциплин организации очередей для управления трафиком при помощи новых параметров Parent, NetworkEmulatorDelaySec, NetworkEmulatorDelayJitterSec, NetworkEmulatorPacketLimit и NetworkEmulatorLossRate, NetworkEmulatorDuplicateRate в секции »[TrafficControlQueueingDiscipline]»;
  • В systemd-resolved обеспечена проверка IP-адресов в сертификатах при сборке с GnuTLS.




Изменения, связанные с udev:

  • В systemd-udevd удалён 30-секундный таймаут для принудительного завершения зависших обработчиков. Systemd-udevd теперь дожидается завершения работы обработчиков, для которых 30 секунд было недостаточным для штатного завершения операций в крупных установках (например, таймаут мог прервать инициализацию драйвера в процессе переключения примонтированного раздела для корневой ФС). При использовании systemd таймаут, который systemd-udevd будет ждать перед выходом, может быть задан через настройку TimeoutStopSec в systemd-udevd.service. При запуске без systemd таймаут регулируется параметром udev.event_timeout;
  • Для udev добавлена программа fido_id, которая идентифицирует токены FIDO CTAP1 («U2F»)/CTAP2 на основании данных об их прошлом использовании и выводит необходимые переменные окружения (программа позволяет обойтись без внешних белых списков всех известных токенов, которые использовались ранее);
  • Реализована автоматическая генерация udev-правил autosuspend для устройств из белого списка, импортированного из Chromium OS (изменение позволяет расширить применение энергосберегающих режимов для дополнительных устроств);
  • В udev добавлена новая настройка «CONST{key}=value», позволяющая нарямую выполнять сопоставления значений системных констант без запуска отдельных обработчиков для проверки. В настоящее время поддерживаются только ключи «arch» и «virt»;
  • Обеспечено открытие CDROM в неэксклюзивном режиме при выполнении операции запроса поддерживаемых режимов (изменение решает проблемы доступа программ к CDROM и уменьшает риск прерывания программ записи на диск, не применяющих эксклюзивный режим доступа).



Источник: http://www.opennet.ru/opennews/art.shtml? num=51953

© OpenNet