Dopo tre mesi di sviluppo, è disponibile il rilascio del gestore di sistema systemd 260. Le modifiche principali: cessazione del supporto per gli script dei servizi nel formato System V, meccanismo “mstack” per comporre gerarchie di montaggio multilivello, utilità systemd-report, supporto all'integrazione di systemd-networkd con ModemManager, supporto ai servizi portabili personalizzati, concetto di “xaccess” in systemd-logind e systemd-udevd.
Tra le novità del nuovo rilascio:
- Cessato il supporto per gli script dei servizi nel formato System V e cessata la fornitura dei componenti rc-local.service, systemd-sysv-install, systemd-rc-local-generator e systemd-sysv-generator.
- È stato implementato il meccanismo “mstack” (Mount Stack), che consente di utilizzare directory con suffisso “.mstack/” per formare una gerarchia composta di directory, creata attraverso il montaggio sequenziale e la sovrapposizione di immagini disco e parti di FS tramite OverlayFS e “mount —bind”. Aggiunte la comando systemd-mstack, l'opzione “—mstack” in systemd-nspawn e il parametro RootMStack nelle unità, che possono essere utilizzati per montare e smontare simultaneamente tutti gli elementi definiti nella configurazione “.mstack”, ad esempio, per ricreare rapidamente l'immagine di un contenitore o un ambiente di servizio. Ogni file o sottodirectory in “.mstack/” definisce un livello di montaggio o un livello “overlayfs”.
Ad esempio, la seguente configurazione “foobar.mstack/” definisce un overlayfs con due livelli in modalità sola lettura da immagini disco base.raw e app.raw (indicate come link simbolici), e una directory “rw” con la possibilità di scrivere sopra di esse: foobar.mstack/layer@0.raw → .. /base.raw foobar.mstack/layer@1.raw → .. /app.raw foobar.mstack/rw/
- Sono stati implementati i framework “metrics” e “report”, che possono essere utilizzati dai componenti di sistema per fornire statistiche tramite Varlink nella directory /run/systemd/report/. È stata aggiunta l'utilità systemd-report, che genera un rapporto riepilogativo, combinando le statistiche da tutti i componenti e restituendole in formato JSON. Attualmente, le metriche sono fornite solo dal gestore dei servizi e da systemd-networkd.
- In systemd-networkd è stata garantita l'integrazione con ModemManager ed è stata aggiunta la sezione “[MobileNetwork]” con impostazioni APN, AllowedAuthenticationMechanisms, User, Password, IPFamily, AllowRoaming, PIN, OperatorId, RouteMetric e UseGateway, che consentono di utilizzare systemd-networkd per connettersi tramite modem agli operatori mobili.
- È stata fornita la possibilità di avviare systemd-portabled come servizio utente, avviato da un utente non privilegiato. Per scegliere il tipo di servizio, l'utilità portablectl ha aggiunto i flag «—user» e «—system». I servizi portabili («Portable Services») sono servizi di sistema presentati come contenitori autonomi (forniti sotto forma di immagine di sistema, ma elaborati come un normale servizio).
- In systemd-logind e systemd-udevd è stata aggiunta la supporto al concetto di «xaccess» (Accesso Esteso), che consente di fornire accesso alla GPU per gli utenti con accesso remoto durante una sessione grafica, i quali non utilizzano fisicamente un monitor e i dispositivi di input sul sistema locale (analogamente all'accesso uaccess, che coinvolge gli utenti che lavorano fisicamente con il computer). Per configurare le sessioni in questo caso, si propone di impostare la variabile di ambiente XDG_SESSION_EXTRA_DEVICE_ACCESS tramite PAM.
- Per automatizzare la configurazione di DeviceTree nelle immagini UKI (Unified Kernel Image), è stata proposta una serie canonica di file con identificatori hardware in /usr/lib/systemd/boot/hwids/, che collegano gli identificatori dei dispositivi con gli elementi di DeviceTree. Utilizzando questo set, l'immagine UKI trova e carica automaticamente il necessario DTB (Device Tree Blob) durante il caricamento senza la necessità di creare immagini specifiche per ogni dispositivo. Al momento, i file hwid sono stati formati per dispositivi ARM64 basati su chip Snapdragon.
- In /etc/os-release è stato aggiunto un nuovo campo «FANCY_NAME», diverso da «PRETTY_NAME» grazie alla possibilità di utilizzare glifi Unicode non-ASCII. In presenza del campo «FANCY_NAME», esso verrà utilizzato nell'output di systemd, systemd-hostnamed e hostnamectl al posto di «PRETTY_NAME».
- I servizi che forniscono interfacce pubbliche Varlink sono stati riuniti in un'unica directory con collegamenti simbolici in /run/varlink/registry/. È stato implementato il comando 'varlinkctl list-registry' per visualizzare l'elenco di questi servizi.
- Negli unit è stata implementata la possibilità di specificare nel parametro PrivateUsers il valore «managed» per l'assegnazione automatica di intervalli di identificatori utente e gruppo (UID/GID) tramite systemd-nsresourced.
- Negli unit è stata aggiunta l'impostazione RefreshOnReload per aggiornare le estensioni e le credenziali al momento del riavvio dell'unit.
- Negli unit è stata aggiunta l'impostazione BindNetworkInterface per associare automaticamente tutti i socket creati nell'unit a un'interfaccia di rete specificata.
- Sono state aggiunte le impostazioni ConditionPathIsSocket e AssertPathIsSocket ai unit per modificare il comportamento o terminare in modo anomalo il unit, se i percorsi specificati non sono socket.
- In systemctl è stato aggiunto il comando ‘enqueue-marked’, che invoca il metodo D-Bus EnqueueMarkedJobs(). Il parametro ‘—marked’ precedentemente utilizzato per questi scopi è stato dichiarato obsoleto.
- È stata aggiunta l'impostazione MemoryTHP ai servizi per gestire l'uso di pagine di memoria di grandi dimensioni (THP — Transparent Huge Pages).
- Nei file .delegate di systemd-resolved è stata aggiunta la supporto per il parametro FirewallMark per impostare nel stack di rete un'etichetta del firewall per il traffico DNS generato.
- In systemd-sysupdate è stato aggiunto il comando ‘acquire’ per separare le fasi di caricamento e installazione o aggiornamento. È stato implementato il supporto per contrassegnare le partizioni come parzialmente caricate.
- In systemd-vmspawn è stata aggiunta l'opzione ‘—image-format’ per scegliere il formato (qcow2 o raw) dell'immagine del disco.
- In systemd-inhibit per l'opzione ‘—list’ è stato implementato il supporto per il formato ‘JSON’ con la possibilità di utilizzare i flag ‘—what’, ‘—who’, ‘—why’ e ‘—mode’ per filtrare l'output.
- In systemd-repart è stato aggiunto il supporto di base per il controllo dell'integrità delle partizioni crittografate utilizzando dm-integrity.
- Nell'utilità systemd-keyutil è stato aggiunto il comando ‘extract-certificate’ per estrarre il contenuto dei certificati X.509.
- In systemd-sysext e varlinkctl è stato implementato il supporto per il passaggio di autorizzazione interattiva tramite polkit.
- È stata aggiunta una politica polkit che consente di invocare systemd-ask-password da un utente non privilegiato.
- In systemd-importd è stata aggiunta la possibilità di caricare immagini OCI con il comando ‘importctl pull-oci’, che vengono salvate sotto forma di immagini per il montaggio tramite ‘mstack’.
- È stato aggiunto il supporto per i colori SYSTEMD_COLORS=auto-16, SYSTEMD_COLORS=auto-256 e SYSTEMD_COLORS=auto-24bit.
- Sono stati forniti file eseguibili completamente funzionali per systemd-sysusers e systemd-tmpfiles (in precedenza venivano costruite versioni ridotte).
- In systemd-oomd è stato aggiunto un ‘prekill hook’ che consente di collegare gestori che vengono attivati prima della terminazione forzata di un processo a causa della mancanza di memoria nel sistema.
- È stata ripristinata, ma contrassegnata come obsoleta, la possibilità di utilizzare utenti e gruppi non di sistema nelle regole udev (OWNER= / GROUP=) e nelle impostazioni di systemd-networkd (User= / Group=).
- In systemd-repart è stata attivata la funzionalità apparso nella xfsprogs 6.17.0 dell'utilità mkfs.xfs per distribuire il contenuto iniziale del FS dalla directory specificata.
- I requisiti minimi sono stati aumentati: kernel Linux 5.4 → 5.10 (raccomandato 5.14, e per la piena funzionalità — 6.6), libidn → libidn2, Python 3.7.0 → 3.9.0, glibc 2.31 → 2.34, OpenSSL 1.1.0 → 3.0.0, cryptsetup 2.0.1/2.3.0 → 2.4.0, elfutils 158 → 177, libblkid 2.24 → 2.37, libseccomp 2.3.1 → 2.4.0.
- Le regole per garantire la portabilità e la stabilità sono state rielaborate e semplificate, con un maggiore impegno a evitare regressioni visibili agli utenti nelle interfacce pubbliche.
Fonte: opennet.ru
