- GRUB se bloque souvent après des changements de partition, l'installation d'autres systèmes ou des mises à jour, mais il est presque toujours récupérable.
- La console GRUB elle-même vous permet de localiser /boot/grub, de charger le noyau manuellement et de démarrer sans avoir besoin d'un LiveCD.
- Une fois le système démarré, il est essentiel de réinstaller et de mettre à jour GRUB depuis Linux pour éviter que la panne ne se reproduise.
- Dans les cas plus graves, les méthodes utilisant LiveUSB, chroot et des outils comme Boot-Repair offrent une réparation plus approfondie.

Si vous avez déjà allumé votre ordinateur et, au lieu de voir le logo de votre système d'exploitation, vous vous êtes retrouvé face à un écran noir et un message du type « erreur : périphérique introuvable » ou « grub rescue », vous savez à quel point cela peut être angoissant. Soudain, on a l'impression d'avoir perdu tout son système, de devoir tout formater et que ses données sont en danger… mais en réalité, dans la plupart des cas, le problème peut être résolu sans avoir recours à des mesures aussi drastiques.
La bonne nouvelle, c'est que, malgré l'apparente gravité du problème, la réparation de GRUB sans LiveCD est tout à fait possible via la console GRUB, à condition que les dommages au disque ne soient pas catastrophiques. Avec un peu de patience, quelques commandes bien saisies et une bonne compréhension du fonctionnement interne, vous pouvez redémarrer votre système Linux, réinstaller le gestionnaire de démarrage et le préparer pour les redémarrages ultérieurs.

