venerdì 7 settembre 2012

systemd, Chakra cambia passo...di nuovo


Chakra cresce e si evolve continuamente, nel prossimo futuro vedremo molti cambiamenti tra cui il passaggio a systemd, cerchiamo dunque di spiegare con parole e concetti semplici di cosa si tratta e quali benefici promette di portare alla nostra distribuzione.

L'avvio del sistema è una fase molto delicata, le distribuzioni Linux prevedono che un “processo padre” avviato direttamente dal kernel, assuma la gestione del lancio di tutti i programmi necessari per rendere il sistema attivo ed inizializzare i processi vitali.

Il processo di avvio è attualmente gestito per Chakra da init abbreviazione di System V init daemon che esegue gli script di avvio secondo le istruzioni contenute nel file /etc/inittab, una sorta di elenco della sequenza di script da avviare.

Alcune delle operazioni svolte da init sono:

- configurazione dell'ambiente di rete
- avvio swap per la memoria virtuale
- impostazione del nome dell'host
- check del filesystem root
.
.
.

Il rilevamento di errori che non possono essere riparati automaticamente durante la fase di file system check, può portare al blocco del processo di boot.

systemd è un gestore di sistema e servizi che promette di essere migliore di init offrendo molte nuove funzionalità come socket e dbus-activation, utilizzo dei cgroups (gruppi di controllo), ma soprattutto possibilità di parallelizzazione aggressiva che si risolve in un avvio più rapido del sistema; introduce inoltre varie nuove funzioni e strumenti per gli amministratori di sistema.

Vediamo più da vicino alcune caratteristiche che rendono almeno sulla carta, systemd migliore di init
.

SINTASSI.....KISS
Al posto di script per la shell systemd utilizza file .service che definiscono le varie funzionalità offerte.


La sintassi di tali file risulta più semplice e maggiormente esplicativa rispetto a bash.



AVVIO INTELLIGENTE
systemd non avvia script sulla base di stati di attività predefiniti, utilizza piuttosto le dipendenze e gli eventi per decidere quando avviare un servizio, una gestione insomma on-demand, consentita dall'attivazione D-BUS.

Ad esempio se non ci sono stampanti collegate al sistema il servizio CUPS non sarà avviato, al medesimo modo se non esiste una rete, systemd non si occuperà di avviare servizi come NFS o Samba.

systemd avvia invece i processi demone su richiesta, ad esempio il servizio di stampa verrà avviato solo quando si proverà ad effettuare una stampa, garantendo una migliore ottimizzazione delle risorse disponibili.

AVVIO PARALLELO

systemd è in grado di avviare contemporaneamente tutti i servizi necessari rispettando le dipendenze e le necessità del sistema.

Questo, combinato con il fatto che non ha bisogno di avviare un interprete della shell per ogni singolo script, consente di ottenere avvii più veloci.

SERVIZI “SOTTO CONTROLLO”
I servizi in systemd sono monitorati, il vantaggio è che se un crash di sistema interrompe bruscamente un servizio, systemd avendo rilevato l'accaduto tenterà di riavviarlo. In secondo luogo le procedure di interruzione dei servizi sono più efficaci grazie all'uso della funzione cgroup implementata dal kernel 2.6.24, che permette di creare veri e propri “contenitori di processi”, grazie ai quali difficilmente un processo può sfuggire al controllo di uno script come accade talvolta con sysvinit.

GESTIONE PUNTI DI MONTAGGIO E AUTOMONTAGGIO

systemd monitora tutti i punti di montaggio e può essere usato per modificarli, /etc/fstab può essere usato come configurazione addizionale.

Usando l'opzione comment= di fstab, è possibile persino marcare le voci in /etc/fstab per lasciare a systemd il controllo dei punti di montaggio.

STANDARDIZZAZIONE
systemd mira alla standardizzazione degli script di avvio che tendono ad essere diversi per ogni distribuzione. Questo dovrebbe ridurre il carico di lavoro per le distribuzioni dato che condivideranno il lavoro minimizzando la frammentazione, è tuttavia richiesto l'adattamento ad uno standard comune nello specifico parliamo dell'uso di systemctl per controllare i servizi in luogo dei file /etc/rc*.

systemd è inoltre retro-compatibile con gli script di avvio vecchio stile, questo significa che gli script non standard (non inclusi in systemd) continueranno a funzionare.


Per una trattazione maggiormente approfondita sugli aspetti tecnici vi rimando a:

wiki Chakra

wiki Fedora

Il Futuro è Adesso...

$ exit

3 commenti:

  1. Complimenti per l'ottimo articolo! Bravo!

    RispondiElimina
  2. Complimenti,non sapevo di questa cosa dell'avvio intelligente
    Prima ero parzialmente contrario a systemd per via dei millemila file al posto di rc.conf,ma ora ho visto moltissimi vantaggi
    p.s. quando finiscono i capcha?

    RispondiElimina
  3. Su arch sono passato a systemd puro, è semplicemente perfetto. Lo spegnimento del notebook è questione di due secondi (nel vero senso della parola), quasi in tempo reale.
    Anche i tempi dell'accensione si riducono della metà.
    Viva systemd

    RispondiElimina