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

После пяти месяцев разработки представлен релиз системного менеджера systemd 246. В новом выпуске реализована поддержка заморозки unit-ов, возможность верификации образа корневого диска по цифровой подписи, поддержка сжатия журнала и core-дампов с использованием алгоритма ZSTD, возможность разблокировки переносимых домашних каталогов при помощи токенов FIDO2, поддержка разблокировки разделов Microsoft BitLocker через /etc/crypttab, выполнено переименование BlackList в DenyList.

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

  • Добавлена поддержка cgroup-контроллера freezer, при помощи которого можно остановить работу процессов и временно высвободить некоторые ресурсы (CPU, ввод/вывод и потенциально даже память) для выполнения других задач. Управление заморозкой и разморозкой unit-ов осуществляется при помощи новой команды «systemctl freeze» или через D-Bus.
  • Добавлена поддержка верификации образа корневого диска по цифровой подписи. Проверка производится при помощи новых настроек в сервисных юнитах: RootHash (корневой хэш для верификации дискового образа, указанного через опцию RootImage) и RootHashSignature (цифровая подпись в формате PKCS#7 для корневого хэша).
  • В обработчике PID 1 реализована возможность автоматической загрузки предкомпилированных правил AppArmor (/etc/apparmor/earlypolicy) на начальном этапе загрузки.
  • Добавлены новые настройки unit-файлов: ConditionPathIsEncrypted и AssertPathIsEncrypted для проверки размещения указанного пути на блочном устройстве, в котором используется шифрование (dm-crypt/LUKS), ConditionEnvironment и AssertEnvironment для проверки переменных окружения (например, выставляемых PAM или при настройке контейнеров).
  • Для юнитов *.mount реализована настройка ReadWriteOnly, запрещающая монтировать раздел в режиме только для чтения, если не удалось примонтировать его для чтения и записи. В /etc/fstab данный режим настраивается при помощи опции «x-systemd.rw-only».
  • Для юнитов *.socket добавлена настройка PassPacketInfo, включающая добавление ядром дополнительных метаданных для каждого пакета, читаемого из сокета (включает режимы IP_PKTINFO, IPV6_RECVPKTINFO и NETLINK_PKTINFO для сокета).
  • Для сервисов (юниты *.service) предложены настройки CoredumpFilter (определяет секции памяти, которые следует включать в core-дампы) и TimeoutStartFailureMode/TimeoutStopFailureMode (определяет поведение (SIGTERM, SIGABRT или SIGKILL) при наступлении таймаута при запуске или остановке сервиса).
  • В большинстве опций добавлена поддержка указания шестнадцатеричных значений, заданных при помощи префикса «0x».
  • В различных параметрах командной строки и файлах конфигурации, связанных с настройкой ключей или сертификатов, реализована возможность указания пути к unix-сокетам (AF_UNIX) для передачи ключей и сертификатов через обращения к IPC-сервисам, когда нежелательно размещать сертификаты на незашифрованных дисковых хранилищах.
  • Добавлена поддержка шести новых спецификаторов, которые можно использовать в unit-ах , tmpfiles.d/, sysusers.d/ и других конфигурационных файлах: %a для подстановки текущей архитектуры, %o/%w/%B/%W для подстановки полей с идентификаторами из /etc/os-release и %l для подстановки короткого имени хоста.
  • В unit-файлах прекращена поддержка синтаксиса «.include», который был объявлен устаревшим 6 лет назад.
  • В настройках StandardError и StandardOutput прекращена поддержка значений «syslog» и «syslog-console», которые будут автоматически сконвертированы в «journal» и «journal+console».
  • Для автоматически создаваемых точек монтирования на основе tmpfs (/tmp, /run, /dev/shm и т.п.) обеспечено выставление лимитов на размер и число inode, соответствующий 50% от размера ОЗУ для /tmp и /dev/shm, и 10% от ОЗУ для всех остальных.
  • Добавлены новые параметры командной строки ядра: systemd.hostname для выставления имени хоста на начальной стадии загрузки, udev.blockdev_read_only для ограничения всех связанных с физическими накопителями блочных устройств режимом только для чтения (для выборочной отмены можно использовать команду «blockdev —setrw»), systemd.swap для отключения автоматической активации раздела подкачки, systemd.clock-usec для установки системных часов в микросекундах, systemd.condition-needs-update и systemd.condition-first-boot для переопределения проверок ConditionNeedsUpdate и ConditionFirstBoot.
  • По умолчанию обеспечена установка sysctl fs.suid_dumpable в значение 2 («suidsafe»), разрешающее сохранение core-дампов для процессов с флагом suid.
  • В БД оборудования из ChromiumOS заимствован файл /usr/lib/udev/hwdb.d/60-autosuspend.hwdb, включающий сведения о PCI и USB-устройствах, поддерживающих автоматический переход в спящий режим.

  • В networkd.conf добавлена настройка ManageForeignRoutes, при включении которой systemd-networkd начнёт управлять всеми маршрутами, настроенными другими утилитами.
  • В файлы .network добавлена секция «[SR-IOV]» для настройки сетевых устройств с поддержкой SR-IOV (Single Root I/O Virtualization).
  • В systemd-networkd в секцию «[Network]» добавлена настройка IPv4AcceptLocal для разрешения приёма на сетевом интерфейсе пакетов, пришедших с локальным исходным адресом.
  • В systemd-networkd добавлена возможность настройки дисциплин приоритизации трафика HTB через секции [HierarchyTokenBucket] и [HierarchyTokenBucketClass], «pfifo» через [PFIFO], «GRED» через [GenericRandomEarlyDetection], «SFB» через [StochasticFairBlue], «cake» через [CAKE], «PIE» через [PIE], «DRR» через [DeficitRoundRobinScheduler] и [DeficitRoundRobinSchedulerClass], «BFIFO» через [BFIFO], «PFIFOHeadDrop» через [PFIFOHeadDrop], «PFIFOFast» через [PFIFOFast], «HHF» через [HeavyHitterFilter], «ETS» через [EnhancedTransmissionSelection], «QFQ» через [QuickFairQueueing] и [QuickFairQueueingClass].
  • В systemd-networkd в секцию [DHCPv4] добавлена настройка UseGateway для отключения применения информации о шлюзе, полученной через DHCP.
  • В systemd-networkd в секции [DHCPv4] и [DHCPServer] добавлена настройка SendVendorOption для установки и обработки дополнительных опций производителя.
  • В systemd-networkd в секции [DHCPServer] реализован новый набор опций EmitPOP3/POP3, EmitSMTP/SMTP и EmitLPR/LPR для добавления информации о серверах POP3, SMTP и LPR.
  • В systemd-networkd в файлах .netdev в секции [Bridge] появилась настройка VLANProtocol для выбора используемого протокола VLAN.
  • В systemd-networkd в файлах .network в секции [Link] реализована настройка Group для управления группой линков.
  • Настройки BlackList переименованы в DenyList (для обеспечения обратной совместимости обработка старого имени сохранена).
  • В systemd-networkd добавлена большая порция настроек, связанных с IPv6 и DHCPv6.
  • В networkctl добавлена команда «forcerenew» для принудительного обновления всех привязок адресов (lease).
  • В systemd-resolved в настройке DNS появилась возможность указания номера порта и имени хоста для верификации сертификата DNS-over-TLS. В реализации DNS-over-TLS добавлена поддержка проверки SNI.
  • В systemd-resolved добавлена возможность настройки перенаправления однокомпонентных DNS-имён (single-label, из одного имени хоста).

  • В systemd-journald обеспечена поддержка применения алгоритма zstd для сжатия больших полей в журналах. Проведена работа по защите от возникновении коллизий в хэш-таблицах, применяемых в журналах.
  • В journalctl при выводе сообщений лога добавлены кликаемые URL со ссылками на документацию.
  • В journald.conf добавлена настройка Audit для управления включением аудита в процессе инициализации systemd-journald.
  • В systemd-coredump добавлена возможность сжатия core-дампов при помощи алгоритма zstd.
  • В systemd-repart добавлена настройка UUID для назначения UUID созданному разделу.
  • В сервисе systemd-homed, обеспечивающем управление переносимыми домашними каталогами, добавлена возможность разблокировки домашних каталогов при помощи токенов FIDO2. В бэкенд шифрования разделов LUKS добавлена поддержка автоматического возвращения пустых блоков файловой системы при завершении сеанса. Добавлена защита от двойного шифрования данных, если определено, что для раздела /home в системе уже применяется шифрование.
  • В /etc/crypttab добавлены настройки: «keyfile-erase» для удаления ключа после использования и «try-empty-password» для попытки разблокировки раздела с пустым паролем до запроса пароля у пользователя (полезно для установки зашифрованных образов с назначением пароля после первой загрузки, а не во время установки).
  • В systemd-cryptsetup во время загрузки реализована поддержка разблокировки разделов Microsoft BitLocker при помощи /etc/crypttab. Также добавлена возможность чтения ключей для автоматической разблокировки разделов из файлов /etc/cryptsetup-keys.d/‹volume›.key и /run/cryptsetup-keys.d/‹volume›.key.
  • Добавлен генератор systemd-xdg-autostart-generator для создания unit-файлов из файлов автозапуска .desktop.
  • В «bootctl» добавлена команда «reboot-to-firmware».
  • В systemd-firstboot добавлены опции: «—image» для указания дискового образа для загрузки, «—kernel-command-line» для инициализации файла /etc/kernel/cmdline, «—root-password-hashed» для задания хэша пароля root и «—delete-root-password» для удаления пароля root.

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