Выпуск сістэмнага мэнэджэра systemd 250

Пасля пяці месяцаў распрацоўкі прадстаўлены рэліз сістэмнага мэнэджара 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

Дадаць каментар