Ma a che cosa servono i runlevel?
La domanda è più che lecita. Senza addentrarci troppo nei dettagli della sistemistica sappiamo tutti che lo spegnimento del PC tramite il classico strappamento-della-spina-della-nonna-in-panico-che-non-riesce-a-spegnere-il-PC non è il sistema migliore per terminare una sessione di lavoro. Questo perchè i vari processi attivi (che non sono poi così pochi [vi ricordate un certo ps -e ?]) vanno terminati con delle sequenze particolari, onde evitare problemi al prossimo riavvio della macchina. Con i runlevel possiamo dunque avviare queste sequenze particolari in modo molto semplice ed elegante, sia nella fase d'arresto, che nella fase d'avvio della macchina.
Inoltre, ricordando il sistema a multi-utenza, tipico dei sistemi UNIX, anche in questo livello (in debian dunque i runlevel 2-5) potrebbe essere comodo avviare la macchina con certi servizi abilitati e certi no. Ad esempio potremmo avere a fianco di un runlevel "completo", un runlevel senza nessun servizio grafico abilitato per svolgere ad esempio delle operazioni di manutenzione, come potrebbe essere l'aggiornamento dei driver video. Oppure un altro runlevel senza abilitati i servizi di rete per questioni di sicurezza, o senza l'avvio di server quali apache e database se non saranno utilizzati durante la sessione di lavoro.
Nonostante debian ci lascia l'assoluta libertà di costruire i nostri runlevel a multi-utenza, altre distribuzioni GNU/Linux impostano di base dei runlevel predefiniti con più o meno servizi abilitati. Nei prossimi capitoli vedremo come definire un runlevel a nostro piacimento e come passare da un runlevel all'altro.
Cambiare runelvel
Durante una sessione di lavoro è possibile cambiare il runlevel tramite il comando "telinit". Per ulteriori informazioni potete consultare il man page (man telinit). Il suo utilizzo è comunuqe molto semplice: dopo il comando va specificato il runlevel nel quale si vuole cambiare; non sarà difficile da immaginare che il comando va dato da root.
Come abbiamo visto sopra, per ad esempio spegnere il PC si passa al runlevel 0, il quale si preoccuperà di "chiudere" tutti i processi attivi. Proviamo ora pure il seguente test:
# telinit 0
Capito il sistema? Provate pure ora a giocarci un po', cambiando ad esempio al runlevel 6 e a tutti gli altri livelli.
N.B.: per passare al Single-User Mode bisogna passare al runlevel 1; passare al runlevel S (che appunto non può essere "chiamato" se non dopo il boot del Kernel) manderà in freeze il sistema... provare per credere ;-).
Personalizzare un runlevel
Senza citare ancora una volta i vantaggi dei runlevel vedremo ora come modificarli e come avviare la macchina in un runlevel determinato. Per fare ciò vi mostreremo ora due comodi tools: sysv-rc-conf (da terminale) e boot-up manager (con GUI); in ogni caso, una volta capito il principio potrete benissimo effettuare qualsiasi operazione a "manina", andando a modificare gli alias nelle directories /etc/rcX.d.