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

[: Ru]

Після двох місяців розробки представлений реліз системного менеджера systemd 242. З нововведень можна відзначити підтримку тунелів L2TP, можливість управління поведінкою systemd-logind при перезапуску через змінні оточення, підтримку розширених завантажувальних розділів XBOOTLDR для монтування /boot, можливість завантаження з кореневим розділом overlayfs, а також велику кількість нових налаштувань для різних типів юнітів.

Основні зміни:

  • У systemd-networkd забезпечено підтримку тунелів L2TP;
  • У sd-boot і bootctl реалізована підтримка розділів XBOOTLDR (Extended Boot Loader), призначених для монтування /boot, на додаток до розділів ESP, що монтуються в /efi або /boot/efi. Ядра, налаштування, образи initrd та EFI тепер можуть завантажуватись як з розділів ESP, так і з розділів XBOOTLDR. Вказана зміна дозволяє використовувати завантажувач sd-boot у більш консервативних сценаріях, коли сам завантажувач розміщений в ESP, а ядра, що завантажуються, і пов'язані з ними метадані винесені в окремий розділ;
  • Додано можливість завантаження з передачею ядру опції «systemd.volatile=overlay», що дозволяє розмістити кореневий розділ в overlayfs і організувати роботу поверх доступного тільки для читання образу кореневого каталогу із записом змін в окремий каталог в tmpfs (зміни в такій конфігурації губляться після перезапуску) . За аналогією в systemd-nspawn додана опція «volatile = overlay» для використання подібної функціональності в контейнерах;
  • У systemd-nspawn додано опцію «—oci-bundle», що дозволяє використовувати набори runtime для забезпечення ізольованого запуску контейнерів, що відповідають вимогам специфікації Open Container Initiative (OCI). Для використання в командному рядку та nspawn-юнітах запропоновано підтримку різних опцій, описаних у специфікації OCI, наприклад, для виключення частин файлової системи можуть використовуватися налаштування «—inaccessible» і «Inaccessible», а для налаштування стандартних потоків виведення додані опції «—console» і «pipe»;
  • Додана можливість управління поведінкою systemd-logind через змінні оточення: $SYSTEMD_REBOOT_ TO_FIRMWARE_SETUP,
    $SYSTEMD_REBOOT_ TO_BOOT_LOADER_MENU та
    $SYSTEMD_REBOOT_ TO_BOOT_LOADER_ENTRY. За допомогою цих змінних можна підключити свої обробники процесу перезавантаження (/run/systemd/reboot-to-firmware-setup, /run/systemd/reboot-to-boot-loader-menu та
    /run/systemd/reboot-to-boot-loader-entry) або взагалі відключити їх (при виставленні значення false);

  • До команди «systemctl reboot» додано опції «—boot-load-menu=» та
    «—boot-loader-entry=», що дозволяє після перезавантаження вибрати конкретний пункт завантажувального меню або режим завантаження;

  • Додано нову команду sandbox-ізоляції «RestrictSUIDSGID=», яка використовує seccomp для заборони створення файлів із прапорами SUID/SGID;
  • Забезпечено застосування за замовчуванням обмежень NoNewPrivileges і RestrictSUIDSGID у сервісах з включеним режимом динамічної генерації ідентифікатора користувача (DynamicUser);
  • Налаштування MACAddressPolicy=persistent, що застосовується за умовчанням у .link-файлах, змінено для охоплення більшої кількості пристроїв. Інтерфейси мережевих мостів, тунелів (tun, tap) і агрегованих лінків (bond) не ідентифікують себе окрім імені мережевого інтерфейсу, тому дане ім'я тепер використовується як основа для прив'язки MAC і IPv4-адрес. Крім того, додано налаштування «MACAddressPolicy=random», яке можна використовувати для прив'язки MAC та IPv4-адрес до пристроїв у випадковому порядку;
  • Генеровані через systemd-fstab-generator юніт-файли ".device" тепер не включають відповідні юніти ".mount" як залежність у секції "Wants=". Просте підключення пристрою тепер не призводить до автоматичного запуску юніту для монтування, але подібні юніти, як і раніше, можуть запускатися з інших причин, наприклад, як частина local-fs.target або залежність від інших юнітів, залежних від local-fs.target;
  • До команди «networkctl list/status/lldp» додано підтримку масок («*» тощо) для відсіювання певних груп мережевих інтерфейсів у частині їхнього імені;
  • Змінна оточення $PIDFILE тепер встановлюється за допомогою абсолютного шляху, налаштованого у сервісах через параметр «PIDFile=;
  • До резервних DNS-серверів, які використовуються якщо явно не визначений основний DNS, додані публічні сервери Cloudflare (1.1.1.1). Для перевизначення списку резервних серверів DNS можна використовувати опцію «-Ddns-servers=»;
  • У разі виявлення наявності контролера USB-пристрою (USB Device Controller) забезпечено автоматичний запуск нового обробника usb-gadget.target (коли система працює на периферійному пристрої USB);
  • Для unit-файлів реалізовано налаштування «CPUQuotaPeriodSec=», що визначає період часу, щодо якого вимірюється квота на процесорний час, що задається через налаштування «CPUQuota=»;
  • Для unit-файлів реалізовано налаштування «ProtectHostname=», що забороняє сервісам змінювати інформацію про ім'я хоста, навіть за наявності відповідних повноважень;
  • Для unit-файлів реалізовано налаштування "NetworkNamespacePath=", що дозволяє прив'язати простір імен до сервісів або socket-юнітів через вказівку шляху до файлу простору імен у псевдо-ФС /proc;
  • Додано можливість відключення підстановки змінних оточення процесам, що запускаються за допомогою налаштування "ExecStart=", через додавання символу ":" перед командою запуску;
  • Для таймерів (юніти .timer) запропоновані нові прапори «OnClockChange=» та
    "OnTimezoneChange=", за допомогою яких можна керувати викликом юніту при зміні системного часу або часового поясу;

  • Додано нові налаштування «ConditionMemory=» та «ConditionCPUs=», що визначають умови виклику юніту в залежності від розміру пам'яті та числа ядер CPU (наприклад, ресурсомісткий сервіс можна запускати тільки якщо є необхідний обсяг ОЗП);
  • Додано новий юніт time-set.target, який приймає локально встановлений системний час, без використання звірки із зовнішніми серверами точного часу за допомогою юніту time-sync.target. Новий юніт може бути використаний сервісами, яким достатньо точності не синхронізованих локальних годинників;
  • У «systemctl start» та подібні команди додано опцію «—show-transaction», при вказівці якої виводиться зведення про всі роботи, додані черга через запитану операцію;
  • У systemd-networkd реалізовано визначення нового стану 'enslaved', що використовується замість 'degraded' або 'carrier' для мережних інтерфейсів, що входять до складу агрегованих лінків або мережевих мостів. Для первинних інтерфейсів у разі проблем із одним із складових лінків додано стан 'degraded-carrier';
  • У юніти .network додана опція «IgnoreCarrierLoss=» для збереження налаштувань мережі у разі обриву зв'язку;
  • Через налаштування «RequiredForOnline=» в юнітах .network тепер можна встановити мінімально допустимий стан лінка, необхідний для переведення мережного інтерфейсу в «online» і спрацьовування обробника systemd-networkd-wait-online;
  • У systemd-networkd-wait-online додано опцію «—any» для очікування готовності будь-якого із зазначених мережевих інтерфейсів замість всіх, а також опція «—operational-state=» для визначення стану лінка, що свідчить про готовність;
  • У .network юніти додані настройки «UseAutonomousPrefix=» та «UseOnLinkPrefix=», які можна використовувати для ігнорування префіксів при отриманні
    анонсу від маршрутизатора IPv6 (RA, Router Advertisement);

  • У .network юніти додані налаштування "MulticastFlood=", "NeighborSuppression=" та "Learning=" для зміни параметрів роботи мережного мосту, а також налаштування "TripleSampling=" для зміни режиму TRIPLE-SAMPLING віртуальних інтерфейсів CAN;
  • У .netdev юніти додані налаштування «PrivateKeyFile=» та «PresharedKeyFile=», за допомогою яких можна вказати закритий і роздільний (PSK) ключі для інтерфейсів WireGuard VPN;
  • У /etc/crypttab додані опції same-cpu-crypt та submit-from-crypt-cpus, що управляють поведінкою планувальника при міграції між ядрами CPU робіт, пов'язаних із шифруванням;
  • У systemd-tmpfiles забезпечено обробку файлу блокування перед виконанням операцій у каталогах з тимчасовими файлами, що дозволяє на час виконання певних дій відключити роботу з чищення застарілих файлів (наприклад, при розпаковуванні tar-архіву в /tmp можуть бути розкриті дуже старі файли, які не можна видаляти до закінчення з ними);
  • У команді «systemd-analyze cat-config» забезпечена можливість аналізу конфігурації, рознесеної на кілька файлів, наприклад, користувацькі та системні налаштування, вміст tmpfiles.d і sysusers.d, правила udev і т.п.
  • У journalctl додана опція «cursor-file=» для визначення файлу для завантаження та збереження покажчика позиції;
  • У systemd-detect-virt додано визначення гіпервізора ACRN та підсистеми WSL (Windows Subsystem for Linux) для подальшого розгалуження за допомогою умовного оператора ConditionVirtualization;
  • Під час встановлення systemd (при виконанні "ninja install") припинено створення в каталозі /etc символічних посилань на файли systemd-networkd.service, systemd-networkd.socket,
    systemd-resolved.service, remote-cryptsetup.target, remote-fs.target,
    systemd-networkd-wait-online.service та systemd-timesyncd.service. Для створення даних файлів тепер потрібно виконати команду "systemctl preset-all".

