Comment réinstaller grub dans le secteur de démarrage du disque dur ?

Par Julien Roland , le 23/06/2020 , mis à jour le 14/10/2020 - 7 minutes de lecture
grub install

Les distributions Linux utilisent pour démarrer le chargeur d’amorçage grub. Celui-ci est installé dans le secteur de démarrage du disque dur, et il est appelé par le micro-programme de l’ordinateur (le BIOS, ou l’UEFI sur les ordinateurs récents) quand celui-ci désire démarrer depuis le disque dur.

De façon exceptionnelle, il peut arriver que le secteur de démarrage soit endommagé. Il peut y avoir plusieurs sortes de raisons à ça, comme une anomalie physique sur le disque (où il faudra malheureusement le remplacer), ou une erreur de manipulation avec un outil de configuration de périphérique de stockage. Certains vieux virus s’attaquaient également à cette zone.
Dans d’autres cas, et notamment lorsqu’on utilise un double boot Windows/Linux, il peut arriver que le logiciel d’installation de Windows écrase le secteur de démarrage (lors d’une réinitialisation de Windows par exemple, ou lors d’une mise à jour majeure du système d’exploitation de Microsoft) supprimant ainsi grub. Dans ce cas, on ne peut plus démarrer sur la distribution Linux, mais seulement sur Windows.

Nous allons ici réparer un tel problème, en voyant comment réinstaller grub dans le secteur de démarrage du disque dur.

Attention, les opérations décrites ci-dessous ne sont pas anodines, et peuvent endommager un système sain si elles sont utilisées hors contexte, ou sans faire attention à ce qu’on fait. En aucun cas l’auteur, ou astuces-aide-informatique.info ne sauraient être tenus responsables si des dégâts étaient infligés au système par une mauvaise utilisation des opérations décrites.

Démarrage de l’ordinateur depuis un média d’installation d’une distribution Linux

L’exemple sera pris ici avec le média d’installation d’Ubuntu 20.04. Nous n’allons pas lancer le programme d’installation à proprement parler, mais utiliser la clé en mode « live USB ». Pour des informations complémentaires sur ce qu’est un live USB et comment l’utiliser, je vous conseille la lecture de l’article décrivant comment essayer Ubuntu sans modifier son ordinateur.

mode live usb

Montage des différentes ressources nécessaires et chroot

Derrière ce titre un peu abscons se cachent quelques commandes Linux qui sont nécessaires pour préparer l’environnement d’installation de grub. En effet, celui-ci a besoin d’avoir connaissance du ou des environnements dont il va avoir la charge de démarrage, mais aussi du matériel (ici le disque dur) sur lequel il va être installé.
C’est le fameux chroot (change root = changer la racine du système) qui va permettre de quitter le contexte « live USB » et de nous placer dans le contexte du système Linux existant à amorcer et ainsi installer grub. Mais avant de quitter le contexte live USB, nous avons besoin de réaliser des opérations préparatoires, qui sont nécessaires pour que le contexte « chrooté » ait un accès direct au matériel de l’ordinateur.
Toutes les opérations seront des commandes exécutées dans un émulateur de terminal.

lancement gnome terminal

Création du dossier dans lequel réaliser le chroot, et montage de la partition contenant le système Linux pour lequel on veut voir comment réinstaller grub

Il faut créer un répertoire vierge dans l’arborescence de fichiers du système live, par exemple dans /media :

sudo mkdir /media/ubuntu

mkdir /media/ubuntu

A présent, nous avons besoin de déterminer quelle est la partition du disque dur qui contient le système Linux pour lequel nous voulons réparer le démarrage. Pour ça on utilise d’abord la commande lsblk qui liste les périphériques de type « bloc » (c’est-à-dire les périphériques de stockage).

lsblk
lsblk
/dev/vda, et ses partitions (vda1, vda2, vda3, vda5) remontés par la commande lsblk.

On recherche dans le résultat tous les périphériques de type « disk ». Dans notre exemple, il n’y en a qu’un, c’est vda : /dev/vda pour être plus précis. On retrouve aussi souvent des périphériques de type disque dur sous l’appellation /dev/sda, /dev/sdb … dans les systèmes modernes.

