Nella tradizione UNIX esistono due diversi schemi di avvio del sistema: lo schema BSD e lo schema "System V"; entrambi devono il loro nome al sistema UNIX che li ha utilizzati per primo (lo UNIX Berkeley Software Distribution e lo UNIX System V della AT&T, rispettivamente). Lo stile di avvio BSD è il più semplice, ma quello System V, sebbene sia meno facile da comprendere (fatto che cambierà grazie alla lettura di questo capitolo), è estremamente più flessibile.
All'avvio del sistema, subito dopo aver configurato ogni cosa e aver montato il filesystem della partizione root, il kernel lancia il programma /sbin/init [1]. init è il padre di tutti i processi del sistema, e ha il compito di portare il sistema al runlevel desiderato. Nel prossimo paragrafo daremo uno sguardo al concetto di runlevel (livello di esecuzione).
Il file di configurazione di init è /etc/inittab. C'è una pagina di manuale che ne descrive l'uso nei minimi dettagli (inittab(5)), ma qui vedremo solo alcune delle opzioni di configurazione.
La prima riga che dovrebbe attirare la vostra attenzione è la seguente:
si::sysinit:/etc/rc.d/rc.sysinit |
id:5:initdefault: |
l5:5:wait:/etc/rc.d/rc 5 |
init ha anche il compito di riavviare (respawn) determinati servizi, ed è l'unico processo in grado di farlo. Questo avviene, ad esempio, per tutti i programmi di login che girano in ciascuna delle 6 console virtuali[2]. Questo, ad esempio, è il comando relativo alla seconda console virtuale:
2:2345:respawn:/sbin/mingetty tty2 |
[1] | Ora sapete perché mettere la directory /sbin su un filesystem diverso da root è una pessima idea :-) |
[2] | Modificando il file /etc/inittab potete, se lo desiderate, aumentare fino a un massimo di 64 il numero delle console virtuali, oppure ridurlo, seguendo sempre la stessa sintassi. Ma non dimenticate che anche X gira su una console virtuale, quindi lasciategliene almeno una! |