Table des matières

.

Foire Aux Questions

Démarrer un poste bloqué sur le GRUB

Table des matières

Les symptômes

Suite à une modification du fichier de démarrage (grub) ou suite à une mise à jour (typiquement, lors d'une mise à jour de kernel sur un poste assez ancien), lors du redémarrage, nous obtenons un écran noir similaire à celui-ci :

Le poste ne démarre donc pas et l'environnement minimaliste n'est pas intuitif pour un non initié.

Explication

Lorsque le poste est bloqué sur cette interface, cela signifie que le GRUB n'a pas réussi à trouver les éléments qui lui permettent de proposer les systèmes d'exploitation installés sur le poste.

Le GRUB est ce que l'on nomme communément un chargeur d'amorçage. Ce chargeur est spécifique aux environnements basés sur GNU Linux.

Par comparaison, il est comparable au lanceur de Microsoft qui permet par exemple de basculer sur l'environnement de récupération.

Pour fonctionner, le GRUB a besoin de charger en mémoire des informations spécifiques à l'environnement sur lequel il est installé :

Concrètement, on fait quoi ?

Nous allons commencer par identifier les emplacements dont nous avons besoin et les fichiers à utiliser.

Lors de l'installation du système d'exploitation, l'installeur a partitionné le disque ; c'est-à-dire qu'il a virtuellement “découpé” l'ensemble de l'espace en plusieurs zones :

Le clavier connu dans le GRUB est UNIQUEMENT le clavier QWERTY et ce n'est pas modifiable.

Soyez bien vigilant(e)s à ce qui est saisi et affiché à l'écranavant de cliquer sur ↵ Enter

Nous devons donc identifier la partition de démarrage qui doit contenir un dossier nommé boot :

ls

Nous obtenons la liste des partitions et nous allons les explorer pour trouver celle qui nous intéresse :

ls (hd0)/
ls (hd0,msdos1)/
Le / à la fin est indispensable pour savoir ce que contient la partition.
Correspondance de touches :

Lorsque nous avons identifié la partition qui contient /boot/grub nous pouvons continuer. Dans notre cas par exemple :

ls (hd0,msdos1)/boot/grub

Nous permet de savoir que c'est la partition msdos1 du disque hd0 qui est celle que nous cherchons.

Nous allons donc créer 2 variables qui nous permettront de charger l'environnement en mémoire :

set root=(hd0,msdos1)

Il nous faut maintenant activer le noyau Linux et l'image de démarrage initrd.

Nous avons besoin pour cela de savoir quelle partition est notre partition de démarrage. L'identification se fait à partir du nom de l'espace assigné à root :

Pour éviter de donner le nom complet de la version kernel et initrd, saisir /boot/vmlinuz- puis appuyer sur Tab ⇆
linux $root/boot/vmlinuz-5.15.0-92-generic root=/dev/sda1
initrd $root/boot/initrd.img-5.15.0-92-generic
boot

Cas du grub-rescue

Si ce qui est affiché à l'écran n'est pas grub> mais grub-rescue il faut repasser en mode normal pour pouvoir démarrer le poste.

set prefix=(hd0,msdos1)/boot/grub
set root=(hd0,msdos1)

Nous allons ensuite activer les modules linux et normal :

insmod normal
normal
insmod linux

Nous pouvons alors reprendre le fonctionnement décrit pour grub :

linux $root/boot/vmlinuz-5.15.0-92-generic root=/dev/sda1
initrd $root/boot/initrd.img-5.15.0-92-generic
boot

Le cas de l'UEFI

La partition de démarrage est alors dans le chemin suivant :

(hd0,1)/efi/boot/grub

Remettre en place une solution permanente

Il faut ensuite mettre à jour le système de démarrage.

Il existe des solutions telles que Boot-Repair. Cependant, il est toujours préférable de savoir ce qu'il se passe.

La première information consiste à connaitre le contenu du fichier de configuration :

cat /etc/default/grub

C'est souvent suite à une manipulation de ce fichier que la problématique intervient.

Dans l'un de nos cas de figure, il s'agissait “simplement” de l'ordre des options ajoutées qui a généré le blocage.

Nous avons simplement eu à remplacer nouveau.noaccel=1 acpi_osi=linux par acpi_osi=linux nouveau.noaccel=1

Si vous avez mis à jour ce fichier récemment, il peut être pertinent de vérifier ce qu'il contient.

Il faut ensuite mettre à jour le système d'amorçage :

sudo update-grub

Et réinstaller la partition sur le disque :

sudo grub-install /dev/sda
Attention : il faut indiquer le disque /dev/sda et non la partition /dev/sda1.

Le système est installé pour l'ensemble du disque.

Effectuer un redémarrage pour vérifier que c'est bien corrigé :

sudo reboot -fn

Il existe aussi un utilitaire boot-info-script qui permet d'identifier la configuration de démarrage.

Cela permet ensuite d'identifier les éventuels problèmes de configuration.

Voici un ZIP qui contient la version 0.78 du 9 octobre 2019 : bootinfoscript.zip

Si ce n'est pas réglé

Il faut dans ce cas se tourner vers des solutions plus complexes ou vers un professionnel.

Nous pouvons noter notamment Super GRUB2 live rescue disk

Vous pouvez aussi consulter la documentation officielle GNU GRUB Manual.

Pour aller plus loin

Pour mieux comprendre le fonctionnement du GRUB, vous pouvez consulter la page de documentation ubuntu en français ici : https://doc.ubuntu-fr.org/tutoriel/grub2_parametrage_manuel

Elle contient des informations relatives à la configuration manuelle du GRUB.