Upgrade da Lilo a Grub
Il presente articolo preso da http://myrddin.org/howto/debian-grub.php, illustra come sostituire Lilo con Grub.
Il tutto è stato testato con Debian Sarge.
Installazione di Grub
sudo apt-get install grub grub-doc
Creazione di un floppy di boot
Creare un dischetto di boot per testare GRUB:
Formattare e montare il floppy:
fdformat /dev/fd0 mkfs /dev/fd0 mount /floppy/
Creare la cartella per i files di grub e copiarli, smontare il floppy:
mkdir -p /floppy/boot/grub cp /boot/grub/stage1 /boot/grub/stage2 /boot/grub/menu.lst /floppy/boot/grub/ umount /floppy/
Installare Grub sul floppy:
/sbin/grub --batch --device-map=/dev/null <<EOFile device (fd0) /dev/fd0 root (fd0) setup (fd0) quit EOFile
Testare il floppy per vedere se il sistema parte correttamente da Floppy.
In caso positivo proseguire.
Scrittura mbr
Una volta installato il pacchetto, occore installare il boot manager dove voluto.
Se si ha un solo OS ed un solo disco IDE:
sudo grub-install /dev/sda
Se si ottiene l'errore:
/dev/sda does not have any corresponding BIOS drive.
rilanciare grub-install con il parametro --recheck:
grub-install --recheck /dev/sda
Se invece si hanno più os sul disco, e non si vuole che Grub sia il boot manager di default (perchè ad esempio di preferisce Gag è necessario specificare la partizione dove installarlo:
sudo grub-install /dev/sdb
IMPORTANTE Se si utilizza un Raid software, è necessario scrivere l'mbr su tutti i dischi:
sudo grub-install /dev/hda sudo grub-install /dev/hdc sudo grub-install /dev/md0
Come indicato in Installazione di Grub con RAID Software installare gli stage aggiuntivi per i dischi raid:
- Installazione sul primo disco:
# sudo grub grub> device (hd0) /dev/hda grub> root (hd0,0) Filesystem type is ext2fs, partition type 0xfd grub> setup (hd0) Checking if "/boot/grub/stage1" exists... no Checking if "/grub/stage1" exists... yes Checking if "/grub/stage2" exists... yes Checking if "/grub/e2fs_stage1_5" exists... yes Running "embed /grub/e2fs_stage1_5 (hd0)"... 15 sectors are embedded. succeeded Running "install /grub/stage1 (hd0) (hd0)1+15 p (hd0,0)/grub/stage2 /grub/grub.conf"... succeeded Done.
- Installazione sul secondo disco
Per l'installazione su secondo disco, gli si dice che il device hd0 è il disco hdc.
# sudo grub grub> device (hd0) /dev/hdc grub> root (hd0,0) Filesystem type is ext2fs, partition type 0xfd grub> setup (hd0) Checking if "/boot/grub/stage1" exists... no Checking if "/grub/stage1" exists... yes Checking if "/grub/stage2" exists... yes Checking if "/grub/e2fs_stage1_5" exists... yes Running "embed /grub/e2fs_stage1_5 (hd0)"... 15 sectors are embedded. succeeded Running "install /grub/stage1 (hd0) (hd0)1+15 p (hd0,0)/grub/stage2 /grub/grub.conf"... succeeded Done.
Creazione del menu di avvio
Occorre generare il file /boot/grub/menu.lst con il comando
sudo update-grub
ATTENZIONE !
Qualora la partizione di root non sia la prima sull'hard disk, occore editare a mano il file /boot/grub/menu.lst cambiando la riga di commento SENZA TOGLIERE IL CANCELLETTO
# groot=(hd0,1)
Rimozione di lilo
Rimuovere Lilo lasciando il file di configurazione:
sudo apt-get remove lilo
Rimozione della configurazione di lilo
sudo dpkg --purge lilo
Automatizzare l'esecuzione di update-grub all'installazione/rimozione di un kernel
modificare le seguenti opzioni in /etc/kernel-img.conf:
sudoedit /etc/kernel-img.conf ... postinst_hook = /sbin/update-grub postrm_hook = /sbin/update-grub do_bootloader = no do_initrd = Yes ...
Riferimenti a kernel obsoleti
E' probabile che grub continui a elencare dei riferimenti a kernel obsoleti ed addirittura disinstallati. Si può ovviare a tutto ciò rimuovendo i pacchetti kernle-image-* e rimuovendo i rispettivi files /boot/vmlinuz-* e /boot/initrd.img-* e poi rilanciando update-grub.