След три месеца разработка пускането на системния мениджър .
Основни промени:
- Добавена поддръжка на контролера на ресурсите cpuset, базирана на cgroups v2, предоставящ механизъм за свързване на процеси към определени CPU (настройка „AllowedCPUs“) и NUMA-узли за памет (настройка „AllowedMemoryNodes“);
- Добавена поддръжка за зареждане на настройки от EFI-променливата SystemdOptions за конфигурация на systemd, което позволява настройване на поведението на systemd в ситуации, когато е трудно да се променят параметрите на командния ред на ядрото и конфигурацията от диска се чете твърде късно (например, когато е нужно да се настроят опции, свързани с иерархията на cgroup). За задаване на променливата в EFI може да се използва командата ‘bootctl systemd-efi-options’;
- В юнитите е добавена поддръжка за зареждане на настройки от директориите „{unit_type}.d/“, свързани с типове юнити (например, „service.d/“), които могат да се използват за добавяне на настройки, обхващащи всички файлове на този тип юни;
- За сервизните юнити е добавен нов режим на изолация sandbox, ProtectKernelLogs, който позволява забрана на достъпа на програмата до лог-бъфера на ядрото, достъпен чрез системния повик syslog (не бъркайте с едноименния API, предоставян от libc). В случай на активиране на режима достъпът на приложението до /proc/kmsg, /dev/kmsg и CAP_SYSLOG ще бъде блокиран;
- За юнитите е предоставена настройка RestartKillSignal, позволяваща да се преопредели номерът на сигнала, използван за спиране на процеса по време на изпълнението на перезапуск на задачите (може да се промени поведението при спиране на процеса на етапа на подготовка за повторно стартиране);
- Командата „systemctl clean“ е адаптирана за работа с юнити на сокети, монтиране и подкачване (socket, mount, swap);
- На ранния етап на зареждане са деактивирани ограниченията за интензивността на извеждане на съобщения от ядрото чрез повикването printk, което позволява натрупването на по-пълни логи за хода на зареждане на етапа, когато съ хранилището за логове все още не е свързано (логът се натрупва в кръговия буфер на ядрото). Настройките на лимитите за printk от командния ред на ядрото имат по-висок приоритет и позволяват надграждане на поведението на systemd. Програмите на systemd, които директно извеждат лог в /dev/kmsg (това се прави само на ранния етап на зареждане), използват отделни вътрешни ограничения за защита от запълване на буфера;
- В утилитата systemctl е добавена команда ‘stop —job-mode=triggering’, позволяваща спиране както на посочения в командния ред юнит, така и на всички юнити, които могат да го извикат;
- Информацията за състоянието на юнита вече включва данни за извикващите и извикваните юнити;
- Осигурена е възможността за използване на настройката „RuntimeMaxSec“ в scope-юнитите (по-рано се прилагаше само в service-юнитите). Например, „RuntimeMaxSec“ сега може да се прилага за ограничаване на времето на PAM-сеансите чрез създаване на scope-юнит.
за потребителския профил. Ограничението за време може да бъде зададено и чрез опцията systemd.runtime_max_sec в параметрите на PAM модула pam_systemd; - Добавена е нова група системни повиквания «@pkey», която улеснява добавянето на системни повиквания, свързани с защитата на паметта, в белите списъци за ограничаване на контейнери и услуги;
- В systemd-tmpfiles е добавен флаг «w+» за запис в режим на допълване на файла;
- В изхода на systemd-analyze са добавени данни за съответствието на конфигурацията на паметта на ядрото с настройките на systemd (например, ако някоя трета програма е променила параметри на ядрото);
- В systemd-analyze е добавена опция «—base-time», при указване на която календарните данни се изчисляват относно времето, посочено в тази опция, а не спрямо текущото системно време;
- В «journalctl —update-catalog» е осигурено постоянството на следването на елементите в изхода (полезно за организиране на повторяеми сборки);
- Добавена е възможност за задаване на подразбираща се стойност за настройката «WatchdogSec», използвана в услугите на systemd. На етапа на компилация основната стойност може да бъде определена чрез опцията «-Dservice-watchdog» (ако е зададена празна стойност, watchdog ще бъде деактивиран);
- Добавена е опция за компилация «-Duser-path» за надписване на стойността на $PATH;
- В утилитата systemd-id128 е добавена опция «-u» («—uuid») за изкарване на 128-битови идентификатори в UUID (канонично представяне на UUID);
- За компилация вече е необходим libcryptsetup с версия поне 2.0.1.
Промени, свързани с мрежовата конфигурация:
- В systemd-networkd е добавена поддръжка за повторна конфигурация на линка на лето, за което в networkctl са добавени командите «reload» и «reconfigure DEVICE…» за презареждане на настройките и повторна конфигурация на устройствата;
- В systemd-networkd е прекратено създаването на маршрути по подразбиране за местни линкове IPv4 с адреси от интранет 169.254.0.0/16 (). По-рано автоматичното създаване на маршрути по подразбиране за подобни линкове водеше до непредвидимо поведение и проблеми с маршрутизацията в някои случаи. За възобновяване на старото поведение следва да се използва настройката «DefaultRouteOnDevice=yes». Подобно на това е прекратено назначаването на локални IPv6 адреси, ако локалната маршрутизация IPv6 за линка не е включена;
- В systemd-networkd при свързване в безжични мрежи в ad-hoc режим по подразбиране се реализира прилагането на конфигурация с локална адресация за линка;
- Добавени са параметри RxBufferSize и TxBufferSize за настройка на размера на приемния и изпращащия буфер на мрежовия интерфейс;
- В systemd-networkd е реализирано обявяване на допълнителни IPv6 маршрути, регулирани чрез опции Route и LifetimeSec в секцията «[IPv6RoutePrefix]»;
- В systemd-networkd е добавена възможност за настройка на маршрути «next hop» с помощта на опции «Gateway» и «Id» в секцията «[NextHop]»;
- В systemd-networkd и networkctl за DHCP е осигурено обновление на IP адреси (leases) в реално време, реализирано с командата 'networkctl renew';
- systemd-networkd е осигурил нулиране на DHCP конфигурацията при рестартиране (за запазване на настройките следва да се използва параметър KeepConfiguration). Стойността на настройката SendRelease по подразбиране е променена на 'true';
- В клиента DHCPv4 е осигурена употребата на стойността на опцията OPTION_INFORMATION_REFRESH_TIME, предадена от сървъра. За запитване към сървъра за специфични опции е предложен параметър 'RequestOptions', а за изпращане на опции към сървъра — 'SendOption'. За настройка на типа IP услуга от DHCP клиента е добавен параметър 'IPServiceType';
- За подстановката на DHCPv4-сървера на списъка със SIP (Session Initiation Protocol) сървъри са добавени параметрите 'EmitSIP' и 'SIP'. От страна на клиента, приемането на параметри SIP от сървъра може да бъде включено с настройката 'UseSIP=yes';
- В клиента DHCPv6 е добавен параметър 'PrefixDelegationHint' за запитване на адресен префикс;
- В .network файловете е осигурена поддръжка за съвпадение на безжични мрежи по SSID и BSSID, например, за свързване с името на точката за достъп и MAC адреса. Стойностите на SSID и BSSID се показват в изхода на networkctl за безжични интерфейси. Допълнително е добавена възможност за съвпадение по типа на безжичната мрежа (параметър WLANInterfaceType);
- В systemd-networkd е добавена възможност за настройка на дисциплините на опашките за управление на трафика с новите параметри Parent,
NetworkEmulatorDelaySec, NetworkEmulatorDelayJitterSec,
NetworkEmulatorPacketLimit и NetworkEmulatorLossRate,
NetworkEmulatorDuplicateRate в секцията '[TrafficControlQueueingDiscipline]'; - В systemd-resolved е осигурена проверка на IP адресите в сертификатите при компилация с GnuTLS.
Промени, свързани с udev:
- В systemd-udevd е премахнат 30-секунден тайм-аут за принудително завършване на зависващи обработчици. Systemd-udevd сега изчаква завършването на обработчиците, за които 30 секунди е било недостатъчно за нормалното приключване на операциите в големи инсталации (например, тайм-аутът може да прекрати инициализацията на драйвера по време на превключване на монтиран дял за кореновата файловата система). При използване на systemd, тайм-аутът, който systemd-udevd ще изчака преди да излезе, може да бъде зададен с настройка TimeoutStopSec в systemd-udevd.service. При стартиране без systemd, тайм-аутът се регулира от параметъра udev.event_timeout;
- За udev е добавена програмата fido_id, която идентифицира токени FIDO CTAP1
(‘U2F’)/CTAP2 въз основа на данни за предишната им употреба и извежда необходимите променливи на средата (програмата позволява да се избегне необходимостта от външни бели списъци на всички известни токени, използвани по-рано); - Реализирана е автоматична генерация на udev правила autosuspend за устройства от белия списък, импортиран от Chromium OS (промената позволява разширяване на приложението на режимите за спестяване на енергия за допълнителни устройства);
- В udev е добавена нова настройка „CONST{key}=value“, която позволява директно извършване на съпоставки на стойности на системни константи без стартиране на отделни обработвачи за проверка. В момента се поддържат само ключовете „arch“ и „virt“;
- Осигурено е отваряне на CDROM в неексклузивен режим при изпълнение на операцията за запитване на поддържаните режими (промяната решава проблеми с достъпа до CDROM и намалява риска от прекъсване на програми за запис на диск, които не използват ексклузивен режим на достъп).
Източник: opennet.ru
