Présentation
Le GRUB (Grand Unified Bootloader) est un outil pour démarrer et charger les noyaux du système d'exploitation et le chargeur de démarrage par défaut pour les systèmes basés sur le noyau Linux. Bien qu'il s'exécute en premier lorsqu'une machine est allumée, les utilisateurs réguliers voient rarement GRUB en action. Il fonctionne automatiquement et ne nécessite aucune intervention de l'utilisateur.
Cependant, lorsque vous essayez de démarrer un autre système d'exploitation avec Linux sur la même machine, le chargeur de démarrage de l'autre système peut écraser GRUB, ce qui empêche le système Linux de démarrer.
Cet article vous montrera comment résoudre l'échec du démarrage de Linux à l'aide des commandes GRUB Rescue et de l'outil Boot Repair.
Prérequis
- Un compte avec des privilèges sudo.
- Accès à la ligne de commande.
Problèmes de démarrage GRUB
La raison la plus courante pour laquelle GRUB ne démarre pas dans le système d'exploitation est que le chargeur de démarrage d'un autre système d'exploitation écrase la configuration de démarrage de GRUB. Le problème se produit lors d'une tentative de double démarrage avec une installation Linux existante. Une autre raison est la suppression accidentelle des fichiers de configuration GRUB.
Lorsque GRUB ne parvient pas à démarrer le système, l'invite GRUB Rescue s'affiche.
L'exemple ci-dessus montre que GRUB affiche l'erreur "pas de partition de ce type" avant d'afficher le grub rescue
rapide. Une autre erreur GRUB courante est "système de fichiers inconnu", suivi de la même invite.
Parfois, l'écran peut afficher le grub
invite uniquement.
Commandes de sauvetage GRUB
Vous trouverez ci-dessous la liste des commandes GRUB Rescue couramment utilisées. Utilisez les commandes dans les invites mentionnées dans la section précédente.
Commande | Description | Exemple |
---|---|---|
boot | Démarrer le démarrage (raccourcis :F10 , CTRL + x ). | La commande est émise sans arguments. |
cat | Écrire le contenu d'un fichier sur la sortie standard. | cat (hd0,1)/boot/grub/grub.cfg |
configfile | Charger un fichier de configuration. | configfile (hd0,1)/boot/grub/grub.cfg |
initrd | Chargez le fichier initrd.img. | initrd (hd0,1)/initrd.img |
insmod | Charger un module. | insmod (hd0,1)/boot/grub/normal.mod |
loopback | Monter un fichier image en tant que périphérique. | loopback loop0 (hd0,1)/iso/image.iso |
ls | Afficher le contenu d'un répertoire ou d'une partition. | ls (hd0,1) |
lsmod | Afficher une liste des modules chargés. | La commande est émise sans arguments. |
normal | Activer le module normal. | La commande est émise sans arguments. |
search | Recherchez des appareils. Option --file recherche des fichiers, --label recherche des libellés, --fs-uuid recherche l'UUID du système de fichiers. | search -file [filename] |
set | Définissez une variable d'environnement. Si elle est émise sans argument, la commande imprime la liste de toutes les variables d'environnement et leurs valeurs. | set [variable-name]=[value] |
Correction de l'échec du démarrage
Ce didacticiel couvre deux façons de résoudre les problèmes de démarrage GRUB, à l'aide de l'invite GRUB Rescue , et l'outil de réparation de démarrage .
Via le terminal Grub
1. Utilisez la commande set sans arguments pour afficher les variables d'environnement :
set
L'exemple de sortie montre que GRUB est configuré pour démarrer à partir de (hd0,msdos3)
partition :
2. La commande ls répertorie les partitions disponibles sur le disque.
ls
La sortie affiche la liste des partitions.
Utilisez le ls
commande pour trouver la partition contenant le boot
répertoire.
ls [partition-name]
L'exemple montre le boot
répertoire dans le (hd0,msdos1)
partitionner.
3. Définissez la partition de démarrage comme valeur de la root
variable. L'exemple utilise la partition nommée (hd0,msdos1)
.
set root=(hd0,msdos1)
4. Chargez le normal
mode de démarrage.
insmod normal
5. Démarrez le normal
mode de démarrage.
normal
Le normal
Le mode vous permet d'émettre des commandes plus complexes.
6. Chargez le noyau Linux à l'aide de linux
commande.
linux /boot/vmlinuz-4.2.0-16-generic root=/dev/sda1 ro
7. Émettez le boot
commande.
boot
Le système démarre maintenant correctement.
Par l'image en direct
Une autre façon de résoudre vos problèmes de démarrage GRUB consiste à utiliser une image live Linux pour démarrer à partir d'un périphérique externe.
1. Téléchargez un programme d'installation Linux en direct. Cet exemple utilise l'image ISO d'Ubuntu 20.04.
2. Utilisez un outil tel que Etcher pour écrire l'image Linux sur une carte SD ou une clé USB.
3. Insérez le périphérique amorçable et démarrez l'ordinateur.
4. Sélectionnez Essayer Ubuntu sur l'écran d'accueil.
5. Lorsque le système en direct démarre, connectez-vous à Internet.
6. Ouvrez le terminal et tapez la commande suivante pour ajouter le référentiel de l'outil Boot Repair.
sudo add-apt-repository ppa:yannubuntu/boot-repair
Appuyez sur Entrée et attendez que le dépôt soit ajouté.
7. Mettez à jour les référentiels.
sudo apt update
8. Installez l'outil de réparation de démarrage.
sudo apt install boot-repair
9. Démarrez l'outil Boot Repair via le terminal.
boot-repair
10. Sélectionnez Réparation recommandée .
Attendez que l'outil ait fini de réparer le chargeur de démarrage.
Mise à jour du fichier de configuration GRUB
Lorsque le système démarre avec succès, assurez-vous que la configuration GRUB est à jour.
Exécutez cette commande :
update-grub
Réinstaller GRUB
Suivez les étapes ci-dessous pour réinstaller GRUB sur votre système Linux.
1. Montez la partition contenant l'installation du système d'exploitation. L'exemple monte le /dev/sda1
partitionner vers /mnt
répertoire.
sudo mount /dev/sda1 /mnt
2. Liez le /dev
, /dev/pts
, /proc
, et /sys
répertoires vers les répertoires correspondants dans le /mnt
dossier.
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
3. Installez GRUB.
sudo grub-install -root-directory=/mnt/ /dev/sda
4. Démontez les répertoires une fois l'installation terminée avec succès.
sudo umount /mnt/sys &&
sudo umount /mnt/proc &&
sudo umount /mnt/dev/pts &&
sudo umount /mnt/dev &&
sudo umount /mnt