Після двох місяців розробки
Основні зміни:
- У 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-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
[:]