След четири месеца разработка, е представена версия на системния мениджър systemd 248. В новото издание е осигурена поддръжка на образи за разширение на системните директории, файла с конфигурация /etc/veritytab, утилитата systemd-cryptenroll, отключване на LUKS2 с помощта на чипове TPM2 и токени FIDO2, стартиране на юнити в изолирано пространство на идентификатори 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=» за определяне на нивото на поддържаните разширения на системата.
- За юнитите е реализирана настройката 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 …’ и ‘systemctl mount-image …’.
- В настройките StandardOutput и StandardError е добавена поддръжка за указване на пътища в формата „truncate:“ за изчистване преди използване.
- В sd-bus е добавена възможност за установяване на връзка с сесията на определен потребител в локален контейнер. Например „systemctl —user -M lennart@ start quux“.
- В файловете systemd.link в секция [Link] са реализирани параметрите:
- Promiscuous — позволява на устройството да премине в режим „promiscuous“ за обработка на всички мрежови пакети, включително неадресирани на текущата система;
- TransmitQueues и ReceiveQueues за настройка на броя на опашките TX и RX;
- TransmitQueueLength за настройка на размера на опашката TX; GenericSegmentOffloadMaxBytes и GenericSegmentOffloadMaxSegment за задаване на лимити при прилагане на технологията GRO (Generic Receive Offload).
- В файловете 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'.
Източник: opennet.ru
