Nakon pet meseci razvoja, predstavljen je izlaz sistemskog menadžera systemd 252. Ključna promena u novoj verziji je integracija podrške za modernizovani proces pokretanja, koji omogućava verifikaciju putem digitalnih potpisa ne samo jezgra i učitavača, već i komponenti osnovnog sistemskog okruženja.
Predložena metoda podrazumeva korišćenje pri pokretanju unifikovanog image-a jezgra UKI (Unified Kernel Image), koji kombinuje obradu za pokretanje jezgra iz UEFI (UEFI boot stub), image jezgra Linux i učitano u memoriju sistemsko okruženje initrd, koje se koristi za inicijalizaciju pre montiranja root FS-a. UKI-image se formira kao jedna izvršna datoteka u PE formatu, koja se može učitati korišćenjem tradicionalnih učitavača ili direktno pozivati iz UEFI firmware-a. Kada se poziva iz UEFI, omogućava se verifikacija integriteta i autentičnosti putem digitalnog potpisa ne samo jezgra, već i sadržaja initrd-a.
Za izračunavanje parametara registara TPM PCR (Trusted Platform Module Platform Configuration Register), koji se koriste za kontrolu integriteta i formiranje digitalnog potpisa UKI image-a, uključena je nova alatka systemd-measure. Javni ključ korišćen u potpisu i prateće informacije o PCR mogu biti ugrađene direktno u boot image UKI (ključ i potpis se čuvaju u datoteci u PE formatu u poljima '.pcrsig' i '.pcrkey') i izvučene pomoću spoljnih ili unutrašnjih alata.
Uključene su i alatke systemd-cryptsetup, systemd-cryptenroll i systemd-creds, prilagođene za korišćenje ovih informacija, kojima se može obezbediti vezivanje enkriptovanih diskovnih particija uz potvrđeno digitalnim potpisom jezgro (u ovom slučaju, pristup enkriptovanoj particiji je omogućen samo ako je UKI image prošao verifikaciju putem digitalnog potpisa na osnovu parametara smeštenih u TPM).
Dodatno, uključena je alatka systemd-pcrphase, koja omogućava upravljanje vezivanjem različitih faza pokretanja uz parametre smeštene u memoriji kriptoprocesora koji podržavaju TPM 2.0 specifikaciju (na primer, moguće je da se ključ za dekriptovanje particije LUKS2 dostupnim samo u initrd image-u i blokirati pristup njemu u kasnijim fazama pokretanja).
Neke druge promjene:
- Zadane je korištenje zadane lokalizacije C.UTF-8, osim ako nije određena druga lokalizacija u postavkama.
- Omogućena je mogućnost izvršavanja operacije potpune prednapravljenosti servisa („systemctl preset“) tijekom prvog pokretanja. Za uključivanje prednapravljenosti tijekom pokretanja potrebna je kompilacija s opcijom „-Dfirst-boot-full-preset“, no u budućim izdanjima planiraju je aktivirati prema zadanim postavkama.
- U jedinicama za upravljanje korisnicima korišten je CPU resurs kontroler, što je omogućilo primjenu postavki CPUWeight za sve slice-jedinice koje se koriste za dijeljenje sustava (app.slice, background.slice, session.slice) radi izolacije resursa između različitih korisničkih usluga koje se natječu za resurse CPU. U CPUWeight također je implementirana podrška za vrijednost „idle“ za aktiviranje odgovarajućeg načina pružanja resursa.
- U privremenim („transient“) jedinicama i u alatu systemd-repart omogućeno je prepisivanje postavki putem stvaranja drop-in datoteka u direktoriju /etc/systemd/system/ime.d/.
- Za sustavne slike omogućeno je postavljanje oznake kraja podrške (‘support-ended’), definirajući tu činjenicu na temelju vrijednosti novog parametra „SUPPORT_END=” u datoteci /etc/os-release.
- Dodane su postavke „ConditionCredential=” i „AssertCredential=”, koje se mogu koristiti za ignoriranje ili hitno zatvaranje jedinica u nedostatku određenih vjerodajnica u sustavu.
- U system.conf i user.conf dodane su postavke „DefaultSmackProcessLabel=” i „DefaultDeviceTimeoutSec=” za određivanje razine sigurnosti SMACK i tajmer za aktivaciju jedinica koji se primjenjuju prema zadanim postavkama.
- U postavkama „ConditionFirmware=” i „AssertFirmware=” dodana je mogućnost navođenja pojedinačnih polja SMBIOS, na primjer za pokretanje jedinice samo u slučaju kada polje /sys/class/dmi/id/board_name sadrži vrijednost „Custom Board“, može se navesti „ConditionFirmware=smbios-field(board_name = „Custom Board“).
- U procesu inicijalizacije (PID 1) dodana je mogućnost uvoza vjerodajnica iz polja SMBIOS (Tip 11, „OEM vendor strings”) uz definiciju putem qemu_fwcfg, što olakšava pružanje vjerodajnica virtualnim strojevima i omogućuje izbjegavanje vanjskih alata poput cloud-init i ignition.
- Tijekom gašenja promijenjena je logika odmakanja virtualnih datotečnih sustava (proc, sys) i osigurano je spremanje informacija o procesima koji blokiraju odmakanje datotečnih sustava u log.
- U filtriranju sistemskih poziva (SystemCallFilter) zadano je dopuštenje pristupa sistemskom pozivu riscv_flush_icache.
- U bootloaderu sd-boot dodana je mogućnost pokretanja u miješanom režimu, gdje se 64-bitno Linux jezgra pokreće iz 32-bitnog UEFI firmware-a. Dodana je eksperimentalna mogućnost automatskog primjenjivanja SecureBoot ključeva iz datoteka pronađenih u ESP (EFI sistemska particija).
- U alat bootctl dodane su nove opcije ‘—all-architectures’ za instalaciju binarnih datoteka za sve podržane EFI arhitekture, ‘—root=’ i ‘—image=’ za rad s direktorijem ili diskovnom slikom, ‘—install-source=’ za definiranje izvora instalacije, ‘—efi-boot-option-description=’ za upravljanje imenima pokretačkih zapisa.
- U alat systemctl dodana je komanda ‘list-automounts’ za prikaz popisa automatski montiranih direktorija i opcija ‘—image=’ za izvršavanje komandi povezano s određenom diskovnom slikom. U komande ‘show’ i ‘status’ dodane su opcije ‘—state=’ i ‘—type=’.
- U systemd-networkd dodane su opcije ‘TCPCongestionControlAlgorithm=’ za odabir algoritma upravljanja opterećenjem TCP, ‘KeepFileDescriptor=’ za zadržavanje datotečnog deskriptera TUN/TAP sučelja, ‘NetLabel=’ za postavljanje NetLabel oznaka, ‘RapidCommit=’ za ubrzanje postavki putem DHCPv6 (RFC 3315). U parametru ‘RouteTable=’ omogućeno je navođenje imena tabela rutiranja.
- U systemd-nspawn dopušteno je korištenje relativnih putanja datoteka u opcijama ‘—bind=’ i ‘—overlay=’. U opciju ‘—bind=’ dodana je podrška za parametar ‘rootidmap’ za vezivanje identifikatora korisnika root unutar kontejnera s vlasnikom montiranog direktorija na strani host sustava.
- U systemd-resolved kao zadani backend za šifriranje korišten je paket OpenSSL (podrška za gnutls zadržana je kao opcija). Nepodržani DNSSEC algoritmi sada se obrađuju kao nesigurni, umjesto da vraćaju grešku (SERVFAIL).
- U systemd-sysusers, systemd-tmpfiles i systemd-sysctl implementirana je mogućnost prijenosa postavki putem mehanizma pohrane vjerodajnica.
- U alat systemd-analyze dodana je komanda ‘compare-versions’ za usporedbu nizova s verzijama (analogno ‘rpmdev-vercmp’ i ‘dpkg —compare-versions’). U komandu ‘systemd-analyze dump’ dodana je mogućnost filtriranja jedinica prema maski.
- Pri odabiru višestepenog načina spavanja (suspend-then-hibernate, prelazak u stanje mirovanja nakon čekanja), vrijeme provedeno u čekanju sada se odabire na temelju predviđanja preostalog vremena autonomnog rada. Trenutni prelazak u stanje mirovanja događa se kada preostane manje od 5% kapaciteta baterije.
- U 'journalctl' je dodan novi način prikaza „-o short-delta”, koji prikazuje razliku u vremenu između različitih poruka u logu.
- U systemd-repart je dodana podrška za izradu particija s FS Squashfs i particija za dm-verity, uključujući one s digitalnim potpisima.
- U systemd-logind je dodana postavka „StopIdleSessionSec=” za završetak neaktivne sesije nakon isteka zadanog vremenskog limita.
- U systemd-cryptenroll je dodana opcija „—unlock-key-file=” za izvlačenje ključa za dekripciju iz datoteke, a ne putem korisničkog upita.
- Omogućena je mogućnost izvršavanja alata systemd-growfs u okruženjima bez udev.
- U systemd-backlight je poboljšana podrška za sustave s više grafičkih kartica.
- Licenca na prikazane primjere koda u dokumentaciji promijenjena je s CC0 na MIT-0.
Promjene koje narušavaju kompatibilnost:
- Pri provjeri broja verzije jezgre putem direktive ConditionKernelVersion u operatorima ‘=’ i ‘!=’ sada se primjenjuje jednostavno usporedba stringova, a ako operator usporedbe uopće nije naveden, može se primijeniti usklađivanje prema glob-maskama koristeći simbole ‘*’, ‘?’ i ‘[‘, ‘]’. Za usporedbu verzija u stilu funkcije stverscmp() treba koristiti operatore ‘’, ‘=’.
- SELinux oznaka koja se koristi za provjeru pristupa iz unit-datoteke sada se čita u fazi učitavanja datoteke, a ne u trenutku provjere pristupa.
- Uvjet „ConditionFirstBoot” sada se aktivira pri prvom pokretanju sustava samo neposredno u fazi pokretanja i vraća „false” prilikom poziva jedinica nakon završetka pokretanja.
- U 2024. godini planira se prestanak podrške za mehanizam ograničenja resursa cgroup v1 u systemd, koji je prebačen u status zastarjelog u izdanju systemd 248. Administratorima se preporučuje da unaprijed osiguraju prijelaz na cgroup v2 za usluge vezane uz cgroup v1. Ključna razlika između cgroup v2 i v1 je primjena zajedničke hijerarhije cgroupa za sve vrste resursa, umjesto odvojenih hijerarhija za raspodjelu CPU resursa, regulaciju potrošnje memorije i ulaz/izlaz. Odvojene hijerarhije dovode do poteškoća u organizaciji interakcije između handlera te do dodatnih troškova resursa jezgre prilikom primjene pravila za proces koji se spominje u različitim hijerarhijama.
- U drugoj polovini 2023. godine planira se prestanak podrške za odvojene hijerarhije direktorija, kada je /usr montiran odvojeno od korijena ili su direktoriji /bin i /usr/bin, /lib i /usr/lib odvojeni.
Izvor: opennet.ru
