altertux software libero     
Home | Appunti e guide varie | altertux software libero


GRUB2:  Come aggiungere un altro sistema operativo GNU/Linux nel menù di avvio



Con grub2 si deve perdere l'abitudine di configurare il file /boot/grub/grub.cfg, perchè questo viene completamente riscritto ogni volta che si da il comando # update-grub. Si devono quindi modificare i vari files di configurazione di Grub2 e poi aggiornare Grub2 con il comando già indicato:      # update-grub. Questi appunti descrivono come far partire all'avvio un altro sistema operativo Gnu/Linux, installato in un'altra partizione.
-----------------------------------------------
Preambolo:
supponiamo di aver installato, oltre a Debian, la distribuzione GnewSense (2.3-deltah) nella partizione /dev/sda4 dello stesso hard disk dove è installata Debian che contiene i files di configurazione di Grub2, installato nell'MBR.
------------------------------------------------
Raccolta informazioni:
Per cercare di capire come dire a Grub2 che deve avviare anche un sistema operativo GNU/Linux che si trova in /dev/sda4, esaminiamo come viene descritto il sistema Debian attualmente avviabile (possiamo leggere il file /boot/grub/grub.cfg):

menuentry "Debian GNU/Linux, con Linux 2.6.32-trunk-686" {
    insmod ext2
    set root=(hd0,1)
    search --no-floppy --fs-uuid --set 6baa95e4-2c03-4830-808b-1db59c241923
    echo    Loading Linux 2.6.32-trunk-686 ...
    linux    /boot/vmlinuz-2.6.32-trunk-686 root=UUID=6baa95e4-2c03-4830-808b-1db59c241923 ro vga=0x315 quiet
    echo    Loading initial ramdisk ...
    initrd    /boot/initrd.img-2.6.32-trunk-686

ci serve esaminare le righe:
"menuentry"
"set root"
"linux"
"initrd"

sono tutte informazioni abbastanza familiari:
"menuentry": Descriviamo, come vogliamo, il sistema operativo che vogliamo avviare.
"set root": dobbiamo indicare la partizione dove abbiamo installato il sistema operativo, nel nostro esempio /dev/sda4.
"linux": indichiamo il kernel che dobbiamo avviare e dov'è root (utilizzando UUID, che sostituisce /dev/sda4)
"initrd": indichiamo dov'è l'immagine del kernel

Tutto abbastanza semplice da conoscere. Cè solo da cercare la partizione UUID, che troveremo dando il comando:

marco@hp6720s:~|$  ls -lah /dev/disk/by-uuid
totale 0
drwxr-xr-x 2 root root 120  6 feb 20:15 .
drwxr-xr-x 5 root root 100  6 feb 20:15 ..
lrwxrwxrwx 1 root root  10  6 feb 20:20 00681e2f-e4f9-462b-b058-f2df6d31478f -> ../../sda4
lrwxrwxrwx 1 root root  10  6 feb 20:15 0a45fc15-c4bf-418e-9b97-cee35f886a59 -> ../../sda5
lrwxrwxrwx 1 root root  10  6 feb 20:15 6baa95e4-2c03-4830-808b-1db59c241923 -> ../../sda1
lrwxrwxrwx 1 root root  10  6 feb 20:20 a28f4021-d80e-4c31-abf9-d6faba508d98 -> ../../sda3
marco@hp6720s:~|$

Abbiamo così raccolto tutte le informazioni iniziali che ci servono.
---------------------------------------------------------------------------------------
Apriamo ora un terminale root e iniziamo le operazioni:
per prima cosa creiamo un file in /etc/grub.d e lo chiamiamo 30-multiboot
# touch /etc/grub.d/30-multiboot
editiamo il file creato
# emacs /etc/grub.d/30-multiboot (sostituire emacs con l'editor preferito)
e inseriamo le seguenti righe:

cat << _EOF
menuentry "GnewSense kernel 2.6.24-24" {
set root=(hd0,4)
linux /boot/vmlinuz-2.6.24-24-generic root=UUID=00681e2f-e4f9-462b-b058-f2df6d31478f vga=788
initrd /boot/initrd.img-2.6.24-24-generic
}
_EOF

che poi sono il riassunto delle informazioni che abbiamo raccolto, opzionalmente possiamo inserire altre informazioni come per esempio la risoluzione vga (788, 791, .... ecc.)
salviamo e usciamo.
Rendiamo il file eseguibile:
# chmod +x /etc/grub.d/30-multiboot
e in ultimo aggiorniamo il file /boot/grub/grub.cfg con il comando:
# update-grub
--------------------------------------------------------------------------

Al successivo riavvio, troveremo nel menu di Grub2 la riga
GnewSense kernel 2.6.24-24
per far partire il sistema operativo.