Dopo tre mesi di sviluppo, è disponibile il rilascio del gestore di sistema systemd 261. Le modifiche chiave includono: preparazione per il supporto API per la verifica dell'età, supporto per le sottosistemi Kexec Handover e Live Update Orchestration per il riavvio senza perdita di stato, sottosistema IMDS (Instance Metadata Service), funzionalità per proteggere l'avvio sui sistemi privi di TPM fisico (Trusted Platform Module) e il componente systemd-sysinstall con l'implementazione di un programma di installazione.
Tra le novità della nuova versione:
- È stato aggiunto un nuovo componente systemd-sysinstall con l'implementazione di un semplice programma di installazione del sistema operativo, gestibile dalla riga di comando o tramite un'interfaccia testuale interattiva. La funzionalità di systemd-sysinstall è stata costruita sulle capacità già esistenti di systemd: per la configurazione delle partizioni del disco è stato utilizzato systemd-repart, per l'installazione del kernel e la generazione del menu di avvio — il comando "bootctl link", per l'installazione del loader di avvio systemd-boot — il comando "bootctl install", per la configurazione iniziale del sistema installato (ad esempio, la scelta della lingua e del layout della tastiera) — systemd-creds.
- Nell'ambito della preparazione per l'attuazione delle normative sull'integrazione nell'OS, è stato aggiunto nel database userdb il campo birthDate con la data di nascita dell'utente. Il campo aggiunto potrà essere utilizzato nel portale xdg-desktop-portal in fase di sviluppo per le distribuzioni e nel servizio AccountsService per fornire alle applicazioni informazioni sulla fascia d'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 di riavviare e aggiornare completamente il kernel senza interrompere il funzionamento e senza perdere lo stato del sistema, dei dispositivi e dei processi. KHO fornisce la possibilità di avviare un nuovo kernel da uno vecchio senza perdita dello stato del sistema, mentre LUO attua il salvataggio dello stato dei dispositivi e della memoria operativa, garantendo la continuità delle operazioni legate al DMA e alla gestione delle interruzioni.
In systemd, the capability to save file descriptors before invoking kexec and restore them after the kernel reload through kexec has been implemented for system and user units. Custom LUO sessions can also be created in units, saved and restored during kexec execution. To enable the preservation of file descriptor store state, the setting 'FileDescriptorStorePreserve=yes' should be used.
- A systemd-imdsd subsystem has been implemented, providing a Varlink IPC-based API for local programs to access IMDS (Instance Metadata Service) services provided by various cloud system providers. IMDS allows for macchine virtuali ottenere informazioni sull'ambiente cloud, ad esempio è possibile ottenere dettagli sulla configurazione della rete, sulla posizione geografica del nodo, sul tipo di CPU e sulla dimensione dello storage. In systemd-imdsd è fornito sia un API a basso livello per accedere ai singoli campi, sia un'interfaccia di alto livello per le richieste basate su chiavi standard, associate a chiavi specifiche delle diverse piattaforme cloud. Per interagire con systemd-imdsd è stata aggiunta l'utility systemd-imds, che consente di importare campi da IMDS nel sistema locale di registrazione.
È stata aggiunta una nuova DB hwdb.d/40-imds.hwdb per il riconoscimento delle piattaforme cloud basato sulle informazioni SMBIOS e per determinare la funzionalità IMDS disponibile attualmente sul nodo. È 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 un gestore systemd-imds-generator per l'inserimento automatico del servizio per ottenere dati tramite IMDS nel caso venga rilevato il funzionamento su una delle piattaforme cloud supportate. È possibile creare immagini universali che supportano l'uso di IMDS all'avvio in ambienti cloud, ma che possono anche funzionare senza IMDS.
- In systemd-stub è stata implementata 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 con un valore casuale. Nella initrd, la chiave viene trasmessa tramite il file /.extra/boot-secret. Questa funzionalità 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 (Trusted Platform Module) hardware.
- È stato aggiunto il servizio systemd-tpm2-swtpm.service per avviare l'emulatore TPM swtpm (Software TPM Emulator), che può essere utilizzato per il ripristino automatico su un'implementazione software del TPM per avvii protetti su sistemi privi di TPM hardware. Il TPM software opera nello spazio utente e non riesce a garantire lo stesso livello di protezione del TPM hardware, ma in alcune situazioni il suo utilizzo è giustificato rispetto all'assenza di TPM. Ad esempio, il TPM software può ottenere la chiave di crittografia delle partizioni tramite la nuova funzionalità 'boot secret' e utilizzare per memorizzare il proprio stato la partizione ESP (EFI System Partition) su disco. Per l'attivazione automatica del TPM software è stato proposto un parametro nella riga di comando del kernel systemd.tpm2_software_fallback.
- È stato dichiarato stabile e inserito in /usr/bin/ il componente systemd-sysupdate, progettato per identificare, scaricare e installare automaticamente aggiornamenti utilizzando un meccanismo atomico di sostituzione di partizioni, file o directory (vengono utilizzate due partizioni/file/directory indipendenti, una delle quali contiene la risorsa attualmente in uso, mentre l'altra riceve l'aggiornamento successivo, dopodiché le partizioni/file/directory vengono scambiate).
- In systemd-resolved è stata implementata la possibilità di sovrascrivere o specificare nuovi record DNS posizionando file in formato JSON nelle directory systemd/resolve/static.d/. A differenza di /etc/hosts, nei nuovi file è possibile non solo associare Indirizzi IP ai nomi host, ma anche definire record DNS RR risorsa differenti da 'A' e 'AAAA'. Inoltre, in systemd-resolved sono state aggiunte impostazioni per la dimensione della cache DNS: ‘DNSCacheSize’, ‘MulticastDNSCacheSize’ e ‘LLMNRCacheSize’.
- È stata aggiunta l'utilità ‘storagectl’ per ispezionare i dispositivi di archiviazione e gestire il collegamento delle unità a blocchi e dei file system.
- Nell'ambito dell'iniziativa per ridurre le dipendenze, libsystemd ha implementato il caricamento dinamico delle librerie libgnutls, libmicrohttpd, libcurl, libcrypto, libssl, libfdisk e libcryptsetup
utilizzando la chiamata dlopen() in situazioni in cui le loro funzionalità sono realmente necessarie. - In systemd-tmpfiles è stato aggiunto il flag ‘—inline’, che consente di impostare le direttive nella riga di comando senza creare file di configurazione in tmpfiles.d/ e senza inviare impostazioni tramite STDIN. È stato introdotto un nuovo tipo di direttive ‘k/K’ per impostare le capacità. È stato aggiunto un file di configurazione tmpfiles.d/root.conf, che imposta i permessi 0555 (-r-xr-xr-x) per la directory radice (/) per proteggere da impostazioni di permessi errati durante la formazione dinamica del file system radice.
- Nell'utilità bootctl è stato garantito il salvataggio di una copia di backup del bootloader systemd-boot e l'impostazione di una vecchia versione in UEFI come opzione di avvio secondaria.
- In systemd-vmspawn è stata aggiunta la supporto per l'avvio diretto del kernel senza l'utilizzo del firmware UEFI. È stata implementata l'opzione «—firmware-features» per attivare o disattivare selettivamente determinate funzionalità del firmware. È stato aggiunto il modo «—console=headless» per avviare una macchina virtuale senza console e schermo. È stata aggiunta l'opzione «—image-disk-type» per scegliere il tipo di storage a blocchi utilizzato nella VM (virtio-blk, virtio-scsi, nvme, scsi-cd). È stata aggiunta l'opzione «—coco» (Confidential Computing) per attivare la modalità di crittografia della memoria. di macchine virtuali utilizzando la tecnologia AMD SEV-SNP.
- In systemd-hostnamed e /etc/machine-info è stata aggiunta la supporto per l'associazione di tag arbitrari al sistema attuale, utilizzando il parametro «Tags». I tag impostati possono poi essere utilizzati per applicare selettivamente le impostazioni con verifica tramite l'espressione ConditionMachineTag.
- Sono state 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 operatività del sistema (di default 15 secondi). Se viene avviato un arresto o un riavvio prima della scadenza, viene aggiunto un ritardo corrispondente nella fase finale.
- Per i 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 firma digitale con dm-verity, e CPUPressureWatch/CPUPressureThresholdSec/IOPressureWatch/IOPressureThresholdSec per ricevere notifiche su un elevato carico della CPU e input/output.
- È stato ampliato l'elenco delle metriche fornite dall'utilità systemd-report. Ad esempio, sono state aggiunte informazioni sulla dimensione della memoria fisica e sui core CPU attivi, dati sul contenuto dei campi SMBIOS e /etc/machine-info, informazioni sul supporto della modalità Confidential Computing e dettagli sul produttore dei chip TPM2.
- In systemd-oomd è stata implementata la possibilità di definire regole per filtrare i processi in caso di carenza di memoria nel sistema. Le regole possono essere impostate nella directory /etc/systemd/oomd/rules.d/ o nei unit di servizio tramite la direttiva OOMRule.
- In systemd-socket-proxy è stata aggiunta la supporto per il protocollo "PROXY", conforme alla prima versione del protocollo "haproxy".
- In systemd-networkd, a new backend sd-dhcp-relay has been implemented for DHCP relays. The settings in the [DHCPServer] section — BindToInterface, RelayTarget, RelayAgentCircuitId, and RelayAgentRemoteId are now deprecated; instead, the DHCPRelay parameter in the [Network] section and a series of new settings in the [DHCPRelay] section and the networkd.conf file should be used. The command 'networkctl dhcp-lease INTERFACE' has been added to save a dump with information about IP address bindings (DHCP lease).
- The systemd-nspawn utility has added the option '—restrict-address-families', and in .nspawn files, the RestrictAddressFamilies setting to limit the socket address families used in the container. In future releases, only the AF_INET, AF_INET6, and AF_UNIX families will be allowed by default.
- Support for the old udev database format (version 0.x) has been discontinued. Hot updates from systemd versions to release 247 are no longer supported.
- Quando si compila con la libreria C musl, è ora richiesta almeno la versione 1.2.6 di musl.
Additionally, the release of the liberated-systemd project 261 can be noted, which develops a fork of systemd free from code that can be used for user tracking. The proposed release focuses on removing the code that added a birthDate field to userdb with the user's date of birth, and the homectl utility has the option '—birth-date' for setting age.
Fonte: opennet.ru
