Dopo due mesi di sviluppo è stato presentato il rilascio del manager di sistema systemd 242. Tra le novità si segnala il supporto per i tunnel L2TP, la possibilità di gestire il comportamento di systemd-logind durante il riavvio tramite variabili d'ambiente, il supporto per le partizioni di avvio estese XBOOTLDR per il montaggio in /boot, la possibilità di avviare con la partizione radice in overlayfs, oltre a un gran numero di nuove impostazioni per diversi tipi di unità.
Variazioni principali:
- In systemd-networkd è stato garantito il supporto per i tunnel L2TP;
- In sd-boot e bootctl è stata implementata la possibilità di supportare le partizioni XBOOTLDR (Extended Boot Loader), destinate al montaggio in /boot, in aggiunta alle partizioni ESP, montate in /efi o /boot/efi. I kernel, le impostazioni, le immagini initrd ed EFI possono ora essere caricati sia dalle partizioni ESP che da quelle XBOOTLDR. Questa modifica consente di utilizzare il caricatore sd-boot in scenari più conservatori, quando il caricatore stesso è posizionato in ESP e i kernel caricabili e i relativi metadati sono spostati in una partizione separata;
- È stata aggiunta la possibilità di avviare passando al kernel l'opzione «systemd.volatile=overlay», che consente di posizionare la partizione radice in overlayfs e di operare sopra un'immagine di root di sola lettura registrando le modifiche in una directory separata in tmpfs (le modifiche in questa configurazione vengono perse dopo il riavvio). Analogamente, in systemd-nspawn è stata aggiunta l'opzione «—volatile=overlay» per utilizzare funzionalità simili nei contenitori;
- In systemd-nspawn è stata aggiunta l'opzione «—oci-bundle», che consente di utilizzare set di runtime per garantire l'esecuzione isolata dei contenitori, conformi ai requisiti della specifica Open Container Initiative (OCI). È stata proposta la supporto di varie opzioni descritte nella specifica OCI per l'uso nella riga di comando e nelle unità nspawn, ad esempio, per escludere parti del filesystem possono essere utilizzate le impostazioni «—inaccessible» e «Inaccessible», e per configurare i flussi standard di output sono state aggiunte le opzioni «—console» e «—pipe»;
- È stata aggiunta la possibilità di gestire il comportamento di systemd-logind tramite variabili d'ambiente: $SYSTEMD_REBOOT_ TO_FIRMWARE_SETUP,
$SYSTEMD_REBOOT_ TO_BOOT_LOADER_MENU e
$SYSTEMD_REBOOT_ TO_BOOT_LOADER_ENTRY. Utilizzando queste variabili, è possibile collegare i propri gestori del processo di riavvio (/run/systemd/reboot-to-firmware-setup, /run/systemd/reboot-to-boot-loader-menu e
/run/systemd/reboot-to-boot-loader-entry) или вообще отключить их (при выставлении значения в false); - Nel comando «systemctl reboot» sono state aggiunte le opzioni «—boot-load-menu=» e
«—boot-loader-entry=», che consentono di scegliere un elemento specifico nel menu di avvio o una modalità di avvio dopo il riavvio; - Aggiunto un nuovo comando di isolamento sandbox «RestrictSUIDSGID=», che utilizza seccomp per vietare la creazione di file con flag SUID/SGID;
- Impostazioni «NoNewPrivileges» e «RestrictSUIDSGID» ora applicate per impostazione predefinita nei servizi con la modalità di generazione dinamica dell'identità utente («DynamicUser») attivata;
- L'impostazione predefinita nei file .link per MACAddressPolicy=persistent è stata modificata per coprire un numero maggiore di dispositivi. Le interfacce dei ponti di rete, dei tunnel (tun, tap) e dei link aggregati (bond) non si identificano che dal nome dell'interfaccia di rete, quindi questo nome è ora utilizzato come base per l'abbinamento degli indirizzi MAC e IPv4. Inoltre, è stata aggiunta l'impostazione «MACAddressPolicy=random», che può essere utilizzata per abbinare in modo casuale gli indirizzi MAC e IPv4 ai dispositivi;
- I file unit «.device» generati tramite systemd-fstab-generator ora non includono le relative unità «.mount» come dipendenze nella sezione «Wants=». La semplice connessione di un dispositivo non porta più all'avvio automatico dell'unità di montaggio, ma tali unità possono ancora essere avviate per altri motivi, ad esempio come parte di local-fs.target o come dipendenza da altre unità dipendenti da local-fs.target;
- Nei comandi «networkctl list/status/lldp» è stata aggiunta la supporto delle maschere («*» e simili) per filtrare determinati gruppi di interfacce di rete in base al loro nome;
- La variabile d'ambiente $PIDFILE ora è impostata utilizzando un percorso assoluto configurato nei servizi tramite il parametro «PIDFile=;
- All'elenco dei server DNS di riserva utilizzati se non è specificato un server DNS principale, sono stati aggiunti i pubblici servers Cloudflare (1.1.1.1). Per sovrascrivere l'elenco dei server DNS di riserva, è possibile utilizzare l'opzione «-Ddns-servers=»;
- Con la rilevazione di un controller di dispositivo USB (USB Device Controller), è assicurato l'avvio automatico del nuovo gestore usb-gadget.target (quando il sistema opera su un dispositivo USB);
- Per i file unit è stata implementata l'impostazione «CPUQuotaPeriodSec=», che definisce il periodo di tempo rispetto al quale viene misurata la quota di tempo della CPU impostata tramite l'impostazione «CPUQuota=»;
- Per i file unit è stata implementata l'impostazione «ProtectHostname=», che impedisce ai servizi di modificare le informazioni relative al nome host, anche in presenza delle autorizzazioni appropriate;
- Per i file unit è stata implementata l'impostazione «NetworkNamespacePath=», che consente di associare uno spazio dei nomi ai servizi o ai socket unit tramite l'indicazione del percorso al file dello spazio dei nomi nel pseudo-FS /proc;
- È stata aggiunta la possibilità di disattivare la sostituzione delle variabili d'ambiente per i processi avviati tramite l'impostazione «ExecStart=», aggiungendo il simbolo «:» prima del comando di avvio;
- Per i timer (unità .timer) sono stati proposti nuovi flag «OnClockChange=» e
«OnTimezoneChange=», tramite i quali è possibile gestire l'attivazione dell'unità in caso di modifica dell'orario di sistema o del fuso orario; - Sono state aggiunte nuove impostazioni «ConditionMemory=» e «ConditionCPUs=», che definiscono le condizioni per l'attivazione dell'unità in base alla dimensione della memoria e al numero di core CPU (ad esempio, un servizio che richiede molte risorse può essere avviato solo se è disponibile la quantità necessaria di RAM);
- È stata aggiunta una nuova unità time-set.target, che accetta l'orario di sistema impostato localmente, senza l'uso di sincronizzazione con server esterni di tempo preciso mediante l'unità time-sync.target. La nuova unità può essere utilizzata da servizi che sono sufficientemente precisi senza orologi locali sincronizzati;
- Nelle comandi «systemctl start» e simili è stata aggiunta l'opzione «—show-transaction», che, se specificata, fornisce un riepilogo di tutte le operazioni aggiunte alla coda a causa dell'operazione richiesta;
- In systemd-networkd è stata implementata la definizione di un nuovo stato ‘enslaved’, utilizzato invece di ‘degraded’ o ‘carrier’ per le interfacce di rete che fanno parte di link aggregati o ponti di rete. Per le interfacce primarie, in caso di problemi con uno dei link compositi, è stato aggiunto lo stato ‘degraded-carrier’;
- Negli unità .network è stata aggiunta l'opzione «IgnoreCarrierLoss=» per mantenere le impostazioni di rete in caso di interruzione della connessione;
- Attraverso l'impostazione «RequiredForOnline=» negli unità .network ora è possibile specificare lo stato minimo del link necessario per mettere l'interfaccia di rete in «online» e far attivare il gestore systemd-networkd-wait-online;
- In systemd-networkd-wait-online è stata aggiunta l'opzione «—any» per attendere la prontezza di qualsiasi delle interfacce di rete specificate, invece di tutte, oltre all'opzione «—operational-state=» per definire lo stato del link che segnala la prontezza;
- Nei unità .network sono state aggiunte le impostazioni «UseAutonomousPrefix=» e «UseOnLinkPrefix=», che possono essere utilizzate per ignorare i prefissi durante la ricezione
di annunci dal router IPv6 (RA, Router Advertisement); - Nei unità .network sono state aggiunte le impostazioni «MulticastFlood=», «NeighborSuppression=» e «Learning=» per modificare i parametri di funzionamento del ponte di rete, e l'impostazione «TripleSampling=» per cambiare la modalità di TRIPLE-SAMPLING delle interfacce virtuali CAN;
- Nei unità .netdev sono state aggiunte le impostazioni «PrivateKeyFile=» e «PresharedKeyFile=», tramite le quali è possibile specificare le chiavi privata e condivisa (PSK) per le interfacce WireGuard VPN;
- Nel /etc/crypttab sono state aggiunte le opzioni same-cpu-crypt e submit-from-crypt-cpus, che controllano il comportamento dello scheduler durante la migrazione tra i core CPU per le operazioni di crittografia;
- In systemd-tmpfiles è stata garantita la gestione del file di blocco prima dell'esecuzione delle operazioni nelle directory con file temporanei, consentendo di disabilitare temporaneamente la pulizia dei file obsoleti durante l'esecuzione di azioni specifiche (ad esempio, durante l'estrazione di un archivio tar in /tmp potrebbero apparire file molto vecchi che non possono essere eliminati fino al termine delle operazioni su di essi);
- Nel comando «systemd-analyze cat-config» è stata garantita la possibilità di analizzare la configurazione distribuita su più file, ad esempio le configurazioni utente e di sistema, il contenuto di tmpfiles.d e sysusers.d, le regole udev, ecc.
- In «journalctl» è stata aggiunta l'opzione «—cursor-file=» per specificare un file per il caricamento e il salvataggio del puntatore di posizione;
- In systemd-detect-virt è stata aggiunta la rilevazione dell'ipervisore ACRN e del sottosistema WSL (Windows Subsystem for Linux) per successivi branching tramite l'operatore condizionale «ConditionVirtualization»;
- Durante l'installazione di systemd (eseguendo «ninja install») è stata interrotta la creazione di collegamenti simbolici nella directory /etc ai file systemd-networkd.service, systemd-networkd.socket,
systemd-resolved.service, remote-cryptsetup.target, remote-fs.target,
systemd-networkd-wait-online.service e systemd-timesyncd.service. Per creare questi file ora è necessario eseguire il comando «systemctl preset-all».
Fonte: opennet.ru
