Выпуск системного менеджера systemd 242
12 апреля 2019 года
После двух месяцев разработки представлен релиз системного менеджера 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".
Источники
править
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.