Suite à une mise à jour majeur ou lors de la désinstallation d'une distribution Linux en dualboot, il arrive parfois que le système ne démarre plus. A cette effet, on tombe souvent sur le “Grub Rescue”
source :
Il est donc nécessaire de le localiser puis de le renseigner dans les variables d'environnements “prefix” et “root”.
grub rescues> ls (hd0) (hd0,msdos0) (hd0,msdos1) (hd1) (hd1,msdos0) (hd1,msdos1)
La commande ci-dessous nous donne la liste les différentes partitions. On peut en déduire que le fichier grub.cfg se situe en réalité sur la partition hd1,msdos0. (On peut vérifier cette suggestion avec cette synthaxe : ls (hd1,msdos0)/boot/grub)
Renseigner correctement les variables d'environnements et on indique à Grub que c'est une partition normale en suivant cette procédure :
grub rescue> set prefix=(hd1,msdos0)/boot/grub grub rescue> set root=(hd1,msdos0) grub rescue> insmod normal grub rescue> normal
A ce stade, Grub démarre le système. Après que le système ait chargé, il faut modifier la mauvaise ligne dans le fichier de configuration :
# nano /boot/grub/grub.cfg
On peut maintenant rebooter tranquillement!
Dans le pire des cas, il est possible de réinstaller grub en lançant l'installation d'une distribution (ex : Debian) et d'aller directement à l'option, “installation de Grub”.
Booter sur clé USB Windows 10, par exemple, et lancer un terminal en tant qu'administrateur pour exécuter ces commandes :
X:> bootrec /fixmbr X:> bootrec /fixboot
On relance la machine et la système Windows redémarre.
menuentry "Windows x86_64 UEFI-GPT" {
set root='(hd0,gpt3)'
insmod part_gpt
insmod fat
insmod ntfs
insmod search_fs_uuid
insmod chain
search --fs-uuid --set=root $hints_string $fs_uuid
chainloader (${root})/Windows/System32/Boot/winload.efi
# Ou chainloader +1 si la 1er partition (genre de taill 100Mo) existe toujours
}
menuentry 'Debian GNU/Linux' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-763bb40c-9060-48f9-86dd-f109d087c22f' {
load_video
insmod gzio
if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
insmod part_gpt
insmod ext2
set root='hd0,gpt6'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt6 --hint-efi=hd0,gpt6 --hint-baremetal=ahci0,gpt6 763bb40c-9060-48f9-86dd-f109d087c22f
else
search --no-floppy --fs-uuid --set=root 763bb40c-9060-48f9-86dd-f109d087c22f
fi
echo 'Chargement…'
linux /boot/vmlinuz-3.16.0-4-amd64 root=UUID=763bb40c-9060-48f9-86dd-f109d087c22f ro quiet
initrd /boot/initrd.img-3.16.0-4-amd64
}
La résolution par défaut du terminal n'est pas adapté pour les écrans d'aujourd'hui. Voici les étapes à suivres :
nano /etc/default/grub
GRUB_GFXMODE=1920x1080 GRUB_GFXPAYLOAD_LINUX=keep
Puis on sauvegarde la configuration :
update-grub