Home > Linux > Linux: GRUB

Linux: GRUB

30 Novembre 2007

Attenzione questa guida è tratta e riassunta da [email protected]
NOTA: durante l’inserimento dei comandi si consiglia sempre l’uso dell’autocompletamento (TAB) per non incappare in errori di sintassi.

Installazione di Grub
è necessario installarlo nel MBR con il seguente comando:

grub-install --root-directory=/boot /dev/hda

attenzione: ogni altro boot loader verrà eliminato.Avviare il sitema principale
I comandi necessari per avviare un kernel, possono essere inseriti interattivamente all’avvio di grub.
In seguito si possono attivare di default, inserendoli in /boot/grub/menu.lst.

Innanzi tutto dobbiamo indicare a grub qual’è la sua partizione di root, ovvero /boot.
Per sapere la nomenclatura esatta di tale partizione controllare l’/etc/fstab.

Se fosse /dev/hda3, dovremmo scrivere al prompt di grub:

root (hd0,2)

Attenzione: rispetto alla numerazione di Linux, quella di grub, è n-1, perchè parte a numerare da 0.
Se ad es., da fstab, la partizione interessata fosse /dev/hda1, per Grub dovremmo dare: root (hd0,0).Ora dobbiamo caricare il kernel.Supponiamo che il file sia /boot/vmlinuz-2.6.6s26-mio-kernel.
Supponiamo che la partizione di root del kernel (cioè proprio la root del sistema) sia /dev/hda4,
nel prompt di grub digiteremo:

kernel /vmlinuz-2.6.6s26-mio-kernel root=/dev/hda4 ro vga=791

NOTA: Partendo dalla root di grub, che è /boot sotto linux, il file del kernel è semplicemente in /.A questo punto basta dare il comando boot per fare partire il sistema.

boot

Avviare un secondo sitema
se avete il kernel di una seconda distro sempre nella partizione di boot /dev/hda3 basta cambiare il nome del file del kernel
e l’optione root=/dev/hda4 per indicare la corretta partizione di root della seconda distro.Se invece il file del kernel della seconda distro risiede in un’altra partizione che non sia la boot della prima distro
(potrebbe essere una seconda partizione di boot creata dalla seconda distro o direttamente la partizione di root della seconda distro),
basta indicare il percorso completo a grub.

Supponiamo che la partizione contenete l’altro kernel sia /dev/hda7 e che questa sia la root della seconda distro,
per caricare il kernel scriveremo:

kernel (hd0,6)/boot/vmlinuz-2.6.6-altra-distro root=/dev/hda7 ro vga=791

Nota: in questo caso abbiamo inserito /boot perchè non c’è una partizione di boot ma essa è una sotto-directory di root
ovvero (hd0,6) (/dev/hda7 in gergo linux).

ATTENZIONE: di solito tutti i kernel ufficiali delle distro, usano l’initrd, ed è quindi necessario caricare l’immagine del ramdisk,
prima di dare il comando di boot.
Ovvero, dopo aver caricato il kernel, scrivere il seguente comando nel prompt di grub:

initrd /initrd.img-2.6.6-s26-mio-kernel

oppure

initrd (hd0,6)/initrd.img-2.6.6-altra-distro

a seconda di dove si trova l’immagine.NOTA: l’immagine si trova sempre nella stessa partizione/directory del suo kernel.

ATTENZIONE: Un kernel partirà solo con la sua immagine initrd. Usare immagini intrd di altri kernel provocherà un Kernel Panic.
Anche cercare di fare partire un kernel che necessita di initrd, senza lo stesso initrd provocherà un Kernel Panic.

Configurare il Menù di grub
Il menu di grub si imposta tramite il file

/boot/grub/menu.lst.

L’intestazione di questo file può contenere molti comandi, ma i più semplici sono

default 0
timeout 5
color light-gray/blue yellow/blue

queste righe all’inizio del menu.lst, significano:
che all’avvio GRUB, dovrà attendere 5 secondi (timeout) prima di scegliere il Kernel di Default (default 0)
Il menù sarà presentato con i colori indicati, secondo il seguente schema:
caretteri/sfondo rispettivamente per il testo normale e per il testo evidenziato.Adesso, inseriamo i blocchi per i vari kernel.Come visto per fare partire un kernel servono 3/4 comandi: root, kernel, boot oppure root, kernel, initrd, boot.Nel menu.lst bisogna inserire in più soltanto un primo comando (title) che specifica il nome che apparirà all’avvio
per quel kernel nel menù del grub.
In pratica, usando gli esempi precedenti dei due kernel, dovremmo avere un menu.lst del genere:

default 0
timeout 5
color light-gray/blue yellow/blue

title Prima Distribuzione (puoi scrivere quello che vuoi)
root (hd0,2)
kernel /vmlinuz-2.6.6s26-mio-kernel root=/dev/hda4 ro vga=791
boot

title Seconda Distribuzione (puoi scrivere quello che vuoi)
root (hd0,2)
kernel (hd0,6)/boot/vmlinuz-2.6.6-altra-distro root=/dev/hda7 ro vga=791
boot

Seguendo questo schema si potranno aggiungere quanti kernel vogliamo.
Melgio prima provare i comandi al prompt di Grub.Nel caso i kernel abbiano bisogno dell’initrd:

default 0
timeout 5
color light-gray/blue yellow/blue

title Prima Distribuzione (puoi scrivere quello che vuoi)
root (hd0,2)
kernel /vmlinuz-2.6.6s26-mio-kernel root=/dev/hda4 ro vga=791
initrd /initrd.img-2.6.6-s26-mio-kernel
boot

title Seconda Distribuzione (puoi scrivere quello che vuoi)
root (hd0,2)
kernel (hd0,6)/boot/vmlinuz-2.6.6-altra-distro root=/dev/hda7 ro vga=791
initrd (hd0,6)/initrd.img-2.6.6-altra-distro
boot

NOTA:Se nel blocco di ogni kernel inserite, prima del comando boot, il comando savedefault e modificate il comando default 0 in default save,
all’avvio il grub (dopo il timeout) sceglierà il kernel che avete scelto nel precedente avvio (vedi nota).
Ciò viene ignorato se all’inizio del file menu.lst è stata messa la voce default=x, dove x
identifica il numero del sistema operativo di default (partendo da 0 anzichè da 1).Avviare altri sistemi operativi
Windows
Alcuni sistemi operativi sono suscettibili all’avvio tramite bootloader, questo perchè hanno bisogno che la partizione
da cui partono sia “resa attiva” (e in molti casi questa deve essere anche una partizione primaria);
Tra questi sistemi operativi c’è Windows
Per avviare uno di questi sistemi operativi basta scrivere

title Windows
rootnoverify (hd1,0)
makeactive
chainloader +1
boot

il comando rootnoverify, dice sostanzialmente qual è la partizione di windows
(nel nostro caso la prima partizione del secondo disco è hd1,0, corrispondente, in Linux, a /dev/hdb1),il comando makeactive, rende la partizione attiva (condizione essenziale per Windows),

il comando chainloader +1, impone di leggere la prima traccia di tale partizione,

il comando boot, fa si che il sistema parta, eseguendo in ordine tutte le scelte precedenti.

Note finali
In alcuni sistemi, ad esempio Redhat o Fedora, il file menu.lst potrebbe chiamarsi grub.conf.

Categorie:Linux Tag:
I commenti sono chiusi.