E.2. GRUB

GNU GRand Unified Bootloader (GRUB) è un programma che consente di selezionare quale sistema operativo o kernel è da caricare al momento dell'avvio del sistema. Consente inoltre di passare argomenti al kernel.

E.2.1. Il processo d'avvio e GRUB sui sistemi x86 basati sul BIOS

Questa sezione descrive il ruolo specifico che GRUB esercita durante l'avvio di un sistema x86 basato sul BIOS. Per una panoramica generale del processo d'avvio consultare Sezione F.2, «Esame dettagliato del processo di avvio».
Il processo di caricamento di GRUB avviene in diverse fasi:
  1. La Fase 1 o boot loader primario, viene letta nella memoria dal BIOS del MBR [14]. Il boot loader primario è presente nei primi 512 bytes dello spazio del disco all'interno del MBR ed è in grado di caricare il boot loader della Fase 2 o Fase 1.5.
    Il BIOS non è in grado di leggere i file system e le tabelle della partizione. Esso inizializza l'hardware, legge l'MBR. A questo punto il processo d'vvio dipenderà dalla fase 1 del bootloader.
  2. Se necessario il boot loader della fase 1.5 viene letto nella memoria dal boot loader della fase 1. Alcuni hardware richiedono una fase intermedia per poter avanzare al boot loader della fase 2. Tale tendenza risulta essere vera se la partizione /boot/ si trova oltre il cilindro 1024 del disco fisso, oppure quando si utilizza la modalità LBA. Il boot loader della fase 1.5 si può trovare sia sulla partizione /boot/ sia su di una parte molto piccola dell'MBR e sulla partizione /boot/.
  3. La fase 2 o boot loader secondario, viene caricata nella memoria. Il boot loader secondario visualizza il menu di GRUB e l'ambiente dei comandi. Questa interfaccia consente di selezionare il sistema operativo o il kernel da avviare, il passaggio degli argomenti al kernel o di osservare i parametri del sistema.
  4. Il boot loader secondario legge il sistema operativo o il kernel, insieme ai contenuti di /boot/sysroot/, nella memoria. Una volta che GRUB determina quale sistema operativo o kernel deve avviare, lo carica all'interno della memoria e trasferisce il controllo della macchina al sistema operativo in questione.
Il metodo utilizzato per avviare Linux viene chiamato direct loading, poichè il boot loader carica il sistema operativo in modo diretto. Non è presente alcun intermediario tra il boot loader ed il kernel.
Il processo d'avvio utilizzato da altri sistemi operativi può variare leggermente. Per esempio iI sistema operativo Microsoft® Windows®, oltre a numerosi altri sistemi operativi,vengono caricati mediante il metodo di caricamento a catena. Con questo metodo l'MBR fa semplicemente riferimento al primo settore della partizione contenente il sistema operativo, dove trova i file necessari per avviare il sistema.
GRUB supporta entrambi i metodi di avvio di caricamento, consentendo di avviare qualsiasi sistema operativo.

Avvertimento

Durante l'installazione i programmi di installazione DOS e Windows di Microsoft sovrascrivono completamente l'MBR eliminando qualsiasi boot loader esistente. Se si crea un sistema dual-boot è preferibile installare prima il sistema operativo Microsoft.


[14] Per maggiori informazioni sul BIOS del sistema e sul MBR consultare Sezione F.2.1.1, «Sistemi x86 basati sul BIOS».