Izdaja upravitelja sistema systemd 252 s podporo za UKI (Unified Kernel Image).

Po petih mesecih razvoja je bila predstavljena izdaja upravljalnika sistema systemd 252. Ključna sprememba v novi različici je bila integracija podpore za posodobljen zagonski proces, ki omogoča preverjanje ne le jedra in zagonskega nalagalnika, temveč tudi komponent. osnovnega sistemskega okolja z uporabo digitalnih podpisov.

Predlagana metoda vključuje uporabo enotne slike jedra UKI (Unified Kernel Image) pri nalaganju, ki združuje upravljalnik za nalaganje jedra iz UEFI (UEFI boot stub), sliko jedra Linux in sistemsko okolje initrd, naloženo v pomnilnik, ki se uporablja za začetno inicializacijo na stopnji pred namestitvijo korenskega FS. Slika UKI je zapakirana kot ena sama izvedljiva datoteka v formatu PE, ki jo je mogoče naložiti s tradicionalnimi zagonskimi programi ali priklicati neposredno iz vdelane programske opreme UEFI. Pri klicu iz UEFI je mogoče preveriti celovitost in zanesljivost digitalnega podpisa ne le jedra, ampak tudi vsebine initrd.

Za izračun parametrov registrov TPM PCR (Trusted Platform Module Platform Configuration Register), ki se uporabljajo za spremljanje celovitosti in ustvarjanje digitalnega podpisa slike UKI, je vključen nov pripomoček systemd-measure. Javni ključ, uporabljen v podpisu, in spremljajoče informacije PCR je mogoče vdelati neposredno v zagonsko sliko UKI (ključ in podpis sta shranjena v datoteki PE v poljih ».pcrsig« in ».pcrkey«) in iz nje ekstrahirati z zunanjim ali notranji pripomočki.

Zlasti pripomočki systemd-cryptsetup, systemd-cryptenroll in systemd-creds so bili prilagojeni za uporabo teh informacij, s katerimi lahko zagotovite, da so šifrirane diskovne particije vezane na digitalno podpisano jedro (v tem primeru dostop do šifrirane particije je na voljo le, če je slika UKI prestala preverjanje z digitalnim podpisom na podlagi parametrov v TPM).

Poleg tega je vključen pripomoček systemd-pcrphase, ki vam omogoča nadzor vezave različnih zagonskih stopenj na parametre, ki se nahajajo v pomnilniku kriptoprocesorjev, ki podpirajo specifikacijo TPM 2.0 (na primer, ključ za dešifriranje particije LUKS2 lahko omogočite samo v initrd sliko in blokirajte dostop do nje v poznejših fazah prenosov).

