Пускането на системния мениджър systemd 261 и форка liberated-systemd 261

След три месеца разработка е налична версия 261 на системния мениджър systemd. Ключови промени: подготовка за поддръжка на API за верификация на възраст, поддръжка на подсистемите Kexec Handover и Live Update Orchestration за рестартиране без загуба на състояние, подсистема IMDS (Instance Metadata Service), функционалност за защита на зареждането на системи без физически TPM (Trusted Platform Module), компонент systemd-sysinstall с реализация на инсталатора.

Сред промените в новото издание:

  • Добавен е нов компонент systemd-sysinstall с реализация на прост инсталатор на операционната система, който може да се управлява от командния ред или чрез интерактивен текстов интерфейс. Функционалността на systemd-sysinstall е изградена на базата на вече съществуващите възможности на systemd: за конфигуриране на дисковите дялове е използван systemd-repart, за инсталиране на ядрото и генериране на зареждачно меню — командата „bootctl link“, за инсталиране на зареждача systemd-boot — командата „bootctl install“, а за начално конфигуриране на инсталираната система (например, избор на локал и разредка на клавиатурата) — systemd-creds.
  • В подготовката за изпълнение на изискванията на законите за интеграция в ОС, API за проверка на възраст е добавено поле birthDate с датата на раждане на потребителя в БД userdb. Добавеното поле ще може да се използва в развиваната за дистрибуции платформа xdg-desktop-portal и услугата AccountsService за предоставяне на приложенията информация за възрастовата категория на потребителя чрез D-Bus интерфейс „org.freedesktop.AgeVerification1“ или „org.freedesktop.ParentalControls“. За задаване на възраст в утилитата homectl е добавена опция „—birth-date“.
  • В обработчика PID1 е добавена поддръжка на подсистемите на Linux ядрото LUO (Live Update Orchestration) и KHO (Kexec Handover), които позволяват пълноценно рестартиране и обновяване на ядрото без спиране на работата и без загуба на състояние на системата, устройствата и процесите. KHO предоставя възможности за стартиране на ново ядро от старо без загуба на състоянието на системата, а LUO реализира запазване на състоянието на устройствата и оперативната памет, както и осигурява непрекъснатост на операциите, свързани с DMA и обработка на прекъсвания.

    В systemd за системни и потребителски unit-и е реализирана възможност за съхраняване на файлови дескриптори преди извикване на kexec и тяхното възстановяване след перезареждане на ядрото чрез kexec. В unit-ите също е възможно да се създават собствени сесии LUO, които се съхраняват и възстановяват при изпълнение на kexec. За да се включи запазването на състоянието на хранилището на файлови дескриптори, трябва да се използва настройката ‘FileDescriptorStorePreserve=yes’.

  • Реализирана е подсистема systemd-imdsd, предоставяща API на базата на Varlink IPC за достъп на локални програми до услугите IMDS (Instance Metadata Service), предоставяни от различни доставчици на облачни системи. IMDS предлага възможност виртуални машини да се получава информация за облачното обкръжение, например, може да се получат данни за мрежовата конфигурация, географското местоположение на възела, типа на CPU и размера на хранилището. В systemd-imdsd се предлага както ниско ниво API за достъп до отделни полета, така и високо ниво интерфейс за запитване по типови ключове, съпоставени с ключове, специфични за отделни облачни платформи. За взаимодействие с systemd-imdsd е добавена утилита systemd-imds, която позволява внос на полета от IMDS в локалната система на записи.

    За разпознаване на облачни платформи по информация от SMBIOS и определяне на наличната на текущия възел функционалност IMDS е добавена нова БД hwdb.d/40-imds.hwdb. Реализирано е разпознаване на облачни платформи Amazon EC2, Microsoft Azure, Google Compute Engine, Hetzner, Oracle Cloud, Scaleway, Tencent Cloud, Alibaba ECS и Vultr. Наличен е обработчик systemd-imds-generator за автоматична подмяна на услугата за получаване на данни чрез IMDS в случай на установяване на работа под управлението на поддържана облачна платформа. Възможно е създаването на универсални образи, които поддържат използването на IMDS при стартиране в облачни среди, но също така могат да работят и без IMDS.

  • В systemd-stub е реализирана функционалността „boot secret“, позволяваща генериране на ключ на база EFI-переменная, съхранявана в недостъпна за операционната система зона и инициализирана със случайна стойност. В initrd ключът се предава чрез файл /.extra/boot-secret. Представената възможност може да се изисква за получаване на специфичен за системата случайно ключ за верификация на процеса на зареждане или за шифруване на системи без хардуерен TPM (Trusted Platform Module).
  • Добавен е сервисът systemd-tpm2-swtpm.service за стартиране на емулатор на TPM чипове swtpm (Software TPM Emulator), който може да се използва за автоматично връщане към софтуерна реализация на TPM за защитено зареждане на системи без хардуерен TPM. Софтуерният TPM работи в потребителското пространство и не може да осигури същото ниво на защита като хардуерния TPM, но в определени ситуации неговото приложение е оправдано в сравнение с работа без TPM. Например, софтуерният TPM може да получи ключа за криптиране на дялове чрез новата функционалност „boot secret“ и да използва дял ESP (EFI System Partition) на диска за съхранение на своето състояние. За автоматично активиране на софтуерния TPM е предложен параметърът за командния ред на ядрото systemd.tpm2_software_fallback.
  • Означен е като стабилен и е поставен в /usr/bin/ компонентът systemd-sysupdate, предназначен за автоматично определяне, изтегляне и инсталиране на актуализации, използвайки атомарен механизъм за заместване на дялове, файлове или директории (използват се два независими дяла/файла/директории, единият от които съдържа текущия работещ ресурс, а другият се инсталира с актуализация, след което дяловете/файловете/дирекориите се разменят).
  • В systemd-resolved е реализирана възможността за преназначаване или задаване на нови DNS записи чрез разполагане на файлове в JSON формат в директорията systemd/resolve/static.d/. В отличие от /etc/hosts, в новите файлове може не само да се свързват IP адреси с имена на хостове, но и да се определят ресурсни DNS RR записи, различни от „A“ и „AAAA“. Освен това, в systemd-resolved са добавени настройки за размера на DNS кеша: ‘DNSCacheSize’, ‘MulticastDNSCacheSize’ и ‘LLMNRCacheSize’.
  • Добавен е инструментът ‘storagectl’ за инспектиране на устройства за съхранение и управление на свързването на блочни устройства и файлови системи.
  • В рамките на инициативата за намаляване на зависимостите, в libsystemd е реализирано динамично зареждане на библиотеките libgnutls, libmicrohttpd, libcurl, libcrypto, libssl, libfdisk и libcryptsetup
    чрез извикване на dlopen() в ситуации, когато техните функции наистина са необходими.
  • В systemd-tmpfiles е добавен флаг «—inline», който позволява задаване на директиви в командния ред без създаване на конфигурационни файлове в tmpfiles.d/ и без изпращане на настройки през STDIN. Добавен е нов тип директиви ‘k/K’ за задаване на capabilities. Внедрен е конфигурационен файл tmpfiles.d/root.conf, който задава права за достъп 0555 (-r-xr-xr-x) към коренната директория (/) за защита от задаване на неверни права при динамично формиране на коренната ФС.
  • В утилитата bootctl е осигурено запазване на резервно копие на зареждача systemd-boot и записването на стара версия в UEFI като резервна опция за зареждане.
  • В systemd-vmspawn е добавена поддръжка за директно зареждане на ядрото без използване на UEFI фърмуер. Реализирана е опция «—firmware-features» за selectively включване или изключване на отделни функционалности на фърмуера. Внедрена е опция «—console=headless» за стартиране на виртуална машина без конзола и екран. Добавена е опция «—image-disk-type» за избор на типа блоково съхранение, използван в VM (virtio-blk, virtio-scsi, nvme, scsi-cd). Внедрена е опция «—coco» (Confidential Computing) за включване на режим на криптиране на паметта. виртуални машини с използването на технологията AMD SEV-SNP.
  • В systemd-hostnamed и /etc/machine-info е добавена поддръжка за прикачване на произволни тагове към текущата система, използвайки параметъра «Tags». Зададените тагове могат да се използват за selectively прилагане на настройки с проверка чрез израза ConditionMachineTag.
  • Добавени са настройки EventLoopRateLimitIntervalSec и EventLoopRateLimitBurst, които ограничават интензивността на цикъла за обработка на събития в PID1 за освобождаване на CPU ресурси в случай на зацикляне.
  • В управителя на услуги е реализирана настройка MinimumUptimeSec за задаване на минимално време на работа на системата (по подразбиране 15 секунди). Ако до изтичането на това време бъде инициирано изключване или рестартиране, то на приключваща стъпка се добавя съответното забавяне.
  • За unit-ите са реализирани нови настройки CPUSetPartition за задаване на типа раздел cpuset в cgroup («root», «isolated», «member»), RestrictFileSystemAccess за разрешаване на изпълнение само на изпълними файлове, удостоверени чрез цифров подпис с dm-verity, и CPUPressureWatch/CPUPressureThresholdSec/IOPressureWatch/IOPressureThresholdSec за получаване на известия за високо натоварване на CPU и вход/изход.
  • Разширен е списъкът с метрики, предоставяни от утилитата systemd-report. Например, добавени са данни за размера на физическата памет и активните ядра на CPU, информация за съдържанието на полетата SMBIOS и /etc/machine-info, информация за поддръжка на режима Confidential Computing и данни за производителя на чипове TPM2.
  • В systemd-oomd е реализирана възможността за определяне на правила за отсяване на процеси при настъпване на недостиг на памет в системата. Правилата могат да се задават в каталога /etc/systemd/oomd/rules.d/ или в сервизния unit-ы чрез директивата OOMRule.
  • В systemd-socket-proxy е добавена поддръжка за протокола «PROXY», който съответства на първата версия на протокола «haproxy».
  • В systemd-networkd е реализиран нов бекенд sd-dhcp-relay за DHCP реле. Дефинирани са като остарели настройки в секцията «[DHCPServer]» — BindToInterface, RelayTarget, RelayAgentCircuitId и RelayAgentRemoteId, вместо тях следва да се използва параметърът DHCPRelay в секцията «[Network]» и серия нови настройки в секцията [DHCPRelay] и в файла networkd.conf. Добавена е команда ‘networkctl dhcp-lease INTERFACE’ за запазване на дамп с информация за свързването на IP адресите (DHCP lease).
  • В утилитата systemd-nspawn е добавена опцията «—restrict-address-families», а в .nspawn файловете настройката RestrictAddressFamilies за ограничаване на използваните семействата адреси в контейнера. В бъдещи издания по подразбиране ще бъдат разрешени само семействата AF_INET, AF_INET6 и AF_UNIX.
  • Поддръжката на стария формат на БД udev (версия 0.x) е прекратена. Актуализацията на живо от версии на systemd до версия 247 вече не е поддържана.
  • При компилиране с библиотеката musl сега се изисква минимум версия musl 1.2.6.

Допълнително можем да отбележим излизането на проекта liberated-systemd 261, развиващ fork на systemd, освободен от код, който може да се използва за подслушване на потребителите. В предложеното издание промените се свеждат до премахване на кода, добавящ в userdb поле birthDate с дата на раждане на потребителя, а в утилитата homectl опцията «—birth-date» за задаване на възраст.

Източник: opennet.ru

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