След три месеца разработка релиз на системен мениджър .
Основни промени:
- Добавена поддръжка на контролера за ресурси cpuset на базата на cgroups v2, предоставящ механизъм за привързване на процеси към определени CPU (настройка „AllowedCPUs“) и NUMA-узли на паметта (настройка „AllowedMemoryNodes“);
- Добавена е поддръжка за зареждане на настройки от EFI-променлива SystemdOptions за конфигурацията на systemd, което позволява настройване на поведението на systemd в ситуации, когато е трудно да се променят параметрите на командния ред на ядрото, а конфигурацията от диска се прочита твърде късно (например, когато трябва да се настроят опции, свързани с иерархията на cgroup). За задаване на променливата в EFI може да се използва командата 'bootctl systemd-efi-options';
- В юнитите е добавена поддръжка за зареждане на настройки от директории „{unit_type}.d/“, свързани с типове юнити (например, „service.d/“), които могат да се използват за добавяне на настройки, обхващащи всички файлове от този тип юнити;
- За сервисни юнити е добавен нов режим на пясъчна изолация 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 (
- Link-local). По-рано автоматичното създаване на маршрути по подразбиране за подобни линкове водеше до непредвидимо поведение и проблеми с маршрутизация в някои случаи. За възстановяване на предишното поведение следва да се използва настройката „DefaultRouteOnDevice=yes“. Аналогично, назначаването на локални адреси IPv6 е прекратено, ако локалната маршрутизация IPv6 за линка не е включена;
- В systemd-networkd при свързване с безжични мрежи в режим ad-hoc, по подразбиране е реализирано прилагане на конфигурация с локална адресация за линка (link-local);
- Добавени са параметрите 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