Avant de nous lancer dans la saisie frénétique, il est important de comprendre le rôle de GRUB dans le démarrage de votre ordinateur. GRUB 2 est le gestionnaire de démarrage utilisé par la plupart des distributions GNU/Linux modernes : il est généralement installé dans le MBR ou à la racine de la partition et se charge d'afficher le menu des systèmes d'exploitation disponibles et de charger le noyau Linux avec ses paramètres.
Ce gestionnaire de démarrage s'appuie sur des fichiers qui résident généralement dans le répertoire /boot/grub de votre installation : modules, fichiers de configuration, images du noyau, initrd, etc. Si ce répertoire devient inaccessible, est déplacé, corrompu ou change de disque sans que GRUB ne le remarque, vous commencerez à voir des erreurs comme « aucun périphérique de ce type », « système de fichiers inconnu » ou la redoutable invite grub rescue>.
Les causes typiques de dysfonctionnement du gestionnaire sont assez bien connues : l’installation de Windows après Linux et l’écrasement du MBR , la manipulation des partitions (redimensionnement, déplacement, suppression, création de nouvelles) avec des outils comme GParted ou similaires, ou même une mise à jour du noyau ou du système qui, pour une raison quelconque, laisse des références incohérentes dans la configuration GRUB.
En outre, certains utilisateurs préfèrent installer /boot sur une partition séparée , une pratique courante dans les configurations avancées ou les environnements où le reste du disque est chiffré. Dans ce cas, toute modification apportée à cette partition ou à son numéro de disque peut empêcher GRUB de localiser ses modules et sa configuration.
Types d'erreurs GRUB et modes de console
En cas de défaillance de GRUB, celui-ci ne disparaît généralement pas : il vous laisse généralement dans une console ou un menu de secours permettant de démarrer manuellement le système. Ce comportement varie légèrement selon la gravité du problème et la version de GRUB installée.
Dans de nombreuses distributions, vous constaterez que le système tente de charger GRUB et finit par planter. une invite avec le texte grub rescue>Ce mode est assez limité, mais il vous permet de lancer certaines commandes clés telles que : ls, set o insmod, suffisant pour localiser la partition correcte et forcer le chargement du module Linux.
Dans d'autres cas, le menu GRUB habituel (la liste des systèmes d'exploitation) s'affichera , mais la tentative de démarrage échouera ou le menu semblera corrompu. Vous pourrez alors appuyer sur la touche « c » pour accéder à l'interface de ligne de commande GRUB complète, bien plus puissante que le mode de récupération et offrant un plus large éventail de commandes.
Sur certaines installations plus anciennes, certains systèmes utilisent encore GRUB Legacy (et non GRUB 2), comme certaines versions de CentOS 5/6 ou d'autres distributions plus anciennes. Dans ces cas, la syntaxe de la commande change légèrement, mais le principe général reste le même : localiser le répertoire /boot, indiquer à GRUB son répertoire racine, puis charger manuellement le noyau et l'initrd.
Comment réparer GRUB sans LiveCD en utilisant le mode de récupération
Lorsque l'ordinateur ne parvient pas à trouver le gestionnaire de démarrage correctement configuré, il est fréquent de voir un message d'erreur tel que « Erreur : périphérique introuvable » suivi de « grub rescue> » . Cela signifie que GRUB a réussi à s'exécuter, mais qu'il ignore l'emplacement de ses fichiers de configuration ou des modules nécessaires.
Dans ce cas, vous disposez d'un mini-interpréteur de commandes qui vous permet de découvrir les partitions, de localiser /boot/grub et de charger le noyau manuellement . Le processus peut paraître long, mais il est en réalité assez systématique.
Liste des disques et partitions disponibles
La première étape consiste à identifier les disques et partitions que GRUB détecte sur votre machine. Pour ce faire, à l' invite grub rescue> , saisissez :
ls
La commande affichera quelque chose de similaire à (hd0) (hd0,1) (hd0,2) (hd0,3) (hd1) (hd1,1) (hd1,2). Chacun hdX représente un disque dur différent : hd0 serait le premier disque physique, hd1 le secondet ainsi de suite. Les variantes avec une virgule, telles que (hd0,1), indiquent les partitions numérotées de ce disque.
Selon votre ordinateur, vous pouvez voir un seul disque comme (hd0) avec deux ou trois partitions, ou plusieurs disques : (hd0,1) (hd1,1) (hd1,5) (hd2,1) (hd3,1) . Dans tous les cas, l’objectif est maintenant simple : ouvrez chaque partition jusqu’à trouver celle qui contient le répertoire /boot/grub.
Localisez la partition à l'aide de /boot/grub
Pour examiner le contenu d'une partition, nous utilisons à nouveau ls mais en ajoutant le nom de la partition et une barre oblique finale. Par exemple : inspecter le contenu Cela vous aidera à déterminer s'il s'agit du bon.
ls (hd0,1)/
Si cette partition possède un système de fichiers reconnu par GRUB, il affichera la liste de ses répertoires : vous y verrez des noms comme bin, home, boot, root , etc. Dans ce cas, cette partition peut être votre racine (/) ou une partition distincte de /boot, selon la structure de votre système lors de son installation. Si la liste indique un système de fichiers reconnu par GRUB , vous êtes sur la bonne voie.
Si, lors de l'exécution de la commande précédente, vous voyez un répertoire appelé boot , vous pouvez explorer plus en détail et vérifier s'il contient le dossier grub :
ls (hd0,1)/boot/grub
Lorsque vous trouvez une liste de fichiers incluant des modules comme linux.mod ou d'autres fichiers GRUB classiques, vous avez localisé la partition recherchée . Si rien n'apparaît ou si vous obtenez une erreur, continuez d'essayer les autres partitions : ls(hd0,2)/ , ls(hd1,1)/ , etc., jusqu'à trouver la bonne.
Indiquez à GRUB où se trouvent vos fichiers.
Une fois la partition correcte identifiée, il faut indiquer à GRUB l'emplacement de ses modules et de sa configuration . Supposons que nous ayons découvert que /boot se trouve sur (hd0,1). L'étape suivante consiste à définir le préfixe :
set prefix=(hd0,1)/boot/grub
Grâce à cette instruction, le gestionnaire système saura que ses fichiers de support se trouvent à cet emplacement. Il faut également lui indiquer quelle partition racine utiliser pour trouver le noyau et le reste des données système.
set root=(hd0,1)
Il est important d'écrire correctement la paire. (disque, partition) et utilisez toujours la barre oblique finale / lorsque nous listons le contenu avec lsN'oubliez pas non plus que la disposition du clavier de la console GRUB est généralement américaine ; les touches parenthèses et barres obliques peuvent donc ne pas correspondre à celles affichées. Il est conseillé de vérifier définir le préfixe correctement avant de tenter de charger des modules.
Chargez les modules GRUB et le noyau Linux
Une fois le préfixe configuré, l'étape suivante consiste à forcer le chargement du module GRUB pour Linux. Dans de nombreux guides, vous trouverez une instruction similaire à celle-ci :
insmod (hd0,1)/boot/grub/linux.mod
Dans de nombreux systèmes modernes, le module approprié peut être normal.mod ou d'autres, mais l'idée est la même : si vous n'êtes pas sûr des noms exacts, utilisez la commande ls (hd0,1)/boot/grub Pour lister les fichiers, choisissez le module approprié en fonction de votre version de GRUB. La fonction de insmod Cela implique le chargement du module nécessaire pour poursuivre le processus de démarrage. Veuillez noter que insmod C'est cette instruction qui intègre effectivement le module dans le chargeur.
Ensuite, vous devrez charger l'image du noyau Linux indiquant son chemin d'accès au sein du système de fichiers. Exemple de démarrage : linux /boot/vmlinuz-4.13.3-generic root=/dev/sda1
Le nom exact du noyau variera sur votre machine (il peut s'agir de vmlinuz-2.6.32-23-générique, vmlinuz-6.1.0-10-amd64 ou toute autre version). Vous pouvez utiliser, à nouveau, ls /boot Pour voir les images disponibles et choisir la plus récente, n'oubliez pas de renseigner le paramètre. racine=/dev/sdXn avec la partition racine correcte.
Pour éviter toute confusion avec les conventions de nommage de GRUB et de Linux, il faut retenir que hd0 correspond à /dev/sda, hd1 à /dev/sdb, hd2 à /dev/sdc , etc. Le format du numéro de partition change également : (hd0,1) devient /dev/sda1, (hd1,2) devient /dev/sdb2, etc.
Dans certains cas, après le chargement de l'image du noyau, il est conseillé de charger l'image initrd (le disque RAM initial) si votre distribution l'exige. La commande typique serait :
initrd /initrd.img
Comme pour le noyau, vous pouvez vérifier quels fichiers initrd sont disponibles avec ls / o ls /boot et utiliser le La touche TAB pour compléter automatiquement les noms et éviter les fautes d'orthographe.
Démarrez le système et réinstallez GRUB depuis Linux.
Une fois le noyau et l'initrd chargés, il suffit d'indiquer à GRUB de démarrer le processus de démarrage . Pour ce faire, il suffit de taper :
Arrancar : boot
Si tout se passe bien, le noyau prendra le contrôle, le système d'exploitation démarrera normalement et vous pourrez vous connecter à votre système Linux. À ce stade, vous aurez réussi à résoudre le problème sans avoir besoin d'un LiveCD, mais il reste une étape importante : réinstaller GRUB pour éviter qu'il ne dysfonctionne à nouveau au prochain redémarrage.
Une fois connecté au système, ouvrez un terminal avec les privilèges de superutilisateur (root ou en utilisant sudo) et exécutez : grub-install /dev/sdX
où /dev/sdX correspond au disque (et non à la partition) où vous souhaitez placer le gestionnaire de démarrage, par exemple /dev/sda ou /dev/sdb si vous utilisez un disque différent. N'oubliez pas qu'il ne faut pas spécifier le numéro de partition : la commande écrit le gestionnaire de démarrage dans le MBR ou dans la zone de démarrage du disque entier.
Dans de nombreuses distributions basées sur Debian ou Ubuntu, il est également fortement recommandé de régénérer le fichier de configuration GRUB afin de garantir la détection correcte de tous les systèmes installés. Vous pouvez le faire en utilisant :
Courir: update-grub o update-grub2
Et, si vous souhaitez également mettre à jour l'image de démarrage initiale, mettez à jour initramfs avec :
Commande: update-initramfs -u
Dans d'autres cas, le problème avec GRUB n'est pas aussi radical et vous voyez bien le menu de démarrage , mais certains systèmes ne démarrent pas, une erreur apparaît lors de la sélection d'une entrée spécifique, ou vous soupçonnez simplement que le menu est mal configuré.
Dans ces cas, lorsque vous voyez le menu GRUB lorsque vous allumez l'ordinateur, vous pouvez appuyer sur les flèches directionnelles (haut ou bas) pour arrêter le compte à rebours de démarrage automatique, puis appuyer sur la touche c pour accéder à la ligne de commande complète.
Depuis cette console avancée, le Les commandes sont fondamentalement les mêmes qu'en mode de récupération, mais vous disposerez de plus d'outils pour inspecter le système. Par exemple, vous pouvez utiliser ls pour lister les disques et les partitions, set pour afficher et modifier les variables d'environnement GRUB, insmod pour charger des modules supplémentaires ou même des commandes comme cat lire le contenu des fichiers texte.
En suivant le même schéma, vous déterminerez d'abord quels disques et partitions vous possédez :
ls
et vous verrez une sortie du type (hd0) (hd0,msdos1) (hd0,msdos5) ou (hd0,1) (hd1,1) (hd1,5) (hd2,1) , selon que votre table de partition est MBR (msdos) ou GPT, et le nombre de disques présents dans l'ordinateur.
Vous vérifierez ensuite chaque partition à l'aide de commandes telles que :
ls (hd0,msdos1)/
jusqu'à trouver le répertoire de démarrage et, à l'intérieur, le dossier GRUB . Une fois identifié, répétez la procédure de définition du préfixe et de la racine avec :
set prefix=(hd0,msdos1)/boot/grub
set root=(hd0,msdos1)
À partir de là, vous rechercherez les noyaux disponibles en listant le contenu de /boot :
/liste de démarrage : ls /boot
et vous en choisirez un pour le charger :
linux /boot/vmlinuz-6.1.0-10-amd64 root=/dev/sda1
Adaptez la version du noyau et la partition racine à votre configuration. N'oubliez pas la correspondance des disques : hd0 → /dev/sda, hd1 → /dev/sdb, hd2 → /dev/sdc , etc. Vous pouvez utiliser la touche TAB pour la saisie semi-automatique des chemins et des noms de fichiers.
Enfin, vous chargerez l'initrd si nécessaire et exécuterez la commande. botte Pour démarrer le système. Une fois connecté, l'opération à effectuer est la même que dans le scénario précédent : Réinstallez GRUB sur le disque et mettez à jour sa configuration. à l'aide grub-install /dev/sda y update-grub.
Réparation de GRUB sur les systèmes avec GRUB Legacy
Bien que la plupart des distributions utilisent aujourd'hui GRUB 2, on trouve encore des machines plus anciennes ou des systèmes spécifiques qui utilisent GRUB Legacy . L'interface est alors légèrement différente, mais le principe reste le même : il est possible d'utiliser un shell interactif de démarrage pour redémarrer le système.
Au démarrage, ce GRUB classique permet généralement accédez à votre ligne de commande en appuyant sur une touche spécifique (souvent la touche c ou la clé e (pour modifier les entrées). Une fois à l'invite de commande, vous disposez de commandes telles que : find qui sont particulièrement utiles.
Par exemple, si vous souhaitez localiser le répertoire /boot qui contient les images du noyau et les initrds, vous pouvez utiliser :
commande find : find /boot/grub/stage1 ou un itinéraire similaire
Selon que /boot est une partition séparée ou s'il se trouve à la racine, le chemin sera /boot ou simplement / avec d'autres sous-dossiers. Lorsque vous trouvez la partition correcte, GRUB Legacy affiche généralement un message similaire à celui-ci : (hd0,0) ou une autre paire disque/partition que vous pouvez réutiliser.
Ensuite, vous devrez définir la racine GRUB avec une commande comme celle-ci :
Exemple de racine : root (hd0,0)
Indiquez-lui ensuite l'emplacement du noyau et de l'initrd. Là encore, il n'est généralement pas nécessaire de saisir les noms de fichiers complets, car la touche TAB permet la saisie semi-automatique et vous évite les fautes de frappe dans les chemins longs.
Pour affiner encore davantage, vous pouvez utiliser la commande cat pour lire le fichier de configuration GRUB (par exemple, /boot/grub/menu.lstet vérifier quel périphérique est monté sur le répertoire racine, quels paramètres du noyau sont transmis, etc. C'est une méthode très pratique pour Copiez la même configuration que celle utilisée par le système lorsqu'il fonctionnait correctement..
Enfin, lorsque vous avez les lignes racine, kernel e initrd Pour les listes, il suffit d'exécuter la commande boot pour démarrer le système. Une fois à l'intérieur, la dernière étape consistera à réinstaller GRUB depuis Linux lui-même avec grub-install sur le disque correspondant, vous évitant ainsi de devoir répéter la procédure manuelle lors des redémarrages suivants.
Autres méthodes courantes (utilisation de LiveCD, chroot et Boot-Repair)
Jusqu'à présent, nous avons vu comment résoudre le problème en utilisant uniquement la console GRUB , sans recourir à aucun outil externe. Cependant, il est également utile de connaître les méthodes classiques avec LiveCD/LiveUSB et les outils graphiques, car dans certains cas, les dégâts sont si importants que le démarrage à partir d'un système bootable est la seule solution.
Une technique couramment utilisée dans les distributions basées sur Debian et Ubuntu consiste à démarrer à partir d'un LiveCD ou d'une LiveUSB (par exemple, une image Live d'Ubuntu, Linux Mint, Debian, etc.), à monter la partition racine du système endommagé, à monter également /boot s'il s'agit d'une partition séparée, puis à utiliser chroot sur ce système de fichiers pour réinstaller GRUB comme si nous opérions à partir de l'installation elle-même.
Le processus consiste, en gros, à identifier les partitions avec fdisk -l, déterminer quelle est la racine (par exemple, / Dev / sda2) et qui est la partition de démarrage si elle existe (par exemple, / Dev / sda7Ils sont ensuite assemblés avec :
Cloisons de montage (par exemple) :sudo mount /dev/sda2 /mntsudo mount /dev/sda7 /mnt/boot (si vous avez un fichier /boot séparé)
et le montage de /dev, /dev/pts, /proc et /sys est effectué dans /mnt :
Supports de fixation :sudo mount --bind /dev /mnt/dev
sudo mount --bind /dev/pts /mnt/dev/pts
sudo mount --bind /proc /mnt/proc
sudo mount --bind /sys /mnt/sys
À partir d'ici, vous pouvez accéder au système installé en utilisant :
Connectez-vous avec : sudo chroot /mnt
Et depuis l'intérieur, vous pouvez exécuter grub-install en pointant vers le disque :
Installation depuis chroot : grub-install --boot-directory=/boot/ --recheck /dev/sda
pour recharger le gestionnaire de démarrage dans le MBR ou une zone équivalente, suivi de :
Générer la configuration : grub-mkconfig -o /boot/grub/grub.cfg
pour régénérer le fichier de configuration. À la sortie du chroot avec exit et redémarrez l'ordinateur (sudo reboot), normalement Le menu GRUB réapparaît normalement..
Une autre option très pratique pour les utilisateurs qui préfèrent éviter le terminal est l' outil Boot-Repair , qui peut être installé dans un environnement Ubuntu Live et offre une interface graphique capable de détecter les installations du système d'exploitation et de réparer GRUB de manière quasi automatique . Il suffit de lancer l'outil, de sélectionner la « réparation recommandée » et de le laisser analyser et réécrire le chargeur de démarrage.
Bien que ces solutions basées sur des LiveCD ou des utilitaires externes soient très pratiques, l'avantage de maîtriser les techniques vues au début est de ne pas dépendre d'une clé USB ou d'un disque dur externe . La console GRUB elle-même suffit dans de nombreuses situations, notamment lorsque le problème se limite à la perte de la référence correcte à la partition contenant /boot par le gestionnaire de démarrage.
Cela étant dit, il est clair qu'un GRUB défectueux ne signifie pas nécessairement un système perdu : vous disposez d'outils dans le chargeur de démarrage lui-même, sur la ligne de commande et dans l'environnement Live pour localiser la partition correcte, charger le noyau manuellement, démarrer votre GNU/Linux et réinstaller le gestionnaire de démarrage afin qu'il fonctionne à nouveau comme neuf.