Il processo di boot più da vicino

Si può avviare Linux sia da un floppy che dall'hard disk. La sezione sull'installazione nella guida Installation and Getting Started ([IGS]) vi spiega come installare Linux in modo da poterlo avviare nel modo che volete.

Al boot di un PC, il BIOS fa vari test per controllare che tutto sia a posto[1], e poi inizia il vero boot: sceglie un disco (tipicamente il primo floppy, se ce n'è uno inserito, oppure il primo hard disk, se nel computer ce ne è installato uno, ma l'ordine può essere cambiato) e ne legge il primo settore, che si chiama boot sector (``settore principale di boot''); per un hard disk si chiama anche master boot record, dato che un hard disk può contenere diverse partizioni, ciascuna con il proprio settore di boot.

Il settore di boot contiene un piccolo programma (abbastanza piccolo da entrare in un singolo settore) la cui responsabilità è di leggere il vero sistema operativo dall'hard disk ed avviarlo. Quando si avvia Linux da un floppy disk, il settore di boot contiene del codice che legge semplicemente le prime centinaia di blocchi (a seconda della reale grandezza del kernel, naturalmente) in un punto predeterminato della memoria. Su un floppy di boot di Linux non c'è un filesystem, ma il kernel è semplicemente immagazzinato in settori consecutivi, dato che questo semplifica il processo di caricamento. È possibile, comunque, fare il boot da floppy con un filesystem, usando LILO, il LInux LOader.

Quando si fa il boot dall'hard disk, il codice nel master boot record esamina la tabella delle partizioni (anch'essa nel master boot record), identifica la partizione attiva (quella che è contrassegnata come avviabile), legge il settore di boot di quella partizione e poi inizializza il codice che vi si trova. Il codice nel settore di boot di quella partizione fa la stessa cosa che il settore di boot di un dischetto: legge il kernel dalla partizione e lo inizializza. I dettagli cambiano, comunque, dato che di solito non è utile avere una partizione separata solo per l'immagine del kernel, quindi il codice nel settore di boot della partizione non può semplicemente leggere il disco in maniera sequenziale, ma deve trovare i settori dove li ha messi il filesystem. Ci sono diversi modi per aggirare il problema, ma il più comune è usare LILO (i dettagli sul suo utilizzo sono irrilevanti per questa discussione: vedere la documentazione di LILO per altre informazioni, è molto accurata).

Quando si fa il boot con LILO, normalmente il computer passa direttamente alla lettura e al caricamento del kernel di default. È anche possibile configurare LILO per poter scegliere il kernel da caricare da un elenco, o anche per caricare sistemi diversi da Linux, ed è possibile scegliere quale kernel o sistema operativo avviare al momento del boot. LILO può essere configurato in modo che, se si tiene premuto alt, shift, o ctrl al momento del boot (quando si carica LILO), chieda quale sistema avviare, con un tempo massimo configurabile dopo il quale avvia il kernel di default.

Con LILO, è anche possibile dare un argomento da linea di comando al kernel dopo il suo nome o quello del sistema operativo.

Sia il boot da floppy che quello da hard disk hanno i loro vantaggi, ma in genere fare il boot da hard disk è più comodo, dato che evita la noia di dover maneggiare i floppy; è anche più veloce, ma configurare il sistema in modo che faccia il boot da disco fisso può essere più problematico, quindi molti prima installano il sistema in modo che faccia il boot dal floppy e poi, quando il sistema è installato e funzionante, installano LILO e cominciano a fare il boot dall'hard disk.

Dopo che il kernel di Linux è stato caricato in memoria, in qualsiasi modo questo accada, ed è stato avviato, succede più o meno questo:

Note

[1]

Questo processo si chiama power on self test, o POST, cioè ``auto--test di avvio''.