Dopo quattro mesi di sviluppo, è stata rilasciata la versione del gestore di sistema systemd 255. Tra i miglioramenti più significativi: supporto per l'esportazione di archivi tramite NVMe-TCP, componente systemd-bsod per la visualizzazione a schermo intero dei messaggi di errore, utilità systemd-vmspawn per avviare macchine virtuali, utilità varlinkctl per gestire i servizi Varlink, utilità systemd-pcrlock per analizzare i registri TPM2 PCR e generare regole di accesso, modulo di autenticazione pam_systemd_loadkey.so.
Modifiche principali nel nuovo rilascio:
- È stato aggiunto il componente «systemd-storagetm», che consente di esportare automaticamente tutti i dispositivi di blocco locali tramite il driver NVMe-TCP (NVMe over TCP), permettendo l'accesso agli archivi NVMe attraverso la rete (NVM Express over Fabrics) utilizzando il protocollo TCP. L'accesso in modalità NVMe over TCP è gestito da una nuova unità «storage-target-mode.target», che può essere abilitata durante l'avvio specificando nella riga di comando del kernel «rd.systemd.unit=storage-target-mode.target», ad esempio, quando è necessario un accesso remoto all'archivio a fini di diagnostica.
- È stato aggiunto il componente «systemd-bsod», che implementa un equivalente della 'blue screen of death', consentendo di visualizzare messaggi di errori critici (LOG_EMERG) in forma di notifica a schermo intero durante la fase di avvio.
- È stata aggiunta l'utilità «systemd-vmspawn», simile all'utilità systemd-nspawn, per avviare l'immagine di un sistema operativo in una macchina virtuale (l'utilità systemd-nspawn è destinata all'avvio di container, mentre systemd-vmspawn fornisce un'interfaccia simile per di macchine virtuali). Attualmente, per l'avvio di macchine virtuali è disponibile solo il backend basato su QEMU.
- È stata aggiunta l'utilità «varlinkctl» per invocare e ispezionare i servizi che utilizzano il protocollo Varlink.
- È stata aggiunta l'utilità «systemd-pcrlock» per analizzare e predire gli stati dei registri TPM2 PCR (Platform Configuration Register) e per formare regole di accesso salvate nell'indice TPM2 NV, che consentono l'accesso a oggetti TPM2, come le chiavi di crittografia del disco, solo da componenti verificati con firma digitale, avviati durante la fase di avvio verificato. I dati di input per l'analisi possono includere il risultato di una richiesta di stato PCR in TPM2, fornita dal firmware UEFI nel log degli eventi dell'attuale avvio (/sys/kernel/security/tpm0/binary_bios_measurements) o dal log TPM2 salvato localmente (/run/log/systemd/tpm2-measure.log). Il supporto per le regole di accesso salvate è stato aggiunto in systemd-cryptsetup, systemd-cryptenroll e systemd-repart.
- È stato aggiunto il modulo PAM pam_systemd_loadkey.so, destinato all'estrazione automatica della frase di accesso memorizzata nel keyring del kernel, utilizzata in cryptsetup per sbloccare il file system radice crittografato, e per impostare tale frase come token di autenticazione (PAM authtok). Questo modulo può essere utilizzato, ad esempio, per configurare lo sblocco automatico dell'accesso a GNOME Keyring e KDE Wallet durante il login automatico.
- È stato aggiunto il supporto per la sospensione (ibernazione) salvando il contenuto della memoria in file di paging memorizzati nel file system Btrfs.
- Sono state aggiunte alle unità le proprietà MemoryPeak, MemorySwapPeak, MemorySwapCurrent e MemoryZSwapCurrent, corrispondenti alle proprietà disponibili tramite cgroup v2 memory.peak, memory.swap.peak, memory.swap.current e memory.zswap.current. Le informazioni su queste proprietà sono incluse nell'output di «systemctl status».
- È stato rivisitato il modo di avviare i servizi, passando all'uso della chiamata posix_spawn con le opzioni CLONE_VM e CLONE_VFORK per avviare il processo, e utilizzando un file eseguibile separato systemd-executor per configurare il processo avviato. In precedenza, i processi venivano distaccati tramite la funzione fork, copiando la memoria del processo principale in modalità copy-on-write e applicando le configurazioni necessarie (montaggio degli spazi dei nomi e impostazione CGroup) prima dell'avvio del file eseguibile di destinazione tramite la chiamata exec, il che causava problemi a causa dell'impossibilità di accedere ad alcune API Glibc tra l'esecuzione delle funzioni fork ed exec.
- Il codice per il monitoraggio dei processi interni è stato aggiornato per utilizzare PIDFD invece di PID in ambienti con kernel che supportano PIDFD (PIDFD è associato a un processo specifico e non cambia, mentre il PID può essere associato a un altro processo dopo il completamento del processo attuale associato a quel PID). È stata implementata la possibilità di creare unità scope, utilizzando PIDFD invece di PID per selezionare i processi.
- È stata interrotta la supportazione delle gerarchie di directory separate (quando /usr è montato separatamente dalla radice o si separano le directory /bin e /usr/bin, /lib e /usr/lib). In futuro, è stato deciso di interrompere anche il supporto per cgroups v1, script di servizio System V e variabili EFI SystemdOptions.
- Il comando «systemctl switch-root» è stato limitato e può essere utilizzato solo in initrd. Per sostituire il file system radice in un ambiente normale, si prega di utilizzare «systemctl soft-reboot».
- I parametri obsoleti SuspendMode, HybridSleepMode, HibernateStat e HybridSleepState nella sezione «[Sleep]» del file systemd-sleep.conf sono stati dichiarati obsoleti. Questi parametri vengono ora ignorati e possono assumere solo valori predefiniti.
- È stata aggiunta l'opzione SurviveFinalKillSignal alle unità, consentendo di ignorare il segnale finale SIGTERM/SIGKILL emesso durante lo shutdown, il che può essere utile per mantenere attiva l'unità durante un riavvio soft della sistema.
- È stata aggiunta la configurazione NFTSet, che consente di utilizzare identificatori cgroup per modificare la logica nelle regole del firewall.
- È stata aggiunta l'opzione ConditionSecurity=measured-uki, che garantisce che l'unità possa essere avviata solo in un sistema avviato da un'immagine del kernel verificata in formato UKI.
- Sono state aggiunte nuove scorciatoie da tastiera «B» e «O» a systemd-boot per riavviare e spegnere il sistema dal menu di avvio. È stata aggiunta l'opzione «menu-disabled» per disabilitare la visualizzazione del menu di avvio.
- Nell'utility systemd-repart sono state aggiunte nuove opzioni «—copy-from» per ottenere le descrizioni della partizione da un'immagine FS specificata, «—copy-source» per indicare la cartella di base per il parametro CopyFiles, «—make-ddi=confext», «—make-ddi=sysext» e «—make-ddi=portable» per generare diversi tipi di DDI, e «—tpm2-device-key» per legare il disco a una specifica chiave pubblica TPM2.
- Nell'utility journalctl è stato aggiunto il valore «+N» al parametro «—lines» per stampare N registrazioni più vecchie.
- In udevadm è stata aggiunta l'opzione «—json» per l'output in formato JSON.
- Nelle utility systemd-analyze, systemd-tmpfiles, systemd-sysusers, systemd-sysctl e systemd-binfmt è stata aggiunta l'opzione «—tldr» per mostrare solo i parametri di configurazione effettivi senza spazi e commenti.
- Nel sottosistema seccomp è stato aggiunto il supporto per l'architettura LoongArch64. È consentito l'uso di seccomp per filtrare le chiamate di sistema nei servizi eseguiti senza utente root senza abilitare l'opzione NoNewPrivileges=yes.
- Nell'utility systemd-mount è stata aggiunta l'opzione «—tmpfs» per montare una nuova istanza di ‘tmpfs’.
Fonte: opennet.ru
