Пасля пяці месяцаў распрацоўкі прадстаўлены рэліз сістэмнага мэнэджара systemd 250. У новым выпуску з'явілася магчымасць захоўвання ўліковых дадзеных у шыфраваным выглядзе, рэалізавана верыфікацыя аўтаматычна вызначаных GPT-частак па лічбавым подпісе, палепшана інфармаванне аб прычынах узнікнення затрымак пры запуску сэрвісаў, дададзеныя опцыі для абмежавання доступу да вызначаных файлавых сістэм і сеткавым інтэрфейсам, забяспечана падтрымка кантролю цэласнасці частак пры дапамозе модуля dm-integrity, дададзеная падтрымка аўтаабнаўлення sd-boot.
Асноўныя змены:
- Дададзена падтрымка шыфраваных і аўтэнтыфікаваных уліковых дадзеных, што можа быць карысным для бяспечнага захоўвання канфідэнцыйных матэрыялаў, такіх як SSL-ключы і паролі доступу. Расшыфроўка ўліковых дадзеных вырабляецца толькі пры неабходнасці і ў прывязцы да лакальнай усталёўкі або абсталяванню. Дадзеныя шыфруюцца аўтаматычна з выкарыстаннем сіметрычных алгарытмаў шыфравання, ключ для якіх можа размяшчацца ў файлавай сістэме, у чыпе TPM2 ці з выкарыстаннем камбінаванай схемы. Пры запуску сэрвісу ўліковыя дадзеныя аўтаматычна расшыфроўваюцца і становяцца даступнымі сэрвісу ў звычайным выглядзе. Для працы з зашыфраванымі ўліковымі дадзенымі дададзена ўтыліта 'systemd-creds', а для сэрвісаў прапанаваны налады LoadCredentialEncrypted і SetCredentialEncrypted.
- У sd-stub, выкананы файл для EFI, пры дапамозе якога прашыўка EFI загружае ядро Linux, дададзеная падтрымка загрузкі ядра з выкарыстаннем пратаколу LINUX_EFI_INITRD_MEDIA_GUID EFI. Таксама ў sd-stub дададзена магчымасць пакавання ўліковых дадзеных і файлаў sysext у архіў cpio і перадачы гэтага архіва ядру разам з initrd (дадатковыя файлы размяшчаюцца ў каталогу /.extra/). Указаная магчымасць дазваляе задзейнічаць верыфікаванае нязменнае асяроддзе initrd, якое дапаўняецца пры дапамозе sysexts і зашыфраваных дадзеных для аўтэнтыфікацыі.
- Істотна пашырана спецыфікацыя Discoverable Partitions, якая прадстаўляе сродкі для вызначэння, мантавання і актывацыі сістэмных раздзелаў, якія выкарыстоўваюць GPT (GUID Partition Tables). У параўнанні з мінулымі выпускамі для большасці архітэктур у спецыфікацыі рэалізаваная падтрымка каранёвай часткі і часткі /usr, у тым ліку для платформаў не выкарыстоўвалых UEFI.
У Discoverable Partitions таксама дададзена падтрымка частак, цэласнасць якіх верыфікуецца модулем dm-verity з выкарыстаннем лічбавых подпісаў PKCS#7, што спрашчае стварэнне цалкам аўтэнтыфікаваных дыскавых выяў. Падтрымка верыфікацыі інтэграваная ў розныя ўтыліты, якія маніпулююць дыскавымі выявамі, уключаючы systemd-nspawn, systemd-sysext, systemd-dissect, сэрвісы з RootImage, systemd-tmpfiles і systemd-sysusers.
- Для доўга якія запускаюцца ці спыняюцца unit-ов у дадатак да паказу аніміраванага індыкатара выканання аперацыі прадстаўлена магчымасць высновы звестак аб стане, якія дазваляюць зразумець, што менавіта адбываецца з сэрвісам у дадзены момант і завяршэнні выканання якога сэрвісу чакае ў дадзены момант сістэмны мэнэджар.
- У /etc/systemd/system.conf і /etc/systemd/user.conf дададзены параметр DefaultOOMScoreAdjust, які дазваляе адкарэктаваць парог спрацоўвання OOM-killer пры недахопе памяці, дастасавальны да працэсаў, якія запускае systemd для сістэмы і карыстачоў. Па змаўчанні вага сістэмных сэрвісаў вышэй, чым карыстацкіх, г.зн. пры недахопе памяці верагоднасць завяршэння карыстацкіх сэрвісаў вышэй, чым сістэмных.
- Дададзена налада RestrictFileSystems, якая дазваляе абмежаваць доступ сэрвісаў да вызначаных тыпаў файлавых сістэм. Для прагляду даступных тыпаў ФС можна выкарыстоўваць каманду "systemd-analyze filesystems". Па аналогіі рэалізавана опцыя RestrictNetworkInterfaces, якая дазваляе абмежаваць доступ да пэўных сеткавых інтэрфейсаў. Рэалізацыя заснавана на BPF-модулі LSM, які абмяжоўвае доступ групы працэсаў да аб'ектаў ядра.
- Дададзены новы файл канфігурацыі /etc/integritytab і ўтыліта systemd-integritysetup, якія наладжваюць модуль dm-integrity для кантролю цэласнасці дадзеных на ўзроўні асобных сектараў, напрыклад, для гарантавання нязменнасці зашыфраваных дадзеных (Authenticated Encryption, гарантуе, што блок дадзеных не быў мадыфікаваны абыходным шляхам . Фармат файла /etc/integritytab аналагічны файлам /etc/crypttab і /etc/veritytab, за тым выключэннем, што замест dm-crypt і dm-verity ужываецца dm-integrity.
- Дададзены новы unit-файл systemd-boot-update.service, пры актывацыі якога і наяўнасці ўсталяванага загрузніка sd-boot, systemd аўтаматычна будзе абнаўляць версію загрузніка sd-boot, падтрымліваючы код загрузніка заўсёды ў актуальным стане. Сам sd-boot зараз па змаўчанні збіраецца з падтрымкай механізму SBAT (UEFI Secure Boot Advanced Targeting), вырашальнага праблемы з водгукам сертыфікатаў для UEFI Secure Boot. Акрамя таго, у sd-boot забяспечана магчымасць разбору загрузных налад Microsoft Windows для карэктнага фармавання назваў загрузных частак з Windows і паказу версіі Windows.
У sd-boot таксама прадстаўлена магчымасць вызначэння каляровай схемы на этапе зборкі. У працэсе загрузкі дададзена падтрымка змены дазволу экрана націскам клавішы "r". Дададзена гарачая клавіша "f" для пераходу ў інтэрфейс налады прашыўкі. Дададзены рэжым аўтаматычнай загрузкі сістэмы, якая адпавядае элементу меню, абранаму пры мінулай загрузцы. Дададзена магчымасць аўтаматычнай загрузкі EFI-драйвераў, размешчаных у каталогу /EFI/systemd/drivers/ у раздзеле ESP (EFI System Partition).
- У склад уключаны новы unit-файл factory-reset.target, які апрацоўваецца ў systemd-logind па аналогіі з аперацыямі reboot, poweroff, suspend і hibernate, і які ўжываецца для стварэння апрацоўшчыкаў для выканання скіду да завадскіх налад.
- Працэс systemd-resolved зараз стварае дадатковы які слухае сокет на адрасе 127.0.0.54 у дадатак да 127.0.0.53. Якія прыходзяць на адрас 127.0.0.54 запыты заўсёды перанакіроўваюцца на вышэйстаячы DNS-сервер і не апрацоўваюцца лакальна.
- Дадзеная магчымасць зборкі systemd-importd і systemd-resolved з бібліятэкай OpenSSL замест libgcrypt.
- Дададзена пачатковая падтрымка архітэктуры LoongArch, якая прымяняецца ў працэсарах Loongson.
- У systemd-gpt-auto-generator рэалізавана магчымасць аўтаматычнай налады вызначаных сістэмай частак падпампоўкі, зашыфраваных падсістэмай LUKS2.
- У кодзе разбору GPT-вобразаў, выкарыстоўваным у systemd-nspawn, systemd-dissect і падобных утылітах, рэалізаваная магчымасць дэкадавання выяў для іншых архітэктур, што дазваляе выкарыстоўваць systemd-nspawn для запуску выяў у эмулятарах іншых архітэктур.
- Пры інспектаванні дыскавых выяў у systemd-dissect зараз выводзяцца звесткі аб прызначэнні часткі, напрыклад, прыдатнасці загрузкі праз UEFI ці запуску ў кантэйнеры.
- У файлы system-extension.d/ дададзена поле "SYSEXT_SCOPE", якое дазваляе пазначыць вобласць ужывання сістэмнай выявы - "initrd", "system" або "portable".
- У файл os-release дададзена поле "PORTABLE_PREFIXES", якое можна выкарыстоўваць у пераносных выявах для вызначэння падтрымоўваных прэфіксаў unit-файлаў.
- У systemd-logind рэалізаваны новыя налады HandlePowerKeyLongPress, HandleRebootKeyLongPress, HandleSuspendKeyLongPress і HandleHibernateKeyLongPress, якія можна выкарыстоўваць для вызначэння дзеянняў пры ўтрыманні вызначаных клавіш даўжэй 5 секунд (напрыклад, пры хуткім націску у ясны) .
- Для unit-ов рэалізаваны налады StartupAllowedCPUs і StartupAllowedMemoryNodes, якія адрозніваюцца ад аналагічных налад без прэфікса Startup тым, што прымяняюцца толькі на этапе загрузкі і завяршэння працы, што дазваляе выставіць іншыя абмежаванні рэсурсаў пры загрузцы.
- Дададзеныя праверкі [Condition|Assert][Memory|CPU|IO]Pressure, якія дазваляюць прапусціць або завяршыць памылкай актывацыю unit-а ў выпадку вызначэння праз механізм PSI вялікай нагрузкі на памяць, CPU і ўвод/вывад у сістэме.
- Усталёўванае па змаўчанні абмежаванне на максімальны лік inode павялічана для часткі /dev з 64k да 1M, а для /tmp з 400k да 1M.
- Для сэрвісаў прапанавана налада ExecSearchPath, якая дае магчымасць змяніць шлях для пошуку выкананых файлаў, якія запускаюцца праз налады, падобныя ExecStart.
- Дададзена налада RuntimeRandomizedExtraSec, якая дазваляе ўнесці выпадковыя адхіленні ў таймаўт RuntimeMaxSec, які абмяжоўвае час выканання юніта.
- Пашыраны сінтаксіс налад RuntimeDirectory, StateDirectory, CacheDirectory і LogsDirectory, у якіх праз указанне дадатковага значэння, падзеленага двукроп'ем, зараз можна арганізаваць стварэнне сімвалічнай спасылкі на зададзены каталог для арганізацыі доступу па некалькіх шляхах.
- Для сэрвісаў прапанаваны налады TTYRows і TTYColumns для задання колькасці радкоў і слупкоў у прыладзе TTY.
- Дададзена налада ExitType, якая дазваляе змяніць логіку вызначэння завяршэння сэрвісу. Па змаўчанні systemd адсочвае завяршэнне толькі асноўнага працэсу, але пры выстаўленні ExitType=cgroup сістэмны мэнэджар будзе чакаць завяршэнні апошняга працэсу ў cgroup.
- Рэалізацыя падтрымкі TPM2/FIDO2/PKCS11 у systemd-cryptsetup зараз таксама збіраецца ў выглядзе плагіна да cryptsetup, што дазваляе выкарыстоўваць звычайную каманду cryptsetup для разблакавання шыфраванай часткі.
- У апрацоўшчыку TPM2 у systemd-cryptsetup/systemd-cryptsetup дададзеная падтрымка першасных ключоў RSA, апроч ключоў ECC, для паляпшэння сумяшчальнасці з чыпамі, не якія падтрымліваюць ECC.
- У /etc/crypttab дададзена опцыя token-timeout, якая дазваляе вызначыць максімальны час чакання падлучэння токена PKCS#11/FIDO2, пасля заканчэння якога будзе выведзены запыт уводу пароля або ключа аднаўлення.
- У systemd-timesyncd рэалізавана налада SaveIntervalSec, якая дазваляе перыядычна захоўваць значэнне бягучага сістэмнага часу на дыск, напрыклад, для рэалізацыі манатонных гадзін на сістэмах без RTC.
- Ва ўтыліту systemd-analyze дададзеныя опцыі: «—image» і «—root» для праверкі unit-файлаў усярэдзіне зададзенай выявы або каранёвага каталога, «recursive-errors» для ўліку залежных юнітаў пры выяўленні памылкі, offline для праверкі асобна. захаваных на дыск unit-файлаў, "-json" для вываду ў фармаце JSON, "-quiet" для адключэння няважных паведамленняў, "-profile" для прывязкі да пераноснага профіля. Таксама дададзена каманда inspect-elf для разбору core-файлаў у фармаце ELF і магчымасць праверкі unit-файлаў з зададзеным імем юніта, незалежна ад таго ці супадае гэтае імя з імем файла.
- У systemd-networkd пашырана падтрымка шыны CAN (Controller Area Network). Дададзеныя наладкі для кіравання рэжымамі CAN: Loopback, OneShot, PresumeAck і ClassicDataLengthCode. У секцыю [CAN] файлаў. CAN.
- У systemd-networkd для кліента DHCPv4 дададзена опцыя Label, якая дазваляе наладзіць пазнаку адрасоў, ужывальную пры канфігурацыі адрасоў IPv4.
- У systemd-udevd для "ethtool" рэалізавана падтрымка спецыяльных значэнняў "max", якія выстаўляюць памер буфера ў максімальнае значэнне, якое падтрымліваецца абсталяваннем.
- У .link-файлах для systemd-udevd зараз можна наладзіць розныя параметры аб'яднання сеткавых адаптараў і падлучэнні апаратных апрацоўшчыкаў (offload).
- У systemd-networkd па змаўчанні прапанаваны новыя. 80-80rd-tunnel.network для вызначэння тунэляў, аўтаматычна створаных пры атрыманні DHCP-адказу з опцыяй 6RD.
- У systemd-networkd і systemd-udevd дададзеная падтрымка пракіду IP па-над інтэрфейсам InfiniBand, для якой у файлы systemd.netdev дададзеная секцыя "[IPoIB]", а ў наладзе Kind рэалізаваная апрацоўка значэння "ipoib".
- У systemd-networkd забяспечана аўтаматычная настройка маршрутаў для адрасоў, указаных у параметры AllowedIPs, якая можа быць настроена праз параметры RouteTable і RouteMetric у секцыях [WireGuard] і [WireGuardPeer].
- У systemd-networkd забяспечана аўтаматычная генерацыя не якія змяняюцца MAC-адрасоў для інтэрфейсаў batadv і bridge. Для адключэння гэтых паводзін можна пазначыць значэнне MACAddress=none у файлах .netdev.
- У файлы .link у секцыю "[Link]" дададзена налада WakeOnLanPassword, для вызначэння пароля пры працы WoL у рэжыме "SecureOn".
- У секцыю «[CAKE]» файлаў.
- У секцыю "[Network]" файлаў .network дададзена налада IgnoreCarrierLoss, якая дазваляе вызначыць як доўга чакаць перад тым як рэагаваць на страту апорнага сігналу.
- У systemd-nspawn, homectl, machinectl і systemd-run пашыраны сінтаксіс параметру "-setenv" - калі паказана толькі імя зменнай (без "="), значэнне будзе ўзята з адпаведнай зменнай асяроддзя (напрыклад, пры ўказанні "-setenv=FOO" будзе ўзята значэнне з зменнай асяроддзя $FOO і выкарыстана ў якая выстаўляецца ў кантэйнеры аднайменнай зменнай асяроддзя).
- У systemd-nspawn дададзена опцыя "-suppress-sync" для адключэння выканання сістэмных выклікаў sync()/fsync()/fdatasync() пры стварэнні кантэйнера (карысна, калі хуткасць мае першачарговае значэнне, а захаванне зборачных артэфактаў у выпадку збою не важна, бо яны могуць быць паўторна створаны ў любы момант).
- Дададзена новая база дадзеных hwdb, у якую ўключаны розныя тыпы аналізатараў сігналаў (мультыметры, аналізатары пратаколаў, асцылографы і да т.п.). Інфармацыя аб камерах у hwdb пашырана полем з інфармацыяй аб тыпе камеры (звычайная ці інфрачырвоная) і размяшчэння аб'ектыва (спераду ці ззаду).
- Забяспечана генерацыя не якія змяняюцца імёнаў сеткавых інтэрфейсаў для прылад netfront, ужывальных у Xen.
- Аналіз core-файлаў утылітай systemd-coredump на базе бібліятэк libdw/libelf зараз вырабляецца ў асобным працэсе, ізаляваным у sandbox-акружэнні.
- У systemd-importd дададзена падтрымка зменных асяроддзі $SYSTEMD_IMPORT_BTRFS_SUBVOL, $SYSTEMD_IMPORT_BTRFS_QUOTA, $SYSTEMD_IMPORT_SYNC, пры дапамозе якіх можна адключыць генерацыю падраздзелаў Btrfs, а таксама наладзіць квоты і сінхранізацыю дыскаў.
- У systemd-journald на файлавых сістэмах з падтрымкай рэжыму copy-on-write забяспечана паўторнае ўключэнне рэжыму COW для архіўных часопісаў, што дазваляе забяспечыць іх сціск сіламі Btrfs.
- У systemd-journald рэалізавана дэдуплікацыя аднолькавых палёў у адным паведамленні, якая выконваецца на этапе перад змяшчэннем паведамлення ў часопіс.
- У каманду shutdown дададзена опцыя "-show" для адлюстравання запланаванага завяршэння працы.
Крыніца: opennet.ru