Uscita del gestore di sistema systemd 261 e fork liberato-systemd 261

Dopo tre mesi di sviluppo, è disponibile il rilascio del gestore di sistema systemd 261. Le modifiche principali includono: preparazione per il supporto dell'API per la verifica dell'età, supporto per i sottosistemi Kexec Handover e Live Update Orchestration per il 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 dell'installer.

Tra le novità del nuovo rilascio:

  • Aggiunto un nuovo componente systemd-sysinstall con l'implementazione di un semplice installer di 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 dei dischi è stato utilizzato 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 installato (ad esempio, scelta della localizzazione e della disposizione della tastiera) — systemd-creds.
  • Nell'ambito della preparazione all'implementazione dei requisiti delle leggi sull'integrazione nell'OS, nell'API per la verifica dell'età, nel database userdb è stato aggiunto 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 categoria di età dell'utente tramite l'interfaccia D-Bus «org.freedesktop.AgeVerification1» o «org.freedesktop.ParentalControls». Per impostare l'età, nell'utility homectl è stata aggiunta 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 fermare il lavoro e senza perdere lo stato di sistema, dispositivi e processi. KHO offre la possibilità di avviare un nuovo kernel dal vecchio senza perdita di stato del sistema, mentre LUO attua il salvataggio dello stato dei dispositivi e della memoria operativa, garantendo la continuità delle operazioni legate a DMA e gestione delle interruzioni.

    In systemd per unit di sistema e utente è stata implementata la possibilità di salvare i descrittori di file prima della chiamata a kexec e di recuperarli dopo il riavvio del kernel tramite kexec. Nei unit è possibile anche creare sessioni LUO personalizzate, salvate e ripristinate durante l'esecuzione di kexec. Per abilitare il salvataggio dello stato dei descrittori di file, è necessario utilizzare l'impostazione 'FileDescriptorStorePreserve=yes'.

  • È stato implementato il 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 provider di sistemi cloud. L'IMDS consente macchine virtuali di ottenere informazioni sull'ambiente cloud, ad esempio, è possibile ottenere dettagli sulla configurazione di rete, sulla posizione geografica del nodo, sul tipo di CPU e sulle dimensioni dell'archiviazione. In systemd-imdsd è fornita sia un'API a basso livello per accedere ai singoli campi che un'interfaccia ad alto livello per le richieste su chiavi standard associate a chiavi specifiche delle singole piattaforme cloud. Per interagire con systemd-imdsd è stata aggiunta l'utilità systemd-imds, che consente di importare campi dall'IMDS nel sistema locale di registrazione.

    Per riconoscere le piattaforme cloud in base alle informazioni provenienti da SMBIOS e determinare le funzionalità IMDS disponibili sul nodo attuale, è stata aggiunta una nuova 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 un gestore systemd-imds-generator per l'autosostituzione del servizio per ottenere dati tramite IMDS nel caso venga identificato un funzionamento sotto piattaforma cloud supportata. È possibile creare immagini universali che supportano l'uso di IMDS all'avvio in ambienti cloud, ma che possono funzionare anche senza IMDS.

  • In systemd-stub è stata implementata la funzionalità 'boot secret', che consente di generare una chiave basata su una variabile EFI, conservata in un'area inaccessibile per il sistema operativo e inizializzata con un valore casuale. Nell'initrd, la chiave è trasferita tramite il file /.extra/boot-secret. Questa funzionalità può essere necessaria per ottenere una chiave casuale specifica del sistema per la verifica del processo di avvio o per la crittografia su sistemi privi di TPM (Trusted Platform Module) hardware.
  • Aggiunto il servizio systemd-tpm2-swtpm.service per l'avvio dell'emulatore di chip TPM swtpm (Software TPM Emulator), da utilizzare per il ripristino automatico alla realizzazione software di TPM per il avvio sicuro su sistemi senza TPM hardware. Il TPM software opera nello spazio utente e non raggiunge il livello di protezione di un 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 il parametro della riga di comando del kernel systemd.tpm2_software_fallback.
  • Dichiarato stabile e collocato in /usr/bin/ il componente systemd-sysupdate, destinato all'identificazione automatica, al download e all'installazione degli aggiornamenti utilizzando un meccanismo atomico di sostituzione di partizioni, file o directory (vengono utilizzate due partizioni/file/directory indipendenti, in cui una contiene la risorsa attualmente in uso, mentre l'altra si occupa di installare l'aggiornamento successivo, dopo di che le partizioni/file/directory vengono scambiate).
  • In systemd-resolved è stata implementata la possibilità di sovrascrivere o specificare nuovi record DNS attraverso la collocazione di file in formato JSON nelle directory systemd/resolve/static.d/. A differenza di /etc/hosts, nei nuovi file è possibile non solo collegare Indirizzi IP a nomi host, ma anche definire registrazioni DNS resource RR diverse da "A" e "AAAA". Inoltre, in systemd-resolved sono state aggiunte impostazioni per la dimensione della cache DNS: 'DNSCacheSize', 'MulticastDNSCacheSize' e 'LLMNRCacheSize'.
  • Aggiunto lo strumento 'storagectl' per l'ispezione dei dispositivi di archiviazione e la gestione della connessione di dispositivi a blocchi e file system.
  • Nell'ambito dell'iniziativa per ridurre le dipendenze, in libsystemd è stata implementata il caricamento dinamico delle librerie libgnutls, libmicrohttpd, libcurl, libcrypto, libssl, libfdisk e libcryptsetup
    tramite la chiamata dlopen() in situazioni in cui le loro funzioni sono effettivamente 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 le configurazioni tramite STDIN. È stato aggiunto un nuovo tipo di direttiva ‘k/K’ per impostare le capabilities. È stato aggiunto un file di configurazione tmpfiles.d/root.conf, che imposta i permessi di accesso 0555 (-r-xr-xr-x) per la directory radice (/) per proteggere da impostazioni errate dei permessi durante la generazione dinamica del file system principale.
  • Nell'utilità bootctl è stata implementata la salvataggio di un backup del bootloader systemd-boot e la registrazione di una versione precedente in UEFI come opzione di avvio di emergenza.
  • In systemd-vmspawn è stata aggiunta la supporto per il boot diretto del kernel senza utilizzare il firmware UEFI. È stata implementata l'opzione «—firmware-features» per attivare o disattivare selettivamente determinate funzionalità del firmware. È stata aggiunta l'opzione «—console=headless» per avviare la macchina virtuale senza console e schermo. È stata aggiunta l'opzione «—image-disk-type» per scegliere il tipo di archiviazione a blocchi utilizzato nella VM (virtio-blk, virtio-scsi, nvme, scsi-cd). È stata aggiunta l'opzione «—coco» (Confidential Computing) per abilitare la modalità di crittografia della memoria. macchine virtuali utilizzando la tecnologia AMD SEV-SNP.
  • In systemd-hostnamed e /etc/machine-info è stata aggiunta la supporto per l'assegnazione di tag arbitrari al sistema attuale, utilizzando il parametro «Tags». I tag impostati possono essere quindi 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 blocco.
  • 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 introdotte nuove impostazioni CPUSetPartition per impostare il tipo di partizione cpuset in cgroup («root», «isolated», «member»), RestrictFileSystemAccess per consentire l'esecuzione solo di file eseguibili, verificati tramite firma digitale mediante dm-verity, e CPUPressureWatch/CPUPressureThresholdSec/IOPressureWatch/IOPressureThresholdSec per ricevere notifiche su un'elevata carico di CPU e input/output.
  • L'elenco delle metriche fornite dallo strumento systemd-report è stato ampliato. Ad esempio, sono state aggiunte informazioni sulla dimensione della memoria fisica e sui core attivi della CPU, 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 stabilire 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 file unit di servizio tramite la direttiva OOMRule.
  • In systemd-socket-proxy è stato aggiunto il supporto per il protocollo "PROXY", corrispondente alla prima versione del protocollo "haproxy".
  • In systemd-networkd è stato implementato un nuovo backend sd-dhcp-relay per i relay DHCP. Sono state dichiarate obsolete le impostazioni nella sezione "[DHCPServer]" — BindToInterface, RelayTarget, RelayAgentCircuitId e RelayAgentRemoteId, per le quali è necessario utilizzare il parametro DHCPRelay nella sezione "[Network]" e una serie di nuove impostazioni nella sezione [DHCPRelay] e nel file networkd.conf. È stato aggiunto il comando ‘networkctl dhcp-lease INTERFACE’ per salvare un dump con informazioni sull'assegnazione degli indirizzi IP (DHCP lease).
  • Nello strumento systemd-nspawn è stata aggiunta l'opzione "—restrict-address-families", e nei file .nspawn l'impostazione RestrictAddressFamilies per limitare le famiglie di indirizzi dei socket utilizzabili nel contenitore. Nelle prossime versioni, per default 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 dalle versioni di systemd precedenti alla release 247 non è più supportato.
  • Nella compilazione con la libreria C musl è ora richiesta almeno la release musl 1.2.6.

Inoltre, si segnala il rilascio del progetto liberated-systemd 261, che sviluppa un fork di systemd esente da codice che potrebbe essere utilizzato per monitorare gli utenti. Nel rilascio proposto, le modifiche riguardano la rimozione del codice che aggiungeva nel userdb il campo birthDate con la data di nascita dell'utente, e nell'utility homectl l'opzione "—birth-date" per impostare l'età.

Fonte: opennet.ru

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster