След девет месеца разработка, беше представена версия на системния мениджър systemd 258. Основни промени: прекратяване на поддръжката на cgroups v1 и елементи за управление на системата по стил System V, нови инструменти systemd-factory-reset и systemd-pty-forward, концепция за домашни области, поддръжка на зареждане от образ на диск, получен чрез HTTP.
Сред промените в новия релийз:
- Добавен е инструментът systemd-factory-reset за иницииране или отменяне на възстановяване на настройките до фабричните условия (factory reset) при следващото зареждане. За незабавно възстановяване е добавен юнитът factory-reset-now.target. За възстановяване по време на зареждане е добавен параметър на командния ред на ядрото „systemd.factory_reset“.
- Добавена е концепцията за домашни области (home area), позволяваща задаването на подкаталози в основната домашна директория ($HOME), в които потребителят може да влиза отделно, за работа в различни работни пространства. Например, за един потребител могат да се създадат отделни области за тестване на настройки и за разработка (~\/Areas\/foo и ~\/Areas\/bar). За свързване с допълнителна област при вход е нужно да се посочи името на областта в логина, отделяйки го с символа „%“ („username%foo“) или да се използва инструментът run0 с опцията „—area“. Поддръжката на домашни области към момента е реализирана само в systemd-homed и не е налична за пълни графични сесии.
- В параметрите на командния ред на ядрото „systemd.pull“ и „rd.systemd.pull“, използвани за автоматично зареждане на виртуални машини, контейнери или разширителни образи (sysext, confext), е добавен флаг „blockdev“. Когато се посочи този флаг, зареденият образ се прикрепя към loopback устройство, което позволява директно зареждане в дискoв образ, получен чрез HTTP. Например: rd.systemd.pull=raw,machine,verify=no,blockdev:image:https:\/\/192.168.100.1:8081\/image.raw \\ root=\/dev\/disk\/by-loop-ref\/image.raw-part2
- Добавен е инструментът systemd-pty-forward, с помощта на който може да се създаде псевдотерминал („PTY“) и да се стартира процес на него, пренасочвайки всякакъв изход към оригиналния терминал, на който е стартиран инструментът.
- Премахнат е кодът, осигуряващ поддръжка на cgroups v1.
- Премахнати са елементи за управление на системата в стил System V, като инструментите itctl, runlevel и telinit, устройството \/dev\/initctl, концепцията за нива на стартиране (runlevel), unit файловете runlevel[0-6].target и възможността за управление на състоянието чрез команда init. Премахването на поддръжката на скриптове за услуги на System V е планирано за следващото издание.
- Минималните изисквания за ядрото на Linux са повишени до версия 5.4 (препоръчителна версия 5.7).
- Правата за достъп до устройствата tty/pts са променени от 0620 (-rw—w—-) на 0600 (-rw——-) за забрана на запис в чужд терминал от други потребители с една и съща група. За възстановяване на старото поведение при компилация може да се използва опцията '-Dtty-mode=0620'.
- В systemd-resolved и systemd-importd е прекратена поддръжката на библиотеките GnuTLS и libgcrypt, като криптографски бекенд остава само OpenSSL.
- В unit-файловете е добавена поддръжка на условието 'ConditionKernelModuleLoaded' за проверка на зареждането на определен модул на ядрото. Условието 'ConditionKernelVersion' е заменено с по-общата конструкция 'ConditionVersion', чрез която освен ядрото могат да се проверят версиите на systemd и glibc.
- Включена е поддръжка за потребителски квоти за дял /tmp/, разположен в tmpfs, и за /dev/shm/.
- За slice-юнити, използвани за разделяне на системата на части (app.slice, background.slice, session.slice) с цел изолация на ресурсите между различни потребителски услуги, са реализирани настройки ConcurrencySoftMax и ConcurrencyHardMax за управление на броя на активните юнити по едно и също време. Добавените възможности могат да се използват като механизъм за управление на стартирането на задачи с оглед на потреблението на ресурси, поддържащи йерархични пулове от задачи.
- В настройката ExecStart е добавена поддръжка на префикса '|', определящ стартиране чрез команден интерпретатор.
- Реализиран е API на базата на протокола Varlink, който може да се прилага за определяне на текущото състояние, списъка на юнитите и състоянието на юнитите.
- Добавен е допълнителен каталог с преднастройки (‘preset’) за системни услуги, изпълнявани в initrd, позволяващ разделяне на включването на системни услуги за хоста и initrd.
- Добавена е възможност за свързване на квоти към отделни услуги, използвайки настройките StateDirectoryQuota, StateDirectoryAccounting, CacheDirectoryQuota, CacheDirectoryAccounting, LogsDirectoryQuota и LogsDirectoryAccounting.
- В systemd-udevd добавена поддръжка на свойствата ID_NET_BRING_UP_BEFORE_JOINING_BRIDGE, ID_NET_NAME_INCLUDE_DOMAIN, ID_AV_LIGHTS. Добавен е параметърът за компилиране на ядрото „udev.trace“ и опцията „—traceu“ в утилитата devadm за трасировка на логиката на udev по време на зареждане и по време на работа. В утилитата udevadm е добавена команда „cat“ за показване на съдържанието на инсталираните файлове с правила. Осигурена е автоматична маркировка на отладъчни USB-интерфейси на Android (ADB DbC, ADB, Fastboot) за достъп от непривилегировани потребители.
- В systemd-networkd са добавени настройки IPv4DuplicateAddressDetectionTimeoutSec, UseSIP в секцията „[DHCPv6]“, MPLSRouting в секцията „[Network]“, Preference в секцията „[IPv6RoutePrefix]“, LinkLocalLearning, Locked, MACAuthenticationBypass и VLANTunnel в секцията „[Bridge]“. В клиентa DHCPv4 е добавена поддръжка на протокол BOOTP.
- В systemd-logind са добавени нови класове на сесии: „none“ за деактивиране на създаването на сесия; „user-light“ и „user-early-light“ за създаване на потребителски сесии без активиране на мениджъра на услуги за потребителя (за неинтерактивни сесии).
- В systemd-resolved е добавена поддръжка на делегирани зони („delegate zone“), позволяващи маршрутизиране на DNS заявки за определени домейни чрез зададените сървъри DNS. Осигурена е изпращането на паралелни заявки за DNS записи A и AAAA за един домейн. В resolved.conf е добавена настройка RefuseRecordTypes за определяне на блокираните типове записи, например за блокиране на записи „A“ на хостове само с IPv6.
- В командата „systemctl start“ е добавена опция „—verbose“ за показване на логовете на единиците, над които се извършва операцията.
- В systemd-boot е добавена поддръжка на две нови спецификации на зареждачи — „uki“ и „uki-url“. Втората позволява зареждане на образ UKI от външен хост по протокол HTTP. Добавена е възможност за вграждане на образи на UEFI фърмуери в образите на UKI (Unified Kernel Image). В loader.conf е добавена настройка „reboot-on-error“ за определяне на действията (перезареждане или извеждане на зареждачното меню) в случай на неуспех на избраното зареждане.
- В systemd-nspawn е добавена поддръжка на непривилегировано стартиране на образи на контейнери, съхранявани в обикновени директории.
- В systemd-importd е добавена поддръжка на образи, компресирани с алгоритма zstd (в допълнение към .xz, .gz и .bz2).
- Добавени са параметрите на командния ред на ядрото «systemd.break» и «rd.systemd.break», които позволяват вмъкването на интерактивни точки на спиране, прекъсващи зареждането в определени моменти. Налични са четири точки на спиране: «pre-udev», «pre-basic», «pre-mount» и «pre-switch-root».
- В следващото издание е предвидено прекратяване на поддръжката на каталога /run/lock/ и пакетния филтър iptables (в systemd-networkd и systemd-nspawn ще остане само поддръжка на nftables). Също така се предвиждат завишаване на изискванията за минимални версии: ядро на Linux 5.10, glibc 2.34, openssl 3.0.0, python 3.9.0.
Източник: opennet.ru