Ici, nous savons que nous avions installé Ubuntu sur une partition de 20Go, donc il n’y a pas d’ambiguïté, notre système est installé sur la partition numérotée 5, à savoir /dev/vda5.
Il est important de trouver la bonne partition, sinon nous ne réussirons pas notre chroot.

En cas de doute, on pourra avoir une confirmation supplémentaire avec la commande fdisk lancée sur le périphérique disque qu’on pense être le bon :

sudo fdisk -l /dev/vda
fdisk -l
La commande fdisk nous montre que /dev/vda5 est une partition Linux.

On a la confirmation ici que /dev/vda5 est une partition contenant un système de fichiers de type Linux, sur le seul disque dur de notre système. Nous allons pouvoir monter ce système de fichiers dans le répertoire /media/ubuntu que nous avons créé au préalable, avec la commande mount.

sudo mount /dev/vda5 /media/ubuntu

mount /media/ubuntu

Montage de /dev, /proc et /sys

Ce sont trois répertoires de l’arborescence Linux qui, très schématiquement, contiennent des fichiers représentant entre autres les composants matériels de l’ordinateur comme le processeur, la mémoire, les disques durs…Ces trois répertoires appartiennent au contexte « live USB » du système, car le noyau Linux a été chargé en démarrant le système depuis la clé USB. Hors, on a besoin que ces répertoires, et donc les composants matériels qui sont derrière, soient accessibles à notre contexte « chroot ». Pour ce faire, nous allons les monter à l’intérieur du dossier /media/ubuntu, avec les 3 commandes suivantes :

sudo mount --bind /dev /media/ubuntu/dev

montage dev

sudo mount -t proc /proc /media/ubuntu/proc

montage proc

sudo mount -t sysfs /sys /media/ubuntu/sys

montage sys

Le chroot

A présent, toutes les conditions sont réunies pour réaliser le chroot, au travers duquel le programme d’installation de grub aura non seulement accès au contexte de notre système à réparer, mais en plus aura un accès direct au matériel, comme par exemple le disque dont le secteur de démarrage est à réparer.
Cela se fait tout simplement avec la commande suivante:

sudo chroot /media/ubuntu

chroot

grub-install : comment réinstaller grub dans le secteur de démarrage du disque dur

A présent, la réinstallation de grub est très rapide, en invoquant la commande grub-install sur le disque dur sur lequel on veut effectuer l’installation (ici /dev/vda).

grub-install /dev/vda
grub install
La commande grub-install, pour réinstaller grub sur notre disque dur /dev/vda, s’est déroulée sans accroc.

L’opération est terminée. On peut cependant se rassurer en demandant à grub de relire et appliquer la configuration dans laquelle on l’avait laissé avant la panne/mauvaise manipulation etc… avec la commande (optionnelle) suivante :

update-grub
update grub
La commande update-grub relit et applique la configuration de grub. Ici nous voyons entre autres que plusieurs noyaux Linux ont été détectés, ainsi qu’un système Windows 10.

Il reste enfin à quitter le chroot avec la commande exit…

exit

…et à redémarrer l’ordinateur, qui devrait alors de nouveau afficher le menu de démarrage grub que l’on avait perdu, avec les derniers réglages que l’on utilisait.

Tux, la mascotte du noyau Linux. (c) Larry Ewing

Julien Roland

Technicien systèmes et réseaux depuis plus de 15 ans, je travaille au sein des infrastructures informatiques d'une entité de plusieurs milliers d'utilisateurs. Convaincu du fait qu'il existe des produits d'excellence à la fois issus du monde propriétaire et du monde open source, j'aime butiner dans les deux. Cependant j'ai une appétence particulière pour les logiciels libres de par leur esprit d'universalité et de partage. Mes contributions passent par le partage et la transmission des mes connaissances et expériences, mais aussi par l'aide et le conseil que je peux apporter autour de moi.

Voir les publications de l'auteur

Commentaires

Laisser un commentaire

Votre commentaire sera révisé par les administrateurs si besoin.