Джерелоopennet.ru

[En]

Після двох місяців розробки представлений реліз системного менеджера systemd 242. З нововведень можна відзначити підтримку тунелів L2TP, можливість управління поведінкою systemd-logind при перезапуску через змінні оточення, підтримку розширених завантажувальних розділів XBOOTLDR для монтування /boot, можливість завантаження з кореневим розділом overlayfs, а також велику кількість нових налаштувань для різних типів юнітів.

Основні зміни:

  • У systemd-networkd забезпечено підтримку тунелів L2TP;
  • У sd-boot і bootctl реалізована підтримка розділів XBOOTLDR (Extended Boot Loader), призначених для монтування /boot, на додаток до розділів ESP, що монтуються в /efi або /boot/efi. Ядра, налаштування, образи initrd та EFI тепер можуть завантажуватись як з розділів ESP, так і з розділів XBOOTLDR. Вказана зміна дозволяє використовувати завантажувач sd-boot у більш консервативних сценаріях, коли сам завантажувач розміщений в ESP, а ядра, що завантажуються, і пов'язані з ними метадані винесені в окремий розділ;
  • Додано можливість завантаження з передачею ядру опції «systemd.volatile=overlay», що дозволяє розмістити кореневий розділ в overlayfs і організувати роботу поверх доступного тільки для читання образу кореневого каталогу із записом змін в окремий каталог в tmpfs (зміни в такій конфігурації губляться після перезапуску) . За аналогією в systemd-nspawn додана опція «volatile = overlay» для використання подібної функціональності в контейнерах;
  • У systemd-nspawn додано опцію «—oci-bundle», що дозволяє використовувати набори runtime для забезпечення ізольованого запуску контейнерів, що відповідають вимогам специфікації Open Container Initiative (OCI). Для використання в командному рядку та nspawn-юнітах запропоновано підтримку різних опцій, описаних у специфікації OCI, наприклад, для виключення частин файлової системи можуть використовуватися налаштування «—inaccessible» і «Inaccessible», а для налаштування стандартних потоків виведення додані опції «—console» і «pipe»;
  • Додана можливість управління поведінкою systemd-logind через змінні оточення: $SYSTEMD_REBOOT_ TO_FIRMWARE_SETUP,
    $SYSTEMD_REBOOT_ TO_BOOT_LOADER_MENU та
    $SYSTEMD_REBOOT_ TO_BOOT_LOADER_ENTRY. За допомогою цих змінних можна підключити свої обробники процесу перезавантаження (/run/systemd/reboot-to-firmware-setup, /run/systemd/reboot-to-boot-loader-menu та
    /run/systemd/reboot-to-boot-loader-entry) або взагалі відключити їх (при виставленні значення false);

  • До команди «systemctl reboot» додано опції «—boot-load-menu=» та
    «—boot-loader-entry=», що дозволяє після перезавантаження вибрати конкретний пункт завантажувального меню або режим завантаження;

  • Додано нову команду sandbox-ізоляції «RestrictSUIDSGID=», яка використовує seccomp для заборони створення файлів із прапорами SUID/SGID;
  • Забезпечено застосування за замовчуванням обмежень NoNewPrivileges і RestrictSUIDSGID у сервісах з включеним режимом динамічної генерації ідентифікатора користувача (DynamicUser);
  • Налаштування MACAddressPolicy=persistent, що застосовується за умовчанням у .link-файлах, змінено для охоплення більшої кількості пристроїв. Інтерфейси мережевих мостів, тунелів (tun, tap) і агрегованих лінків (bond) не ідентифікують себе окрім імені мережевого інтерфейсу, тому дане ім'я тепер використовується як основа для прив'язки MAC і IPv4-адрес. Крім того, додано налаштування «MACAddressPolicy=random», яке можна використовувати для прив'язки MAC та IPv4-адрес до пристроїв у випадковому порядку;
  • Генеровані через systemd-fstab-generator юніт-файли ".device" тепер не включають відповідні юніти ".mount" як залежність у секції "Wants=". Просте підключення пристрою тепер не призводить до автоматичного запуску юніту для монтування, але подібні юніти, як і раніше, можуть запускатися з інших причин, наприклад, як частина local-fs.target або залежність від інших юнітів, залежних від local-fs.target;
  • До команди «networkctl list/status/lldp» додано підтримку масок («*» тощо) для відсіювання певних груп мережевих інтерфейсів у частині їхнього імені;
  • Змінна оточення $PIDFILE тепер встановлюється за допомогою абсолютного шляху, налаштованого у сервісах через параметр «PIDFile=;
  • До резервних DNS-серверів, які використовуються якщо явно не визначений основний DNS, додані публічні сервери Cloudflare (1.1.1.1). Для перевизначення списку резервних серверів DNS можна використовувати опцію «-Ddns-servers=»;
  • У разі виявлення наявності контролера USB-пристрою (USB Device Controller) забезпечено автоматичний запуск нового обробника usb-gadget.target (коли система працює на периферійному пристрої USB);
  • Для unit-файлів реалізовано налаштування «CPUQuotaPeriodSec=», що визначає період часу, щодо якого вимірюється квота на процесорний час, що задається через налаштування «CPUQuota=»;
  • Для unit-файлів реалізовано налаштування «ProtectHostname=», що забороняє сервісам змінювати інформацію про ім'я хоста, навіть за наявності відповідних повноважень;
  • Для unit-файлів реалізовано налаштування "NetworkNamespacePath=", що дозволяє прив'язати простір імен до сервісів або socket-юнітів через вказівку шляху до файлу простору імен у псевдо-ФС /proc;
  • Додано можливість відключення підстановки змінних оточення процесам, що запускаються за допомогою налаштування "ExecStart=", через додавання символу ":" перед командою запуску;
  • Для таймерів (юніти .timer) запропоновані нові прапори «OnClockChange=» та
    "OnTimezoneChange=", за допомогою яких можна керувати викликом юніту при зміні системного часу або часового поясу;

  • Додано нові налаштування «ConditionMemory=» та «ConditionCPUs=», що визначають умови виклику юніту в залежності від розміру пам'яті та числа ядер CPU (наприклад, ресурсомісткий сервіс можна запускати тільки якщо є необхідний обсяг ОЗП);
  • Додано новий юніт time-set.target, який приймає локально встановлений системний час, без використання звірки із зовнішніми серверами точного часу за допомогою юніту time-sync.target. Новий юніт може бути використаний сервісами, яким достатньо точності не синхронізованих локальних годинників;
  • У «systemctl start» та подібні команди додано опцію «—show-transaction», при вказівці якої виводиться зведення про всі роботи, додані черга через запитану операцію;
  • У systemd-networkd реалізовано визначення нового стану 'enslaved', що використовується замість 'degraded' або 'carrier' для мережних інтерфейсів, що входять до складу агрегованих лінків або мережевих мостів. Для первинних інтерфейсів у разі проблем із одним із складових лінків додано стан 'degraded-carrier';
  • У юніти .network додана опція «IgnoreCarrierLoss=» для збереження налаштувань мережі у разі обриву зв'язку;
  • Через налаштування «RequiredForOnline=» в юнітах .network тепер можна встановити мінімально допустимий стан лінка, необхідний для переведення мережного інтерфейсу в «online» і спрацьовування обробника systemd-networkd-wait-online;
  • У systemd-networkd-wait-online додано опцію «—any» для очікування готовності будь-якого із зазначених мережевих інтерфейсів замість всіх, а також опція «—operational-state=» для визначення стану лінка, що свідчить про готовність;
  • У .network юніти додані настройки «UseAutonomousPrefix=» та «UseOnLinkPrefix=», які можна використовувати для ігнорування префіксів при отриманні
    анонсу від маршрутизатора IPv6 (RA, Router Advertisement);

  • У .network юніти додані налаштування "MulticastFlood=", "NeighborSuppression=" та "Learning=" для зміни параметрів роботи мережного мосту, а також налаштування "TripleSampling=" для зміни режиму TRIPLE-SAMPLING віртуальних інтерфейсів CAN;
  • У .netdev юніти додані налаштування «PrivateKeyFile=» та «PresharedKeyFile=», за допомогою яких можна вказати закритий і роздільний (PSK) ключі для інтерфейсів WireGuard VPN;
  • У /etc/crypttab додані опції same-cpu-crypt та submit-from-crypt-cpus, що управляють поведінкою планувальника при міграції між ядрами CPU робіт, пов'язаних із шифруванням;
  • У systemd-tmpfiles забезпечено обробку файлу блокування перед виконанням операцій у каталогах з тимчасовими файлами, що дозволяє на час виконання певних дій відключити роботу з чищення застарілих файлів (наприклад, при розпаковуванні tar-архіву в /tmp можуть бути розкриті дуже старі файли, які не можна видаляти до закінчення з ними);
  • У команді «systemd-analyze cat-config» забезпечена можливість аналізу конфігурації, рознесеної на кілька файлів, наприклад, користувацькі та системні налаштування, вміст tmpfiles.d і sysusers.d, правила udev і т.п.
  • У journalctl додана опція «cursor-file=» для визначення файлу для завантаження та збереження покажчика позиції;
  • У systemd-detect-virt додано визначення гіпервізора ACRN та підсистеми WSL (Windows Subsystem for Linux) для подальшого розгалуження за допомогою умовного оператора ConditionVirtualization;
  • Під час встановлення systemd (при виконанні "ninja install") припинено створення в каталозі /etc символічних посилань на файли systemd-networkd.service, systemd-networkd.socket,
    systemd-resolved.service, remote-cryptsetup.target, remote-fs.target,
    systemd-networkd-wait-online.service та systemd-timesyncd.service. Для створення даних файлів тепер потрібно виконати команду "systemctl preset-all".

Джерело: opennet.ru

[:]

Додати коментар або відгук