Qualora al riavvio di ubuntu versioni 10.04 iin poi appaia il famigerato
grub rescue >
abbiamo le seguenti strade:
1) riavviare dalla shell
2) reistallare il grub2 loader con una live
3) utilizzare supergrub
Riavviare dalla shell
In genere quando compare la shell significa che GRUB per qualche ragione non riesce a caricare il modulo ‘normal’ questo potrebbe essere dovuto ad un errore nel prefix o nel path.
Proviamo a fissare questi problemi:
Determiniamo il prefix corrent
set
tra le righe che appaiono due dovrebbero essere del tipo che segue
prefix = (hd0,msdos1)/boot/grub root=hd0,msdos1
e indicano dove GRUB va a ricercare le informazioni. Nel nostro caso probabilmente c’è un errore.
GRUB controlliamo quali device sono disponili
ls
e cerchiamo di ricordare dove è posizionata la directory di boot che ospita grub nel mio caso /dev/sda3
impostiamo il valore corretto
set prefix = (hd0,msdos3)/boot/grub set root=(hd0,msdos3)
quindi
insmod normal
Il caricamento di un modulo per espandere le capacità della console può essere ottenuto anche con.
insmod (hdx,y)/boot/grub/linux.mod
linux /vmlinuz ro single initrd /initrd.img boot
Considerato che il grub rescue potrebbe essere conseguenza di una modifica nella tabella partizioni. una volta riavviato il sistema meglio procedere con un update-grub da terminale .
update-grub
Per reinstallare grub 2 nel disco /dev/sda
grub-install /dev/sda
voci che compaiono nel file grub.cnf e che consentono l’avvio di una distribuzione
menuentry ‘Ubuntu, with Linux 2.6.38-8-generic (recovery mode)’ –class ubuntu –class gnu-linux –class gnu –class os { recordfail set gfxpayload=$linux_gfx_mode insmod part_msdos insmod ext2 set root=’(/dev/sda,msdos2)’ search –no-floppy –fs-uuid –set=root 2ef15820-edd5-49e2-a7f6-a9337be395f6 echo ‘Loading Linux 2.6.38-8-generic …’ linux /boot/vmlinuz-2.6.38-8-generic root=UUID=2ef15820-edd5-49e2-a7f6-a9337be395f6 ro single echo ‘Loading initial ramdisk …’ initrd /boot/initrd.img-2.6.38-8-generic }
più sinteticamente senza UUID e con il caricamento del kernel con sim link
set root='(/dev/sda,msdos2)' linux /vmlinuz root=/dev/sda2 initrd /initrd.img
per avviare altro S.O. o altro grub
insmod ext2 set root='(hd0,5)' chainloader +1 chainloader potrebbe richiedere anche il percorso del tipo (hd1,1)+1
GNU GRUB Manual 1.99
http://www.gnu.org/software/grub/manual/html_node/GRUB-only-offers-a-rescue-shell.html
Reinstallare Grub 2
Un approccio più radicale anche se agevole è il ripristono del boot loader. Procurarsi un live di ubuntu ( di fatto il disco di installazione) . Quindi alla schermata di installazione passare ad una console con [CTRL-ALT-F2] e digitare seguenti comandi:
per determinare la partizione in cui è installato ubuntu ( in genere è quella marcata con l’asterisco )
sudo fdisk -l
nel mio caso /dev/sda3
montare la patizione in cui risiede il sistema in /mnt con
sudo mount -t auto /dev/sda3 /mnt
montare il resto dei dispositivi con
sudo mount --bind /dev /mnt/dev sudo mount --bind /proc /mnt/proc sudo mount --bind /sys /mnt/sys
per modificare il sistema montato in /mnt effettuare un chroot
sudo chroot /mnt
qualora sia presente un partizione di /boot separata sarà necessario il mount anche di questa.
Se /boot si trova in /dev/sda2 digiteremo:
sudo mount /dev/sda2 /boot
per installare grub2 nel master boot sector MBR digitare
sudo grub-install /dev/sda sudo update-grub2
smontare le partizioni e riavviare
sudo umount /mnt/dev sudo umount /mnt/proc sudo umount /mnt sudo reboot
in caso di errori è possibile riprovare con
grub-install --recheck /dev/sda
per installare in una partizione del sistema ( scelta sconsigliata )
sudo grub-install /dev/sda3
Risorse: