Dopo tre mesi di sviluppo disponibile rilascio del gestore di sistema systemd 261. Modifiche principali: preparazione per il supporto API per la verifica dell'età, supporto per le sottosistemi Kexec Handover e Live Update Orchestration per un riavvio senza perdita di stato, sottosistema IMDS (Instance Metadata Service), funzionalità per la protezione dell'avvio su sistemi senza TPM fisico (Trusted Platform Module), componente systemd-sysinstall con implementazione di un installer.
Tra cambiamenti nella nuova versione:
- Aggiunto un nuovo componente systemd-sysinstall con implementazione di un semplice installer del sistema operativo, gestibile dalla riga di comando o tramite un'interfaccia testuale interattiva. La funzionalità di systemd-sysinstall è stata formata dalle già esistenti capacità di systemd: per la configurazione delle partizioni è coinvolto systemd-repart, per l'installazione del kernel e la generazione del menu di avvio — il comando «bootctl link», per l'installazione del bootloader systemd-boot — il comando «bootctl install», per la configurazione iniziale del sistema in fase di installazione (ad esempio, scelta della localizzazione e della disposizione della tastiera) — systemd-creds.
- Nel contesto della preparazione all'attuazione delle richieste di legge per l'integrazione nell'OS di API per la verifica dell'età nel database userdb è stato aggiunto un campo birthDate con la data di nascita dell'utente. Il campo aggiunto potrà essere utilizzato nel portale in fase di sviluppo per le distribuzioni xdg-desktop-portal e nel servizio AccountsService per fornire alle applicazioni informazioni sulla categoria di età dell'utente tramite l'interfaccia D-Bus org.freedesktop.AgeVerification1 o org.freedesktop.ParentalControls. Per impostare l'età, è stata aggiunta all'utilità homectl l'opzione —birth-date.
- Nel gestore PID1 è stato aggiunto il supporto per i sottosistemi del kernel Linux LUO (Live Update Orchestration) e KHO (Kexec Handover), che consentono un riavvio e un aggiornamento completo del kernel senza fermare il funzionamento e senza perdere lo stato del sistema, dei dispositivi e dei processi. KHO fornisce possibilità per avviare un nuovo kernel da uno vecchio senza perdita di stato del sistema, mentre LUO realizza il salvataggio dello stato dei dispositivi e della memoria operativa, garantendo continuità nelle operazioni relative al DMA e nella gestione delle interruzioni.
In systemd, è stata implementata la possibilità di salvare i descrittori di file per unità di sistema e utente prima della chiamata a kexec e recuperarli dopo il riavvio del kernel tramite kexec. Negli unit è anche possibile creare sessioni personalizzate. LUO, memorizzati e ripristinati durante l'esecuzione di kexec. Per abilitare il salvataggio dello stato del deposito dei file descriptor, è necessario utilizzare l'impostazione FileDescriptorStorePreserve=yes. - È stata implementata la sottosistema systemd-imdsd, che fornisce un'API basata su Varlink IPC per consentire ai programmi locali di accedere ai servizi IMDS (Instance Metadata Service) forniti da diversi fornitori di servizi cloud. IMDS consente alle macchine virtuali di ottenere informazioni sull'ambiente cloud, ad esempio, è possibile ricevere dettagli sulla configurazione di rete, sulla posizione geografica del nodo, sul tipo di CPU e sulla dimensione dello storage. In systemd-imdsd è fornita sia un'API a basso livello per accedere ai singoli campi, sia un'interfaccia ad alto livello per interrogare chiavi comuni, corrispondenti a chiavi specifiche per singole piattaforme cloud. Per interagire con systemd-imdsd è stato aggiunto lo strumento systemd-imds, che consente di importare campi da IMDS nel sistema locale delle credenziali.
Per riconoscere le piattaforme cloud tramite le informazioni provenienti da SMBIOS e determinare la funzionalità IMDS disponibile sul nodo corrente, è stato aggiunto un nuovo DB hwdb.d/40-imds.hwdb. È stato implementato il riconoscimento delle piattaforme cloud Amazon EC2, Microsoft Azure, Google Compute Engine, Hetzner, Oracle Cloud, Scaleway, Tencent Cloud, Alibaba ECS e Vultr. È disponibile il gestore systemd-imds-generator per la sostituzione automatica del servizio per l'ottenimento di dati tramite IMDS in caso di rilevamento dell'esecuzione su una piattaforma cloud supportata. È possibile creare immagini universali che supportano l'uso di IMDS all'avvio in ambienti cloud, ma in grado di funzionare anche senza IMDS. - In systemd-stub ha implementato la funzionalità boot secret, che consente di generare una chiave basata su una variabile EFI, memorizzata in un'area non accessibile al sistema operativo e inizializzata a un valore casuale. In initrd, la chiave viene trasmessa tramite il file /.extra/boot-secret. Questa possibilità può essere necessaria per ottenere una chiave casuale specifica per il sistema per la verifica del processo di avvio o per la crittografia su sistemi privi di TPM hardware (Trusted Platform Module).
- È stato aggiunto il servizio systemd-tpm2-swtpm.service per avviare l'emulatore dei chip TPM swtpm (Software TPM Emulator), che può essere utilizzato per il rollback automatico alla realizzazione software del TPM per un avvio sicuro su sistemi privi di TPM hardware. Il TPM software opera nello spazio utente e non offre lo stesso livello di protezione del TPM hardware, ma in alcune situazioni il suo utilizzo è giustificato rispetto a lavorare senza TPM. Ad esempio, il TPM software può ottenere una chiave di crittografia delle partizioni tramite la nuova funzionalità «boot secret» e utilizzare la partizione ESP (EFI System Partition) sul disco per memorizzare il proprio stato. È stato proposto un parametro della riga di comando per abilitare automaticamente il TPM software: systemd.tpm2_software_fallback.
- È stato dichiarato stabile e inserito in /usr/bin il componente systemd-sysupdate, progettato per la rilevazione automatica, il download e l'installazione degli aggiornamenti utilizzando un meccanismo atomico di sostituzione delle partizioni, file o cataloghi (si utilizzano due partizioni/file/cataloghi indipendenti, uno dei quali contiene la risorsa attiva, mentre l'altro installa il prossimo aggiornamento, dopodiché le partizioni/file/cataloghi vengono scambiati).
- In systemd-resolved È stata implementata la possibilità di sovrascrivere o specificare nuovi record DNS mediante la collocazione di file in formato JSON nelle directory systemd/resolve/static.d/. A differenza di /etc/hosts, nei nuovi file è possibile non solo associare indirizzi IP a nomi di host, ma anche definire record DNS RR, diversi da «A» e «AAAA». Inoltre, in systemd-resolved sono state aggiunte impostazioni per la dimensione della cache DNS: DNSCacheSize, MulticastDNSCacheSize e LLMNRCacheSize.
- È stato aggiunto lo strumento ‘storagectl’ per ispezionare i dispositivi di memorizzazione e gestire il collegamento di dispositivi a blocchi e file system.
- Nell'ambito di di un'iniziativa per ridurre le dipendenze, libsystemd ora implementa il caricamento dinamico delle librerie libgnutls, libmicrohttpd, libcurl, libcrypto, libssl, libfdisk e libcryptsetup mediante la chiamata dlopen() in situazioni in cui le loro funzioni sono effettivamente necessarie.
- In systemd-tmpfiles è stato aggiunto il flag —inline, che consente di specificare le direttive nella riga di comando senza creare file di configurazione in tmpfiles.d/ e senza inviare impostazioni tramite STDIN. È stato aggiunto un nuovo tipo di direttive k/K per impostare capabilities. È stato aggiunto il file di configurazione tmpfiles.d/root.conf, che imposta i permessi 0555 (-r-xr-xr-x) alla directory radice (/) per proteggere da indicazioni errate dei permessi durante la formazione dinamica del filesystem radice.
- Nell'utility bootctl è stato garantito il salvataggio di una copia di riserva del bootloader systemd-boot e l'impostazione della vecchia versione in UEFI come opzione di avvio di emergenza.
- In systemd-vmspawn aggiunta la supporto per il boot diretto del kernel senza l'uso del firmware UEFI. Implementata l'opzione —firmware-features per abilitare o disabilitare selettivamente funzionalità specifiche dei firmware. Aggiunta l'opzione —console=headless per avviare una macchina virtuale senza console e schermo. Aggiunta l'opzione —image-disk-type per scegliere il tipo di archiviazione a blocchi utilizzato nella VM (virtio-blk, virtio-scsi, nvme, scsi-cd). Aggiunta l'opzione —coco (Confidential Computing) per attivare la modalità di crittografia della memoria delle macchine virtuali utilizzando la tecnologia AMD SEV-SNP.
- In systemd-hostnamed e /etc/machine-info è stata aggiunta la supporto per aggiungere tag arbitrari al sistema corrente utilizzando il parametro Tags. I tag impostati possono quindi essere utilizzati per applicare selettivamente impostazioni con una verifica tramite l'espressione ConditionMachineTag.
- Aggiunte le impostazioni EventLoopRateLimitIntervalSec ed EventLoopRateLimitBurst, che limitano l'intensità del ciclo di elaborazione degli eventi in PID1 per liberare risorse CPU in caso di loop infinito.
- Nel gestore dei servizi è stata implementata l'impostazione MinimumUptimeSec per definire il tempo minimo di funzionamento del sistema (15 secondi per impostazione predefinita). Se prima di tale scadenza viene avviato un arresto o un riavvio, viene aggiunto un ritardo corrispondente alla fase di chiusura.
- Per le unit, sono state implementate nuove impostazioni CPUSetPartition per impostare il tipo di partizione cpuset nel cgroup (root, isolated, member), RestrictFileSystemAccess per consentire l'esecuzione solo di file eseguibili verificati tramite una firma digitale utilizzando dm-verity, e CPUPressureWatch/CPUPressureThresholdSec/IOPressureWatch/IOPressureThresholdSec per ricevere notifiche su un carico elevato della CPU e dell'input/output.
- Espanso l'elenco delle metriche restituite dall'utilità systemd-report. Ad esempio, aggiunti i dettagli sulla dimensione della memoria fisica e dei nuclei attivi della CPU, i dati sui contenuti dei campi SMBIOS e /etc/machine-info, informazioni sul supporto della modalità Confidential Computing e dettagli sul produttore dei chip TPM2.
- In systemd-oomd implementata la possibilità di definire regole per il filtraggio dei processi in caso di esaurimento della memoria nel sistema. Le regole possono essere specificate nella directory /etc/systemd/oomd/rules.d/ o nei servizi unit attraverso la direttiva OOMRule.
- In systemd-socket-proxy aggiunta la supporto per il protocollo PROXY, conforme alla prima versione del protocollo haproxy.
- In systemd-networkd è stato realizzato un nuovo backend sd-dhcp-relay per i relay DHCP. Le impostazioni nella sezione [DHCPServer] — BindToInterface, RelayTarget, RelayAgentCircuitId e RelayAgentRemoteId sono state dichiarate obsolete; al loro posto è necessario utilizzare il parametro DHCPRelay nella sezione [Network] e una serie di nuove impostazioni nella sezione [DHCPRelay] e nel file networkd.conf. È stata aggiunta la comando networkctl dhcp-lease INTERFACE per salvare un dump con le informazioni sull'assegnazione degli indirizzi IP (affitto DHCP).
- Nell'utilità systemd-nspawn è stata aggiunta l'opzione —restrict-address-families, e nel file .nspawn la configurazione RestrictAddressFamilies per limitare le famiglie di indirizzi dei socket utilizzate nel contenitore. Nelle future versioni, per impostazione predefinita, saranno consentite solo le famiglie AF_INET, AF_INET6 e AF_UNIX.
- È stata interrotta la supporto per il vecchio formato del database udev (versione 0.x). L'aggiornamento a caldo da versioni di systemd fino alla versione 247 (opennet.ru) non è più supportato.
- Nella compilazione con la libreria C musl è ora richiesta almeno la release musl 1.2.6.
In aggiunta, si può notare il rilascio del progetto liberated-systemd 261, un fork di systemd, esente da codice che può essere utilizzato per monitorare gli utenti. Nella versione proposta, le modifiche consistono nella rimozione del codice che aggiungeva nel userdb il campo birthDate con la data di nascita dell'utente, e nell'utilità homectl l'opzione —birth-date per impostare l'età.
Fonte: linux.org.ru
