sabato 19 dicembre 2009

Aggiungere una nuova voce al menu di Grub 2

Nel post precedente avevamo visto come aggiungere al menu di Grub una nuova voce per poter avviare la Dynebolic appena installata nel disco fisso. In quel caso però avevamo preso in considerazione solamente Grub e non Grub 2, mentre la nuova versione del potente bootloader differisce pesantemente dal suo predecessore. Considerando che la distribuzione Linux attualmente più diffusa (Ubuntu - Karmic Koala) adotta Grub 2 di default, si rende necessario poter aggiungere la nuova voce di menu anche in Grub 2. Molti di noi ricordano i bei tempi in cui si poteva gestire qualsiasi aspetto di Grub editando con un semplice editor di testo il file /boot/grub/menu.lst, purtroppo quel file non esiste più ed è stato sostituito dal nuovo /boot/grub/grub.cfg, il quale non è assolutamente editabile. Il nuovo grub.cfg non si può editare a mano in quanto viene generato dinamicamente da una serie di scripts; tuttavia, una volta capito il meccanismo, sarà ancora più semplice gestire il nuovo bootloader. Grub 2 ha il proprio centro nevralgico nella cartella /etc/grub.d/, la quale contiene tutti gli scripts necessari a gestire ogni aspetto del bootloader. In questa occasione ci occuperemo solo di come aggiungere una nuova voce di avvio, quindi avremo a che fare solo con lo script 40_custom.

Apriamo il file in questo modo:

$ sudo gedit /etc/grub.d/40_custom [invio]
password [invio]

il contenuto del file non può essere rimosso, quindi si presenta così:

#!/bin/sh
exec tail -n +3 $0
# This file provides an easy way to add custom menu entries. Simply type the
# menu entries you want to add after this comment. Be careful not to change
# the 'exec tail' line above.

per aggiungere la Dynebolic 2.5.2 al menu di Grub2, dovremo inserire il seguente codice:

menuentry "Dynebolic"{
set root=(hd0,3)
linux /dyne/2618ck1d.krn root=/dev/ram0 rw load_ramdisk=1 vga=0x318 max_loop=128
initrd /dyne/initrd.gz
}

adesso il file si presenterà in questo modo:

#!/bin/sh
exec tail -n +3 $0
# This file provides an easy way to add custom menu entries. Simply type the
# menu entries you want to add after this comment. Be careful not to change
# the 'exec tail' line above.
menuentry "Dynebolic"{
set root=(hd0,3)
linux /dyne/2618ck1d.krn root=/dev/ram0 rw load_ramdisk=1 vga=0x318 max_loop=128
initrd /dyne/initrd.gz
}

appena verificato che tutto sia a posto, salvate, chiudete ed eseguite l'update di Grub:

$ update-grub [invio]

Finito! Dal prossimo riavvio vedrete una voce di menu in più nel vostro Grub... bravi ;-)