Пускането на системния мениджър systemd 242

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

Основни промени:

  • В systemd-networkd е осигурена поддръжка на L2TP тунели;
  • В sd-boot и bootctl е реализирана поддръжка на дялове XBOOTLDR (разширен зареждащ мениджър), предназначени за монтиране в /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“, която позволява използването на набори за изпълнение за осигуряване на изолирано стартиране на контейнери, отговарящи на изискванията на спецификацията 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»);
  • По подразбиране настройката в .link файловете MACAddressPolicy=persistent е променена, за да обхване повече устройства. Интерфейсите на мрежовите мостове, тунелите (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 устройство);
  • За юнит файловете е реализирана настройка «CPUQuotaPeriodSec=», определяща периода, относно който се измерва квотата за процесорно време, задавана чрез настройката «CPUQuota=»;
  • За unit файлов е внедрена настройка «ProtectHostname=», която забранява на услугите да променят информацията за името на хоста, дори при наличието на подходящи разрешения;
  • За unit файлове е внедрена настройка «NetworkNamespacePath=», която позволява свързването на пространството с имена към услуги или socket единици чрез указване на пътя до файла на пространството в псевдо-файловата система /proc;
  • Добавена е възможността за деактивиране на подмяната на променливи на средата за процесите, стартирани с настройка «ExecStart=», чрез добавяне на символа «:» преди командата за стартиране;
  • За таймерите (юнити .timer) са предложени нови флагове «OnClockChange=» и
    «OnTimezoneChange=», чрез които може да се управлява извикването на юнита при промяна на системното време или часовата зона;
  • Добавени са нови настройки «ConditionMemory=» и «ConditionCPUs=», които определят условията за извикване на юнита в зависимост от размера на паметта и броя на ядрата на CPU (например, ресурсоемка услуга може да се стартира само ако има необходим обем RAM);
  • Добавен е нов юнит 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

Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри 🔥 Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри | ProHoster