Systemd, il futuro della gestione di sistemi Linux
Quando accendiamo il PC e facciamo partire la nostra distribuzione Linux preferita, ci deve necessariamente essere un processo che si occupi dell’inizializzazione e dell’avvio di tutti i componenti necessari al funzionamento del sistema operativo. Questo processo, che fino a qualche anno fa si chiamava init, è responsabile della corretta procedura di avvio di tutti gli altri processi principali. Per molto tempo, le distribuzioni Linux si sono affidate a sistemi che non sfruttavano al meglio le caratteristiche di parallelizzazione che le moderne CPU offrono, impedendo la riduzione dei tempi di avvio. Poi è stato finalmente messo a punto un sistema di avvio molto più moderno, che si è fortemente diffuso nel giro di pochi anni, arrivando ad essere applicato su un grandissimo numero di distribuzioni Linux: si tratta di systemd.
Ma cos’è systemd? Si tratta di un gestore di sistema e di servizi per Linux, compatibile con gli initscript SysV e LSB. systemd fornisce una notevole capacità di parallelizzazione, usa socket e D-Bus per l’avvio dei demoni, offre un avvio su richiesta dei demoni, tiene traccia dei processi con l’utilizzo del control groups di Linux, supporta lo snapshotting e il restore dello stato del sistema, mantiene i punti di mount e di automount e implementa un elaborato servizio di controllo logico basato sulle relazioni delle dipendenze. Oggigiorno systemd è divenuto stabilmente un componente fondamentale di moltissime distribuzioni Linux.
Per capire qual è il motivo per cui systemd ha migliorato la fase di inizializzazione dei sistemi operativi Linux, iniziamo col dire che un efficiente sistema di boot dovrebbe eseguire il minor numeri di servizi e parallelizzare il più possibile la loro esecuzione. Di conseguenza, è facile supporre che un buon sistema di boot cercherà di rimandare l’avvio di un servizio come bluetoothd (il cui nome ne suggerisce le funzionalità principali), mentre darà priorità a servizi come syslog (responsabile della gestione dei log di sistema). Ed effettivamente, questo è proprio quello che systemd riesce ad implementare.
L’idea che ha consentito a systemd di aumentare il livello di parallelizzazione è stata quella di modificare tutti i demoni dei servizi in modo che essi non richiedano l’inizializzazione dei socket principali, e demandando questa operazione ad una fase di inizializzazione precedente al lancio dei processi, gestita dallo stesso systemd.
Per tutte le distribuzioni che includono systemd, vi sono diverse utility che è possibile sfruttare per la gestione del sistema e dei servizi. Il primo comando che ci interessa conoscere è systemctl che può essere utilizzato per analizzare lo stato dei servizi e del sistema quando essi sono gestiti tramite systemd. Tramite questo comando possiamo svolgere un grandissimo numero di attività. Un’altra interessante utility direttamente connessa con systemd è journalctl che può essere utilizzato per ottenere il contenuto del journal di systemd, contenente tutti i messaggi di log.
Con tutta l’enorme mole di operazioni che permette, systemd può essere al scelta giusta da adottare per una perfetta gestione del vostro sistema.
Vincenzo Abate