I runlevel

Un runlevel è uno stato di init e dell'intero sistema che definisce quali servizi di sistema sono operativi. I runlevel sono identificati da numeri: vedere la Tabella 7-1. Non c'è un parere comune per come usare i runlevel definiti a livello utente (dal 2 al 5): alcuni amministratori di sistema li utilizzano per definire quali sottosistemi funzionano, cioè se gira X, se la rete è operativa e così via. Altri hanno tutti i sottosistemi che girano sempre e li avviano e li fermano individualmente senza cambiare runlevel, perché i runlevel sono uno strumento troppo grezzo per il controllo del sistema. Potete decidere da voi, ma può essere più semplice seguire come fa la vostra distribuzione di Linux.

Tabella 7-1. Numeri dei runlevel

0Ferma il sistema.
1Modalità monoutente (per l'amministrazione straordinaria).
2-5Operazione normale (definiti dall'utente).
6Reboot.

I runlevel sono configurati da /etc/inittab da linee come questa:

l2:2:wait:/etc/init.d/rc 2
Il primo campo è un livello arbitrario, il secondo significa che la linea si applica per il runlevel 2. Il terzo campo dice che init dovrebbe avviare il programma che sta nel quarto campo una sola volta, quando si entra nel runlevel, e che init deve aspettare che sia completato. Il comando /etc/init.d/rc avvia qualsiasi comando sia necessario per far partire o interrompere i servizi per entrare nel runlevel 2.

Il comando nel quarto campo fa tutto il lavoro duro; inizializza i servizi che non stanno girando e ferma quelli che non dovrebbero farlo più nel nuovo runlevel. Quale è esattamente il comando e come sono configurati i runlevel dipende dalla distribuzione di Linux.

Quando parte, init cerca una linea in /etc/inittab che specifichi il runlevel di default:

id:2:initdefault:
Potete chiedere a init di entrare in un runlevel non di default all'avvio dando al kernel da linea di comando l'argomento single o emergency. Gli argomenti al kernel da linea di comando si danno ad esempio con LILO, il che permette di scegliere anche la modalità singolo utente (runlevel 1).

Mentre il sistema gira, il comando telinit può cambiare il runlevel; quando accade, init avvia il comando appropriato da /etc/inittab.