Nelle distribuzioni Linux del passato, il kernel demandava la configurazione del sistema in fase di avvio del sistema al componente SysV init. SysV e il processo init sono nei sistemi Unix da anni.
Tuttavia una decina di anni fa le cose hanno iniziato a cambiare: SysV presenta delle limitazioni e sembrava che Upstart avrebbe sostituito il sistema init di SysV. Upstart è un’evoluzione di SysV che permette la partenza in parallelo, a differenza di SysV, dei servizi su Linux.
Nei mesi successivi, però, è salita alla ribalta una nuova tecnologia: Systemd.
Una delle caratteristiche peculiari di Systemd è l’avvio dei servizi in background e in parallelo senza richiedere che le dipendenze tra questi servizi siano specificate in anticipo: cioò consente un uso delle risorse hardware più efficiente e permette al sistema di avviarsi rapidamente.
Systemd gestisce anche altre risorse che venivano avviate utilizzando script specifici della distribuzione; come effetto collaterale, questo elimina le varie interfacce utente e le differenze di configurazione tra le distribuzioni.
Con Systemd i diversi compiti che vanno svolti durante l’avvio del sistema come la creazione di socket, configurazione dell’hardware, montaggio di dispositivi di archiviazione, avvio di servizi in background sono tutti organizzati in “unità”.
Unn file di configurazione per l’unità appropriata è ciò che necessita Systemd.
Esso infatti riconosce il tipo di unità dal nome file dell’unità. I file che terminano con .service creano unità di servizio: questi servono per la gestione dei servizi.
I file unit associati a systemd e ai servizi si trovano nella directory /lib/systemd/system/.
I file che terminano con .target definiscono gruppi di unità e servono per definire un punto d’arrivo al termine dell’avvio, simile al concetto di Run Level di SysV.
Per fare un esempio di target, l’unità multi-user.target avvia tutti quei servizi che venivano avviati runlevel 3 senza avviare un ambiente desktop. Quest’ultimo invece compare se viene raggiunta l’unità graphical.target, rendendo questa unità l’equivalente del runlevel 5 e tipicamente è target predefinito su sistemi desktop e workstation.
Anche in Systemd è possibile specificare delle dipendenze all’avvio di servizi. Infatti dove necessario, l’aggiunta di “want” ai file delle unità consente di definire le dipendenze tra le unità. Questo può essere importante per servizi come il server web Apache, che si aspetta un ambiente di rete completamente configurato al momento dell’avvio del web server.
Lascia un commento