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

После двух месяцев разработки представлен релиз системного менеджера systemd 242. Из новшеств можно отметить поддержку туннелей L2TP, возможность управления поведением systemd-logind при перезапуске через переменные окружения, поддержку расширенных загрузочных разделов XBOOTLDR для монтирования /boot, возможность загрузки с корневым разделом в overlayfs, а также большое число новых настроек для разных типов юнитов.

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

  • В systemd-networkd обеспечена поддержка туннелей L2TP;
  • В sd-boot и bootctl реализована поддержка разделов XBOOTLDR (Extended Boot Loader), предназначенных для монтирования в /boot, в дополнение к разделам ESP, монтируемым в /efi или /boot/efi. Ядра, настройки, образы initrd и EFI теперь могут загружаться как из разделов ESP, так и из разделов XBOOTLDR. Указанное изменение позволяет использовать загрузчик sd-boot в более консервативных сценариях, когда сам загрузчик размещён в ESP, а загружаемые ядра и связанные с ними метаданные вынесены в отдельный раздел;
  • Добавлена возможность загрузки с передачей ядру опции «systemd.volatile=overlay», что позволяет разместить корневой раздел в overlayfs и организовать работу поверх доступного только для чтения образа корневого каталога с записью изменений в отдельный каталог в tmpfs (изменения в такой конфигурации теряются после перезапуска). По аналогии в systemd-nspawn добавлена опция «—volatile=overlay» для использования подобной функциональности в контейнерах;
  • В systemd-nspawn добавлена опция «—oci-bundle», позволяющая использовать наборы runtime для обеспечения изолированного запуска контейнеров, соответствующих требованиям спецификации Open Container Initiative (OCI). Для использования в командной строке и nspawn-юнитах предложена поддержка различных опций, описанных в спецификации OCI, например, для исключения частей файловой системы могут использоваться настройки «—inaccessible» и «Inaccessible», а для настройки стандартных потоков вывода добавлены опции «—console» и «—pipe»;
  • Добавлена возможность управления поведением systemd-logind через переменные окружения: $SYSTEMD_REBOOT_TO_FIRMWARE_SETUP,
    $SYSTEMD_REBOOT_TO_BOOT_LOADER_MENU и
    $SYSTEMD_REBOOT_TO_BOOT_LOADER_ENTRY. При помощи данных переменных можно подключить свои обработчики процесса перезагрузки (/run/systemd/reboot-to-firmware-setup, /run/systemd/reboot-to-boot-loader-menu и
    /run/systemd/reboot-to-boot-loader-entry) или вообще отключить их (при выставлении значения в false);

  • В команду «systemctl reboot» добавлены опции «—boot-load-menu=» и
    «—boot-loader-entry=», позволяющие после перезагрузки выбрать конкретный пункт загрузочного меню или загрузочный режим;

  • Добавлена новая команда sandbox-изоляции «RestrictSUIDSGID=», использующая seccomp для запрета создания файлов с флагами SUID/SGID;
  • Обеспечено применение по умолчанию ограничений «NoNewPrivileges» и «RestrictSUIDSGID» в сервисах с включенным режимом динамической генерации идентификатора пользователя («DynamicUser»);

  • Применяемая по умолчанию в .link-файлах настройка MACAddressPolicy=persistent изменена для охвата большего числа устройств. Интерфейсы сетевых мостов, туннелей (tun, tap) и агрегированных линков (bond) не идентифицируют себя кроме как по имени сетевого интерфейса, поэтому данное имя теперь используется в качестве основы для привязки MAC и IPv4-адресов. Кроме того, добавлена настройка «MACAddressPolicy=random», которую можно использовать для привязки MAC и IPv4-адресов к устройствам в случайном порядке;
  • Генерируемые через systemd-fstab-generator юнит-файлы «.device» теперь не включают соответствующие юниты «.mount» в качестве зависимостей в секции «Wants=». Простое подключение устройства теперь не приводит к автоматическому запуску юнита для монтирования, но подобные юниты по-прежнему могут запускаться по другим причинам, например, как часть local-fs.target или как зависимость от других юнитов, зависимых от local-fs.target;
  • В команды «networkctl list/status/lldp» добавлена поддержка масок («*» и т.п.) для отсеивания определённых групп сетевых интерфейсов по части их имени;
  • Переменная окружения $PIDFILE теперь устанавливается с использованием абсолютного пути, настроенного в сервисах через параметр «PIDFile=;
  • В число резервных DNS-серверов, используемых если явно не определён основной DNS, добавлены публичные серверы Cloudflare (1.1.1.1). Для переопределения списка резервных DNS-серверов можно использовать опцию «-Ddns-servers=»;
  • При выявлении наличия контроллера USB-устройства (USB Device Controller) обеспечен автоматический запуск нового обработчика usb-gadget.target (когда система работает на периферийном устройстве USB);
  • Для unit-файлов реализована настройка «CPUQuotaPeriodSec=», определяющая период времени, относительно которого измеряется квота на процессорное время, задаваемая через настройку «CPUQuota=»;
  • Для unit-файлов реализована настройка «ProtectHostname=», запрещающая сервисам изменять информацию об имени хоста, даже при наличии соответствующих полномочий;
  • Для unit-файлов реализована настройка «NetworkNamespacePath=», позволяющая привязать пространство имён к сервисам или socket-юнитам через указание пути к файлу пространства имён в псевдо-ФС /proc;
  • Добавлена возможность отключения подстановки переменных окружения процессам, запускаемым при помощи настройки «ExecStart=», через добавление символа «:» перед командой запуска;
  • Для таймеров (юниты .timer) предложены новые флаги «OnClockChange=» и
    «OnTimezoneChange=», при помощи которых можно управлять вызовом юнита при изменении системного времени или часового пояса;

  • Добавлены новые настройки «ConditionMemory=» и «ConditionCPUs=», определяющие условия вызова юнита в зависимости от размера памяти и числа ядер CPU (например, ресурсоёмкий сервис можно запускать только если имеется необходимый объем ОЗУ);
  • Добавлен новый юнит time-set.target, принимающий локально установленное системное время, без использования сверки с внешними серверами точного времени при помощи юнита time-sync.target. Новый юнит может быть использован сервисами, которым достаточно точности не синхронизированных локальных часов;
  • В «systemctl start» и подобные команды добавлена опция «—show-transaction», при указании которой выводится сводка о всех работах, добавленных очередь из-за запрошенной операции;
  • В systemd-networkd реализовано определение нового состояния ‘enslaved’, используемого вместо ‘degraded’ или ‘carrier’ для сетевых интерфейсов, входящих в состав агрегированных линков или сетевых мостов. Для первичных интерфейсов в случае проблем с одним из составных линков добавлено состояние ‘degraded-carrier’;
  • В юниты .network добавлена опция «IgnoreCarrierLoss=» для сохранения сетевых настроек в случае обрыва связи;
  • Через настройку «RequiredForOnline=» в юнитах .network теперь можно задать минимально допустимое состояние линка, необходимое для перевода сетевого интерфейса в «online» и срабатывания обработчика systemd-networkd-wait-online;
  • В systemd-networkd-wait-online добавлена опция «—any» для ожидания готовности любого из указанных сетевых интерфейсов вместо всех, а также опция «—operational-state=» для определения состояния линка, свидетельствующего о готовности;
  • В .network юниты добавлены настройки «UseAutonomousPrefix=» и «UseOnLinkPrefix=», которые можно использовать для игнорирования префиксов при получении
    анонса от маршрутизатора IPv6 (RA, Router Advertisement);

  • В .network юниты добавлены настройки «MulticastFlood=», «NeighborSuppression=» и «Learning=» для изменения параметров работы сетевого моста, а также настройка «TripleSampling=» для изменения режима TRIPLE-SAMPLING виртуальных интерфейсов CAN;
  • В .netdev юниты добавлены настройки «PrivateKeyFile=» и «PresharedKeyFile=», при помощи которых можно указать закрытый и разделяемый (PSK) ключи для интерфейсов WireGuard VPN;
  • В /etc/crypttab добавлены опции same-cpu-crypt и submit-from-crypt-cpus, управляющие поведением планировщика при миграции между ядрами CPU работ, связанных с шифрованием;
  • В systemd-tmpfiles обеспечена обработка файла блокировки перед выполнением операций в каталогах со временными файлами, что позволяет на время выполнения определённых действий отключить работу по чистке устаревших файлов (например, при распаковке tar-архива в /tmp могут быть раскрыты очень старые файлы, которые нельзя удалять до окончания действия с ними);
  • В команде «systemd-analyze cat-config» обеспечена возможность анализа конфигурации, разнесённой на несколько файлов, например, пользовательские и системные преднастройки, содержимое tmpfiles.d и sysusers.d, правила udev и т.п.
  • В «journalctl» добавлена опция «—cursor-file=» для определения файла для загрузки и сохранения указателя позиции;
  • В systemd-detect-virt добавлено определение гипервизора ACRN и подсистемы WSL ( Windows Subsystem for Linux) для последующего ветвления при помощи условного оператора «ConditionVirtualization»;
  • Во время установки systemd (при выполнении «ninja install») прекращено создание в каталоге /etc символических ссылок на файлы systemd-networkd.service, systemd-networkd.socket,
    systemd-resolved.service, remote-cryptsetup.target, remote-fs.target,
    systemd-networkd-wait-online.service и systemd-timesyncd.service. Для создания данных файлов теперь необходимо выполнить команду «systemctl preset-all».

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.