GRUB 2

Da Wiki :: openmamba.
Jump to navigation Jump to search

GRUB 2 è un Multiboot boot loader. E' stato derivato da GRUB (GRand Unified Bootloader), che è stato originariamente progettato e sviluppato da Erich Stefan Boleyn. Brevemente, il boot loader è il primo programma software che viene eseguito quando un computer si avvia. E' responsabile del caricamento e trasferimento del controllo al sistema operativo, prima che sia quest'ultimo a prendere il controllo ed inizializzare il resto del sistema.

Configurazione

La configurazione di GRUB 2 in openmamba avviene modificando il file

/etc/sysconfig/grub

il cui contenuto predefinito è:

#
# grub2 configuration file
#
#
# Uncomment the following lines to configure other systems (chainloaded)
# to appear in grub2 boot menu.
#
GRUB_OTHER_TITLES=("Windows 98")
GRUB_OTHER_DEVICES=(/dev/hda3)

# Define an alternative command line for linux entries
#
#GRUB_CMDLINE_LINUX="resume2= video=uvesafb:1024x768-32,ywrap,mtrr:3 quiet splas
h=silent,fadein console=tty1"

# Define default menu entry
#
GRUB_DEFAULT=1

# Define boot menu timeout before loading default menu entry
#
GRUB_TIMEOUT=1

# Definitions for serial console
#
#GRUB_TERMINAL=
#GRUB_SERIAL_COMMAND=

#Apply changes with:
#
# update-grub

Le modifiche effettuare a questo file si applicano eseguendo

/usr/sbin/update-grub

che genera il vero e proprio file di configurazione utilizzato da grub:

/boot/grub/grub.cfg

Nota: si sconsiglia di modificare quest'ultimo file in quanto viene riscritto ad ogni aggiornamento di versione del kernel. Il modo corretto per applicare modifiche a questo file avviene utilizzando update-grub.

Avvio di un sistema operativo non Linux

Per configurare l'avvio di un sistema operativo non Linux (ad esempio una versione di Windows), occorre identificare la partizione in cui si trova il sistema così come viene identificato da Linux, ad esempio:

/dev/hda1

indica la prima partizione del primo hard disk IDE. Possiamo a questo punto aggiungere le seguenti righe di configurazione al file /etc/sysconfig/grub:

GRUB_OTHER_TITLES=("Windows 98")
GRUB_OTHER_DEVICES=(/dev/hda1)

Il seguente esempio mostra un caso in cui siano configurati più sistemi alternativi:

GRUB_OTHER_TITLES=("Windows 98" "FreeBSD")
GRUB_OTHER_DEVICES=(/dev/hda1 /dev/hda4)

Come impostare il sistema di avvio predefinito

Normalmente GRUB avvia un sistema predefinito se, trascorso un tempo di 5 secondi dalla comparsa del menù di avvio, l'utente non ha interagito con la tastiera. Per impostare un sistema predefinito diverso dal primo (indicato con il numero 0) aggiungi (o scommenta) la seguente riga in /etc/sysconfig/grub:

GRUB_DEFAULT=1

In questo esempio si avvierà il sistema presente nella seconda voce del menù di avvio.

Come modificare il timeout del menù di avvio

Per modificare il timeout del menù di avvio, imposta la seguente riga in /etc/sysconfig/grub:

GRUB_TIMEOUT=30

Questo esempio imposta il timeout a 30 secondi.

Come aggiungere delle voci personalizzate nel menù di avvio

Per aggiungere una voce personalizzata non è consigliato modificare direttamente il file di configurazione /boot/grub/grub.cfg in quanto questo file viene ricreato ogni volta che si esegue update-grub.

E' possibile invece creare un proprio script di configurazione nella directory /etc/grub.d chiamato 30-multiboot. Questo meccanismo è stato previsto dagli sviluppatori di grub 2 ed ha il vantaggio di essere conforme alle specifiche FHS (Filesystem Hierarchy Standard) e di rendere la configurazione modulare, cosa che risulta molto comoda nella gestione della distribuzione. Lo script permette di creare le voci necessarie a "collegare" il grub2 di openmamba con il grub1 di un altro sistema operativo GNU/Linux.

Creiamo il file con:

sudo touch /etc/grub.d/30-multiboot

Editiamolo con:

sudo kwrite /etc/grub.d/30-multiboot

e aggiungiamo il contenuto sottoriportato:

cat << _EOF
menuentry "Otherlinux" {
set root=(hd0,0)
chainloader +1
}
_EOF

Al posto di "Otherlinux" metteremo il nome della distribuzione, mentre al posto di (hd0,0) va inserita la partizione esatta. Esempio 1: se abbiamo installato Ubuntu in /dev/hda3 (o /dev/sda3) andremo a sostituire "Otherlinux" con "Ubuntu 8.04" e (hd0,0) con (hd0,3). Esempio 2: se abbiamo installato Mepis su di un'altro hd IDE o SATA (dev/hdb1 o /dev/sdb1) indicheremo "Mepis 7.0" e (hd1,1).

Dopo aver salvato il file bisogna renderlo eseguibile, così:

sudo chmod +x /etc/grub.d/30-multiboot

Per verificare che il file 30-multiboot sia eseguibile possiamo lanciare il comando ls

sudo ls /etc/grub.d

Se al risultato il colore del file chiamato "30-multiboot" e verde vuol dire che è tutto ok. Adesso manca solo di applicare le modifiche eseguendo:

sudo update-grub

Se tutto è andato bene troveremo la nuova voce nel file /boot/grub/grub.cfg e quindi al riavvio del pc nel menu di avvio; essa sarà mantenuta anche dopo gli aggiornamenti di sistema.

N.B: lo script fa sì che all'avvio ci si "colleghi" al grub1 dell'altro sistema GNU/Linux installato sulla nostra macchina, quindi il grub della distribuzione in questione va installato nell'apposita partizione root.