Nekaj ​​drugih sprememb:

  • Zagotavlja, da je privzeti jezik C.UTF-8, razen če je v nastavitvah določen drug jezik.
  • Zdaj je mogoče med prvim zagonom izvesti celotno operacijo prednastavitve storitve (»systemctl preset«). Omogočanje prednastavitev ob zagonu zahteva gradnjo z možnostjo "-Dfirst-boot-full-preset", vendar naj bi bila v prihodnjih izdajah privzeto omogočena.
  • Enote za upravljanje uporabnikov vključujejo krmilnik virov CPE, ki je omogočil, da se nastavitve CPUWeight uporabijo za vse enote rezin, ki se uporabljajo za razdelitev sistema na dele (app.slice, background.slice, session.slice) za izolacijo virov med različne uporabniške storitve, ki tekmujejo za vire procesorja. CPUWeight podpira tudi vrednost »idle« za aktiviranje ustreznega načina zagotavljanja virov.
  • V začasnih (»prehodnih«) enotah in v pripomočku systemd-repart je preglasitev nastavitev dovoljena z ustvarjanjem spustnih datotek v imeniku /etc/systemd/system/name.d/.
  • Za sistemske slike je nastavljena zastavica za konec podpore, ki določa to dejstvo na podlagi vrednosti novega parametra »SUPPORT_END=« v datoteki /etc/os-release.
  • Dodani nastavitvi »ConditionCredential=« in »AssertCredential=«, ki ju je mogoče uporabiti za prezrtje ali zrušitev enot, če določene poverilnice niso prisotne v sistemu.
  • Dodani nastavitvi »DefaultSmackProcessLabel=« in »DefaultDeviceTimeoutSec=« v system.conf in user.conf za določitev privzete varnostne ravni SMACK in časovne omejitve aktivacije enote.
  • V nastavitvah »ConditionFirmware=« in »AssertFirmware=« je bila dodana možnost določanja posameznih polj SMBIOS, na primer za zagon enote samo, če polje /sys/class/dmi/id/board_name vsebuje vrednost »Custom Board", lahko podate "ConditionFirmware=smbios" -field(board_name = "Custom Board")".
  • Med postopkom inicializacije (PID 1) je bila poleg njihove definicije prek qemu_fwcfg dodana možnost uvoza poverilnic iz polj SMBIOS (tip 11, »nizi prodajalca OEM«), kar poenostavlja zagotavljanje poverilnic virtualnim strojem in odpravlja potrebo po orodjih tretjih oseb, kot sta cloud -init in ignition.
  • Med zaustavitvijo je bila spremenjena logika za odpenjanje navideznih datotečnih sistemov (proc, sys) in informacije o procesih, ki blokirajo odpenjanje datotečnih sistemov, se shranijo v dnevnik.
  • Filter sistemskega klica (SystemCallFilter) privzeto omogoča dostop do sistemskega klica riscv_flush_icache.
  • Zagonski nalagalnik sd-boot doda možnost zagona v mešanem načinu, v katerem 64-bitno jedro Linuxa deluje iz 32-bitne vdelane programske opreme UEFI. Dodana eksperimentalna zmožnost samodejne uporabe ključev SecureBoot iz datotek, najdenih v ESP (sistemska particija EFI).
  • Pripomočku bootctl so bile dodane nove možnosti: »—all-architectures« za namestitev binarnih datotek za vse podprte arhitekture EFI, »—root=« in »—image=« za delo z imenikom ali sliko diska, »—install-source =” za določanje vira za namestitev, "-efi-boot-option-description=" za nadzor imen zagonskih vnosov.
  • Ukaz 'list-automounts' je bil dodan pripomočku systemctl za prikaz seznama samodejno nameščenih imenikov in možnost '--image=' za izvajanje ukazov v zvezi z navedeno sliko diska. Dodani možnosti »--state=« in »--type=« ukazoma »show« in »status«.
  • systemd-networkd je dodal možnosti »TCPCongestionControlAlgorithm=« za izbiro algoritma za nadzor zastojev TCP, »KeepFileDescriptor=« za shranjevanje deskriptorja datoteke vmesnikov TUN/TAP, »NetLabel=« za nastavitev NetLabels, »RapidCommit=« za pospešitev konfiguracije prek DHCPv6 (RFC 3315). Parameter “RouteTable=” omogoča določanje imen usmerjevalnih tabel.
  • systemd-nspawn omogoča uporabo relativnih poti datotek v možnostih "--bind=" in "--overlay=". Dodana je podpora za parameter 'rootidmap' k možnosti "--bind=" za povezovanje ID-ja korenskega uporabnika v vsebniku z lastnikom nameščenega imenika na strani gostitelja.
  • systemd-resolved privzeto uporablja OpenSSL kot zaledje za šifriranje (podpora za gnutls je ohranjena kot možnost). Nepodprti algoritmi DNSSEC se zdaj obravnavajo kot nevarni, namesto da vrnejo napako (SERVFAIL).
  • systemd-sysusers, systemd-tmpfiles in systemd-sysctl izvajajo možnost prenosa nastavitev prek mehanizma za shranjevanje poverilnic.
  • Pripomočku systemd-analyze je dodan ukaz 'compare-versions' za primerjavo nizov s številkami različic (podobno kot 'rpmdev-vercmp' in 'dpkg --compare-versions'). Možnost filtriranja enot po maski je bila dodana ukazu 'systemd-analyze dump'.
  • Pri izbiri večstopenjskega načina mirovanja (začasno prekini, nato prestavi v mirovanje) se čas, porabljen v stanju pripravljenosti, zdaj izbere na podlagi napovedi preostale življenjske dobe baterije. Takojšen prehod v način mirovanja se zgodi, ko ostane manj kot 5 % napolnjenosti baterije.
  • V 'journalctl' je bil dodan nov izhodni način "-o short-delta", ki prikazuje časovno razliko med različnimi sporočili v dnevniku.
  • systemd-repart dodaja podporo za ustvarjanje particij z datotečnim sistemom Squashfs in particij za dm-verity, vključno z digitalnimi podpisi.
  • Dodana nastavitev "StopIdleSessionSec=" v systemd-logind za končanje neaktivne seje po določeni časovni omejitvi.
  • Systemd-cryptenroll je dodal možnost "--unlock-key-file=" za ekstrahiranje ključa za dešifriranje iz datoteke namesto poziva uporabnika.
  • Zdaj je mogoče zagnati pripomoček systemd-growfs v okoljih brez udev.
  • systemd-backlight ima izboljšano podporo za sisteme z več grafičnimi karticami.
  • Licenca za primere kode, navedene v dokumentaciji, je bila spremenjena iz CC0 v MIT-0.

Spremembe, ki motijo ​​združljivost:

  • Pri preverjanju številke različice jedra z uporabo direktive ConditionKernelVersion je zdaj v operatorjih '=' in '!=' uporabljena preprosta primerjava nizov, in če primerjalni operator sploh ni določen, je mogoče uporabiti ujemanje glob-maske z uporabo znakov '*', '?' in '[', ']'. Če želite primerjati različice v slogu funkcije stverscmp(), morate uporabiti operatorje '', '='.
  • Oznaka SELinux, ki se uporablja za preverjanje dostopa iz datoteke enote, se zdaj prebere ob nalaganju datoteke in ne ob preverjanju dostopa.
  • Pogoj »ConditionFirstBoot« se zdaj sproži ob prvem zagonu sistema samo neposredno v fazi zagona in vrne »false« pri klicu enot po končanem zagonu.
  • Leta 2024 systemd načrtuje prenehanje podpiranja mehanizma za omejevanje virov cgroup v1, ki je bil opuščen v izdaji systemd 248. Skrbnikom svetujemo, da vnaprej poskrbijo za selitev storitev, ki temeljijo na cgroup v2, na cgroup v1. Ključna razlika med cgroups v2 in v1 je uporaba skupne hierarhije cgroups za vse vrste virov, namesto ločenih hierarhij za dodeljevanje virov CPE, za uravnavanje porabe pomnilnika in za I/O. Ločene hierarhije vodijo do težav pri organiziranju interakcije med obdelovalci in do dodatnih stroškov virov jedra pri uporabi pravil za proces, na katerega se sklicujejo različne hierarhije.
  • V drugi polovici leta 2023 nameravamo ukiniti podporo za razdeljene hierarhije imenikov, kjer je /usr nameščen ločeno od korena ali sta /bin in /usr/bin, /lib in /usr/lib ločena.

Vir: opennet.ru

Dodaj komentar