next up previous contents index
Next: Configurazione di init per Up: init Previous: init

  
init prima di tutto

init  è uno di quei programmi che sono assolutamente necessari per il funzionamento di un sistema Linux, ma che si può quasi sempre ignorare. Una buona distribuzione di Linux avrà una configurazione di init  che funzioni con la maggior parte dei sistemi, e su questi sistemi non ci sarà bisogno di fargli niente. Di solito preoccuparsi di init  serve solo se agganciate terminali seriali, modem in ingresso (non in uscita) o se volete cambiare il runlevel di default.

Quando si è avviato il kernel (cioè quando è stato caricato in memoria, si è inizializzato ed ha inizializzato tutti i driver di device, le strutture dati e cose del genere), finisce la sua parte del processo di boot facendo partire un programma a livello utente, init ; quindi, init  è sempre il primo processo (e il suo numero di processo è sempre 1).

Il kernel cerca init  in alcuni posti in cui viene tenuto storicamente, ma il suo posto corretto (su un sistema Linux) è /sbin/init . Se il kernel non trova init  cerca di avviare /bin/sh , e se non riesce a fare neanche quello fallisce l'avvio del sistema. Quando init  parte completa il processo di boot portando a termine diversi compiti di amministrazione, come il controllo dei filesystem, la pulizia di /tmp , l'avvio di svariati servizi e di una getty  per ogni terminale e console virtuale a cui si possano collegare gli utenti (vedere il capitolo 8).

Dopo che il sistema è partito correttamente, ogni volta che un utente si scollega init  fa ripartire una getty  nel terminale corrispondente (in modo che l'utente successivo possa ricollegarsi). init  adotta anche i processi orfani: quando un processo avvia un processo figlio e muore prima di esso, quest'ultimo diventa figlio di init ; è importante per varie ragioni tecniche, ma è bene saperlo, perché facilita la comprensione degli elenchi e degli alberi dei processi.7.1

Sono disponibili anche alcune varianti di init : la maggior parte dei sistemi Linux usano sysvinit  (scritto da Miquel van Smoorenburg), che è basato sull'init  del System V. Le versioni BSD di Unix hanno un init  diverso. La differenza principale sono i runlevel: il BSD non ce l'ha (almeno tradizionalmente), ma non è una differenza essenziale. Noi vedremo solo il sysvinit .


next up previous contents index
Next: Configurazione di init per Up: init Previous: init
root
1998-11-08