Gérer le programme d'amorçage : Grub

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”

Grub est un utilitaire qui permet de démarrer sur la bonne partition où le système est installé.

source :

Si la distribution est toujours présente

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”.

Suite à la suppression de la partition

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.

  • Avec GPT :
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
}

Changer la résolution du tty avec Grub

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