Выпуск системного менеджера systemd 248
31 марта 2021 года
После четырёх месяцев разработки представлен релиз системного менеджера systemd 248. В новом выпуске обеспечена поддержка образов для расширения системных каталогов, файла конфигурации /etc/veritytab, утилиты systemd-cryptenroll, разблокирования LUKS2 при помощи чипов TPM2 и токенов FIDO2, запуска unit-ов в изолированном пространстве идентификаторов IPC, протокола B.A.T.M.A.N. для mesh-сетей, бэкенда nftables для systemd-nspawn. Стабилизирован systemd-oomd.
Основные изменения:
- Реализована концепция образов расширения системы (System Extension), которые можно использовать для расширения иерархии каталогов /usr/ и /opt/, и добавления дополнительных файлов во время работы, даже если указанные каталоги примонтированы в режиме только для чтения. При подключении образа расширения системы его содержимое накладывается на иерархию /usr/ и /opt/ при помощи OverlayFS.
Для подключения, отключения, просмотра и обновления образов системных расширений предложена новая утилита systemd-sysext. Для автоматического подключения уже установленных образов во время загрузки добавлен сервис systemd-sysext.service. В файл os-release добавлен параметр "SYSEXT_LEVEL=" для определения уровня поддерживаемых расширений системы.
- Для unit-ов реализована настройка ExtensionImages, которую можно использовать для привязки образов расширения системы к иерархии пространства имён ФС отдельных изолированных сервисов.
- Добавлен файл конфигурации /etc/veritytab для настройки верификации данных на блочном уровне при помощи модуля dm-verity. Формат файла аналогичен /etc/crypttab - "имя_раздела устройство_для_данных устройство_для_хэшей хэш_проверки_корня опции". Для настройки поведения dm-verity для корневого устройства добавлен параметр командной строки ядра systemd.verity.root_options.
- В systemd-cryptsetup добавлена возможность извлечения URI токена PKCS#11 и зашифрованного ключа из заголовка метаданных LUKS2 в формате JSON, что позволяет интегрировать сведения об открытии зашифрованного устройства в само устройство без привлечения внешних файлов.
- В systemd-cryptsetup предоставлена поддержка разблокирования шифрованных разделов LUKS2 при помощи чипов TPM2 и токенов FIDO2, помимо ранее поддерживаемых токенов PKCS#11. Загрузка libfido2 осуществляется через dlopen(), т.е. наличие проверяется на лету, а не в форме жёстко привязанной зависимости.
- В /etc/crypttab для systemd-cryptsetup добавлены новые опции "no-write-workqueue" и "no-read-workqueue" для включения синхронной обработки ввода/вывода, связанного с шифрованием и расшифровкой.
- В утилиту systemd-repart добавлена возможность активации шифрованных разделов при помощи чипов TPM2, например, для создания шифрованного раздела /var при первой загрузке.
- Добавлена утилита systemd-cryptenroll для привязки токенов TPM2, FIDO2 и PKCS#11 к разделам LUKS, а также для открепления и просмотра токенов, привязки запасных ключкй и задания пароля для доступа.
- Добавлен параметр PrivateIPC, позволяющий в unit-файле настроить запуск процессов в изолированном пространстве IPC со своими отдельными идентификаторами и очередью сообщений. Для подключения unit-а к уже созданному пространству идентификаторов IPC предложена опция IPCNamespacePath.
- Добавлены настройки ExecPaths и NoExecPaths, позволяющие применить флаг noexec к отдельным частям файловой системы.
- В systemd-networkd добавлена поддержка mesh-протокола B.A.T.M.A.N. ("Better Approach To Mobile Adhoc Networking), позволяющего создавать децентрализованные сети, каждый узел в которых связан через соседние узлы. Для настройки предложены секция [BatmanAdvanced] в .netdev , параметр BatmanAdvanced в файлах .network и новый тип устройства "batadv".
- Стабилизирована реализация механизма раннего реагирования на нехватку памяти в системе systemd-oomd. Добавлена опция DefaultMemoryPressureDurationSec для настройки времени ожидания освобождения ресурса перед воздействием на unit. Systemd-oomd использует подсистему ядра PSI (Pressure Stall Information) и позволяет выявить начало возникновения задержек из-за нехватки ресурсов и выборочно завершить работу ресурсоёмких процессов на стадии, когда система ещё не находится в критическом состоянии и не начинает интенсивно урезать кэш и вытеснять данные в раздел подкачки.
- Добавлен параметр командной строки ядра - "root=tmpfs", позволяющий примонтировать корневой раздел во временном хранилище, размещённом в оперативной памяти при помощи Tmpfs.
- Параметр в /etc/crypttab, определяющий файл с ключом, теперь может указывать на сокеты с типом AF_UNIX и SOCK_STREAM. Ключ в этом случае должен отдаваться при подсоединении к сокету, что, например, может применяться для создания сервисов, динамически отдающих ключи.
- Запасное имя хоста (fallback) для использования системным менеджером и systemd-hostnamed теперь может быть задано двумя путями: через параметр DEFAULT_HOSTNAME в os-release и через переменную окружения $SYSTEMD_DEFAULT_HOSTNAME. В systemd-hostnamed также реализована обработка указания "localhost" в имени хоста и добавлена возможность экспорта имени хоста, а также свойств "HardwareVendor" и "HardwareModel" через DBus.
- Блок с выставляемыми переменными окружения теперь может быть настроен через новую опцию ManagerEnvironment в system.conf или user.conf, а не только через командную строку ядра и настройки unit-файлов.
- На стадии компиляции предоставлена возможность использования для запуска процессов системного вызова fexecve() вместо execve() для сокращения задержки между проверкой контекста безопасности и его применением.
- Для unit-файлов добавлены новые условные операции ConditionSecurity=tpm2 и ConditionCPUFeature для проверки наличия устройств TPM2 и отдельных возможностей CPU (например, ConditionCPUFeature=rdrand можно использовать для проверки поддержки процессором операции RDRAND).
- Для доступных ядер реализована автоматическая генерация таблиц системных вызовов для фильтров seccomp.
- Добавлена возможность подстановки новых привязок монтирования (bind mounts) в существующие пространства точек монтирования (mount namespace) сервисов, без перезапуска сервисов. Подстановка выполняется командами 'systemctl bind <unit> <path>…' и 'systemctl mount-image <unit> <image>…'.
- В настройки StandardOutput и StandardError добавлена поддержка указания путей в форме "truncate:<path>" для очистки перед использованием.
- В sd-bus добавлена возможность установки соединения с сеансом заданного пользователя внутри локального контейнера. Например "systemctl --user -M lennart@ start quux".
- В файлах systemd.link в секции [Link] реализованы параметры:
- Promiscuous, позволяющего перевести устройство в режим "promiscuous" для обработки всех сетевых пакетов, включая не адресованные текущей системе;
- TransmitQueues и ReceiveQueues для настройчи числа очередей TX и RX;
- TransmitQueueLength для настройки размера очереди TX; GenericSegmentOffloadMaxBytes и
GenericSegmentOffloadMaxSegment для задания лимитов для технологии GRO (Generic Receive Оffload).
- В файлах systemd.network добавлены новые настройки:
[Network] RouteTable для выбора таблицы маршрутизации;
- [RoutingPolicyRule] Type для типа маршрутизации ("blackhole, "unreachable", "prohibit");
- [IPv6AcceptRA] RouteDenyList и
RouteAllowList для списков разрешённых и запрещённых анонсов маршрутов;
- [DHCPv6] UseAddres для игнорирования выдаваемого DHCP адреса;
- [DHCPv6PrefixDelegation] ManageTemporaryAddress;
- ActivationPolicy для определения политики в отношении активности интерфейса (всегда поддерживать в состоянии UP или DOWN или разрешить пользователю менять состояния командой "ip link set dev").
- В файлы systemd.netdev добавлены опции VLAN] Protocol, IngressQOSMaps,
EgressQOSMaps и [MACVLAN] BroadcastMulticastQueueLength для настройки обработки пакетов VLAN.
- Прекращено монтирование каталога /dev/ в режиме noexec, так как это приводит к конфликту при использовании исполняемого флага с файлами /dev/sgx. Для возвращения старого поведения можно использовать настройку NoExecPaths=/dev.
- Права доступа к файлу /dev/vsock изменены на 0o666, а файлы /dev/vhost-vsock
и /dev/vhost-net перемещены к группу kvm.
- База идентификаторов оборудования расширена USB-устройствами для чтения отпечатков пальцев, корректно поддерживающих переход в спящий режим.
- systemd-resolved добавлена поддержка выдачи ответов на DNSSEC-запросы через stub-резолвер. Локальные клиенты могут проводить DNSSEC-валижацию самих себя, а внешние проксируются в неизменном виде родительскому DNS-серверу.
- В resolved.conf добавлена опция CacheFromLocalhost, при установке которой systemd-resolved будет использовать кэшировние даже для обращений к DNS-серверу по адресу 127.0.0.1 (по умолчанию кэширование подобных запросов отключено для исключения двойного кэширования).
- В systemd-resolved добавлена поддержка RFC-5001 NSID в локальном DNS-резолвере, позволяющая клиентам отличить взаимодействие с локальным резолвером и другим сервером DNS.
- В утилите resolvectl реализована возможность вывода сведений об источнике поступления данных (локальный кэш, запрос по сети, ответ локального обработчика) и применении шифрования при передаче данных. Для управления процессом определения имени предложены опции --cache, --synthesize, --network, --zone,
--trust-anchor и --validate.
- В systemd-nspawn добавлена поддержка настройки межсетевого экрана при помощи nftables в дополнение к существующей поддержке iptables. В настройке IPMasquerade в systemd-networkd добавлена возможность использования бэкенда на основе nftables.
- В systemd-localed добавлена поддержка вызова locale-gen для генерации недостающих локалей.
- В различные утилиты добавлены опции --pager/--no-pager/--json= для выключения/выключения режима постраничного просмотра и вывода в формате JSON. Добавлена возможность установки числа используемых в терминале цветов через переменную окружения SYSTEMD_COLORS ("16" или "256").
- Объявлены устаревшими сборка с раздельными иерархиями каталогов / и /usr, и поддержка cgroup v1.
- Основная ветка в Git переименована из 'master' в 'main'.
Источники[править]
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии[править]
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.