IL PROCESSO DI BOOT

Precedente
Programma
Seguente
Tips & Tricks

Tutte le distribuzioni Linux recenti sono installabili direttamente tramite CD-ROM, per cui su una macchina da installare ex-novo è questo il device da impostare come principale.

Una volta installato Linux, è opportuno scegliere l'hard disk su cui è stata fatta l'installazione come device principale di boot.
Alcuni raccomandano di impostare come device principale il floppy disk, seguito dall'hard disk.
Questo per rendere più rapide le operazioni di ripristino del sistema (con un floppy di emergenza) in caso di disaster recovery.

Esistono inoltre distribuzioni che presentano un "LIVE CD" che permette l'esecuzione sul proprio sistema di un Linux completo, che viene caricato direttamente dal CD-ROM.
In questo caso l'hard disk o la memoria stessa vengono utilizzati solo per creare file temporanei, ed eventuali dati dell'utente.
Simili Live CD, che ovviamente richiedono l'impostazione del CDROM come device di boot principale, possono essere utili per operazioni di disaster recovery e, soprattutto, per provare sulla propria macchina un Linux senza di fatto doverlo installare sull'Hard Disk.

Durante l'installazione di Linux è solitamente richiesto se si vuole creare un floppy di ripristino.
Questo permette il caricamento del kernel da floppy in caso di problemi con il MBR o l'hard disk dove risiede l'installazione.
Una volta caricato il Linux dal floppy di emergenza si possono effetturare operazioni di manutenzione sul file system e i file, correggendo un'installazione corrotta.
Ovviamente, è consigliabile avere sempre a disposione un floppy di emergenza per la propria macchina.
In caso di necessità si può creare un floppy di boot con il comando (su RedHat):
mkbootdisk --device /dev/fd0 2.4.7-10
In questo caso viene creato su fd0 (il primo floppydrive) un disco con kernel 2.4.7-10 (che ovviamente deve essere disponibile)

Il boot su sistemi Intel-like

Il processo di boot di una macchina Linux su sistemi x86 Intel compatibili comporta diverse fasi.
Conoscerle e saperle interpretare è fondamentale per il troubleshooting di problemi di avvio.
Il boot di un sistema Linux prevede i seguenti stadi:
1- All'accensione il BIOS su ROM non volatile definisce l'ordine dei device da utilizzare per effettuare il boot.
2- Il BOOT SECTOR del primo device di boot contiene il codice (o i riferimenti su dove trovarlo) del loader che esegue il bootstrap del sistema operativo. Nel caso di Linux il più diffuso loader è LILO, una recente alternativa evoluta è GRUB.
3- Il loader lancia il caricamento del kernel di Linux, che si copia in memoria ed esegue i controlli e il riconoscimento dell'hardware presente.
4- A fine caricamento il kernel esegue il processo init, padre di tutti i processi, che gestisce il caricamento di tutti gli altri programmi da eseguire per completare il boot.

Nel dettaglio:

 

IL ROM BIOS

Ogni sistema Intel ha sulla motherboard un BIOS su ROM con cui gestire l'hardware del sistema.
All'avvio di un computer non c'è nulla in RAM e nessun programma predefinito da caricare.
Le istruzioni su come procedere sono nella memoria non volatile del BIOS, in cui, fra le impostazioni definibili dall'utente, c'e' la sequenza dei dispositivi da usare per il boot.
Nei BIOS più recenti è possibile bootare da floppy, cdrom, hard disk (potendo scegliere se dare precedenza a HD IDE o SCSI) e altri dispositivi quali Zip o scheda di rete.
Il BIOS cerca, nell'ordine configurato, il boot sector sui diversi dispositivi di boot previsti.
Gli hard disk hanno un boot sector per ogni partizione e un unico Master Boot Record (MBR) che è il primo boot sector dell'intero hard disk. Se si esegue il boot da un hard disk, è il codice contenuto nel MBR che viene eseguito.

I LINUX LOADER

Esistono diversi loader che eseguono il bootstrab del sistema operativo per Linux:
Su sistemi Intel Based: LILO, GRUB, LOADLIN, SYSLINUX, BOOTLIN;
su sistemi Alpha: MILO;
su sistemi Sparc: SILO.

Tutti di fatto eseguono la stessa funzione, alcuni (loadlin e syslinux) sono programmi DOS che eseguono il kernel caricandolo da una partizione DOS, altri sono adattamenti di LILO che riguardano sistemi non basati su processori Intel.
Nella pagina LILO, GRUB e Master Boot Record vengono analizzati nel dettaglio:
LILO - Il più conosciuto e diffuso
GRUB - Un loader più recente e versatile di LILO in rapida diffusione.

IL KERNEL

Il kernel, invocato dal loader, viene caricato in memoria ed inizializza i vari device driver, visualizzando vari messaggi utili per capire e conoscere il proprio sistema.
I dettagli sull'avvio del kernel, il riconoscimento e l'inizializzazione dell'hardware sono riportati nella pagina Kernel Speaks di questo modulo.

INIT E I SUOI FIGLI

L'ultima operazione eseguita dal kernel alla fine del suo caricamento è il lancio del processo init, il padre di tutti i processi.
Da questo momento tutto il codice eseguito lavora in user space (in kernel space lavorano solo il kernel e i suoi moduli).
L'init, tramite il suo file di configurazione /etc/inittab, provvede a lanciare tutti i programmi che completano il processo di caricamento.
I dettagli nella pagina Init e runlevels.

WEB RESOURCES
http://ourworld.compuserve.com/homepages/KanjiFlash/BPTour.htm A Guided Tour of a Linux Boot