.

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

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é :

  • initrd ou initramfs : c'est la structure des fichiers contenus sur le disque qui permettent au GRUB de savoir ce qu'il doit afficher (et surtout, où trouver les fichiers de configuration)
  • vmlinuz : c'est un noyau compressé qui permet au GRUB d'interagir avec les périphérique (écran, clavier, souris, son, …)
    • Le noyau Linux, ce sont les fichiers élémentaires qui permettent de faire fonctionner l'ordinateur

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 :

  • Chaque zone a une fonction dédiée et il y en a une dont le rôle est de permettre à l'ordinateur de démarrer
    • Cette zone possède une information spécifique indiquant que le poste commence par regarder ce qu'il y a dedans
  • Chaque zone a un format de fichier spécifique : c'est en quelque sorte, une manière pour lire et écrire ses fichiers
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 :
  • ( : Shift+9 (de la rangée du haut et non du pavé numérique)
  • ) : Shift+0 (de la rangée du haut et non du pavé numérique)
  • M : ,
  • , : ;
  • $ : Shift+4 (de la rangée du haut et non du pavé numérique)
  • _ : Shift+°

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 :

  • (hd0,*1)/dev/sda1
  • (hd0,*2)/dev/sda2
  • (hd1,*1)/dev/sdb1
  • (hd2,*1)/dev/sdc1
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

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

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

(hd0,1)/efi/boot/grub

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

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

  • Dernière modification : 2025/02/11 09:26