grub 2 recovery – grub rescue >

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: