Runlevel
Un runlevel, come abbiamo visto sopra, è un livello operativo del sistema, il quale permette solo l'esecuzione di processi determinati. In praticamente tutti i sistemi UNIX si definiscono sette runlevel, cifrati da 0 a 6. Negli standard troviamo i runlevel:
- 0 -> Halt -> è predisposto per terminare tutti i servizi e arrestare il sistema.
- 1 -> Single-User Mode -> non configura la rete, non fa partire i demoni.
- 6 -> Reboot -> a differenza di Halt, dopo l'arresto dei servizi il sistema viene riavviato al posto di spegnersi.
In debian sono inoltre definiti i seguenti runlevel:
- S -> Single-User Mode -> anche se in realtà, più che un single-user mode rappresenta l'avvio dei servizi primari, che troviamo appunto avviati se ci fermassimo al single-user mode.
- 2-5 -> Multi-User Mode -> i runlevel 2-5 sono identici e comportano l'attivazione di tutti i servizi, così come il server grafico se installato.
In altre distribuzioni GNU/Linux, i runlevel 2-5 si differenziano ulteriormente a secondo dei servizi avviati. Ad esempio:
- 2 -> Multi-User Mode con servizi di rete DISABILITATI
- 3 -> Multi-User Mode con servizi di rete ABILITATI; in pratica l'avvio di sistema "normale", con tutti i servizi avviati
- 4 -> Not used/User-definable -> definibile come si vuole
- 5 -> X11 -> come il runlevel 3, ma con avvio del display manager
In debian inoltre si definisce ulteriormente un runlevel S (v.sopra), il quale viene caricato subito con l'avvio di init e comprende i servizi più importanti per il sistema operativo. Terminati tutti i processi di questo runlevel ci si trova praticamente in Single-User Mode. Il runlevel 1 non serve dunque ad eseguire i processi per arrivare in Single-User Mode, bensì a terminare tutti quei processi in Multi-User Mode quando si passa da quest'ultimo al Single-User Mode.
System V vs. BSD
Verso la fine degli anni '70 UNIX si biforca dando origine a due grandi rami: il System V e il BSD. Nel System V il sistema di init funziona basandosi sui sette runlevel sopracitati, dal livello 0 al livello 6. Ad ogni runlevel viene poi associata una directory (nel caso di debian /etc/rcX.d, dove X è il numero del runlevel) contenente una serie di script (relativi a servizi o demoni) i cui nomi incominciano con K (=Kill) o S (=Start). Vedremo in seguito come sono organizzati e come funzionano.
Nei sistemi invece tipo BSD esistono in pratica solo due runlevel (0 e 6) e per ognuno di questi esiste uno script (solitamente chiamato /etc/rc.d/rc.X) che eseguirà tutti i processi necessari per portare il sistema nel runlevel richiesto.
Nei sistemi GNU/Linux, essendo basati in parte sul System V e in parte sul BSD troviamo tutti e due i sistemi d'organizzazione di init. La nostra debian basa l'init sul System V, mentre ad es. la Slackware sul BSD.