Linux parte
Dopo che il BIOS ha passato il controllo a LILO, LILO passa il controllo al kernel di Linux. Il kernel è il programma principale
del sistema operativo, che controlla tutti gli altri programmi. La prima cosa che Linux fa quando parte, è commutare il sistema
in modalità protetta. Il processore 80386 (Quando mi riferisco all'80386, parlo anche dell'80486, dei Pentium e dei Pentium Pro,
a meno che non specifichi il contrario. Il nome sarà in seguito abbreviato in 386), che controlla il computer, ha due modalità,
chiamate reale e protetta. Il DOS funziona in modalità reale, come il BIOS, ma alcuni sistemi operativi avanzati devono girare
in modalità protetta. Per questo, quando Linux parte, viene abbandonato il BIOS.
Altri tipi di processore compiranno questo stadio in maniera diversa: nessun altro processore ha bisogno di cambiare modalità,
e pochi devono avere una costruzione sulla procedura di avvio pesante come LILO e il BIOS.
Una volta che il kernel è partito, Linux funziona nello stesso modo.
|
Fig.1: Il percorso che un PC Intel fa per arrivare al prompt di shell.
init può avviare o no il Sistema X Window; se lo fa viene avviato xdm, altrimenti viene avviato getty. |
Linux controlla poi il tipo di hardware su cui sta girando: vuole sapere che tipo di disco fisso è presente, se c'è un
bus mouse, se si lavora in rete e altre cose simili. Linux non può ricordarsi queste cose tra un avvio e l'altro, così
le deve valutare ogni volta. Fortunatamente non le chiede a voi, ma all'hardware! Durante l'avvio, il kernel di Linux stampa un elenco
di messaggi. Questo processo di richiesta di informazioni sull'hardware può causare qualche problema con il sistema, ma se lo
fa, probabilmente è quando si installa Linux per la prima volta. Se avete problemi, consultate la documentazione della vostra
distribuzione.
Il kernel gestisce semplicemente gli altri programmi quindi, una volta controllato che tutto sia a posto, deve avviarne uno per fare
qualcosa di utile. Il programma avviato dal kernel si chiama init. Dopo l'avvio di init il kernel non avvia più
nessun programma; diventa un gestore di risorse, non un programma attivo.
Così, per vedere cosa fa il computer dopo l'avvio del kernel, bisogna esaminare init.
init esegue una complicata sequenza di avvio che non è la stessa per tutti i computer. Per Linux ci sono varie versioni
di init, e ognuna lavora a modo proprio. È importante anche se il vostro computer è in rete e quale distribuzione
avete usato per installare Linux. Alcune cose che possono succedere quando parte init sono:
- Controllo dei filesystem. Cos'è un filesystem? È l'organizzazione dei file in un disco fisso. In questo modo UNIX
sa quali parti del disco sono utilizzate e quali no (è come un indice di un grosso archivio o lo schedario di una biblioteca).
Sfortunatamente alcuni fattori, come una caduta di tensione, possono fare in modo che quello che le informazioni nel filesystem pensano
che stia accadendo nel resto del disco e lo stato reale del disco siano in conflitto. Un programma speciale, fsck, può
scovare queste situazioni e correggerle.
- Avviamento di speciali programmi di routingroute per la rete. Questi programmi dicono al computer come fare per contattare altri
computer.
- Rimozione di file temporanei lasciati da alcuni programmi.
- Aggiornamento dell'orologio del sistema. È più complicato di quanto possa sembrare, dato che Unix, per default, vuole
l'ora in UCT (Universal Coordinated Time, anche noto come GMT - Greenwich Mean Time) e l'orologio del CMOS, un orologio interno al
computer alimentato a batterie, è probabilmente impostato all'ora locale. Ciò significa che alcuni programmi devono
leggere l'ora dall'orologio hardware e portarlo in UCT.
Dopo che init ha finito i suoi compiti all'avvio, comincia la sua attività normale. init può essere considerato
il padre di tutti i processi di un sistema Unix. Un processo è semplicemente un programma in esecuzione; siccome ogni programma
può girare più di una volta, possono esserci due o più processi per ogni programma.
In Unix, un processo, cioè un'istanza di un programma, è creato da una chiamata di sistema (un servizio fornito dal kernel)
chiamata fork (si chiama "fork", "forchetta", perché un processo si divide in due processi separati).
init si divide in un paio di processi, che si dividono a loro volta. Nel vostro sistema , init esegue parecchie istanze
di un programma chiamato getty. getty è il programma che permette ad un utente di collegarsi, e che alla fine chiama
un programma chiamato login
|