Restaurer le boot loader Grub sous Linux Ubuntu

L'ordinateur rend fou

Grub is Evil

Grub - GRand Unified Boot loader - nous rappelle quelquefois l'importance de son rôle au démarrage par des messages du genre :
Error 13: Invalid or unsupported executable format, Error 24: Attempt to access block outside partition...

Cet article vous présente comment restaurer la MBR après un problème avec Grub.

Présentation du problème

La zone d'amorce ou Master Boot Record (MBR) du disque dur reste un point faible des installations Linux. En cas d'anomalie, elle peut empêcher tout redémarrage.
Le logiciel Grub en charge de la MBR est mis à jour lors des mises à niveau du noyau Linux ou lors de l'installation d'OS complémentaires comme Windows. Ces opérations ne sont donc pas anodines et nécessitent une sauvegarde préalable des informations vitales du serveur.

Identifier ses partitions

Démarrez votre serveur sur une clé USB Linux, voir l'article Créer une clé usb bootable Ubuntu 10.04 pour plus d'information.
Ouvrez une console et identifiez votre partition Linux :

# parted -l
Modèle: ATA ST380013AS (scsi)
Disque /dev/sda : 80,0GB
Taille des secteurs (logique/physique) : 512o/512o
Table de partitions : msdos

Numéro  Début   Fin     Taille  Type      Système de fichiers  Fanions
 1      32,3kB  21,0GB  21,0GB  primary   ntfs                 démarrage
 3      21,0GB  36,8GB  15,9GB  primary   ext4
 4      36,8GB  78,2GB  41,3GB  primary
 2      78,2GB  80,0GB  1818MB  extended                       lba
 5      78,2GB  80,0GB  1818MB  logical   linux-swap(v1)

Dans cet exemple, il s'agit de /dev/sda3. La notation grub pour cette partition est hd0,2 : disque numéro 0 et partition numéro 2.

Sauvegarder votre MBR

Pourquoi sauvegarder la Master Boot Record de votre disque qui ne fonctionne plus me direz-vous ?
Parce que les consignes qui suivent peuvent aggravées la situation si vous avez mal compris votre problème. Il est donc essentiel de faire une sauvegarde de votre MBR avant de la modifier en vu de la restaurer si besoin.

La commande pour sauvegarder la MBR du disque /dev/sda dans un fichier mbr-sda.sav est :

# dd if=/dev/sda of=mbr-sda.sav bs=512 count=1 

Si vous souhaitez restaurer la MBR :

# dd if=mbr-sda.sav of=/dev/sda 

chrooter l'environnement

Activez temporairement votre disque dans un chroot. Je pars du postulat que vous n'avez pas séparé votre partition /boot du reste du disque système.
Avec les données d'exemple, cela donne les commandes suivantes :

# mount /dev/sda3 /mnt
# mount -o bind /dev /mnt/dev
# mount -o bind /proc /mnt/proc
# cp /proc/mounts /mnt/etc/mtab
# chroot /mnt/ /bin/bash

Attention, toutes les opérations disques vont maintenant être effectuées sur la partition système de votre disque dur !

Récupérer automatiquement Grub

Grub peut récupérer automatiquement votre MBR. En ligne de commande :

# /sbin/grub-install /dev/sda
# reboot

Récupérer manuellement Grub

Si la récupération automatique n'aboutit pas, vous pouvez récupérer manuellement Grub. Avec les données d'exemple, en ligne de commande :

# /sbin/grub
grub> root (hd0,2)
grub> setup (hd0)
grub> quit

hd0,2 correspond à /dev/sda3. Ajustez ces informations à votre installation.

Récupérer Grub avec le CD d'installation d'Ubuntu

Si vous n'avez pas de clé de démarrage, vous pouvez reconstruire votre configuration Grub à l'aide du CD d'installation d'Ubuntu.

Démarrez votre PC depuis le CD Ubuntu.
Au message boot:, entrez rescue
Passez les écrans jusqu'à la question concernant la partition de démarrage. Dans mon exemple, la partition est /dev/sda3. Cela donne le nom /dev/discs/disc0/part3.
Lorsque vous êtes en ligne de commande, installez grub :

# grub-install /dev/sda3

Commentaires

Merci! J ai pu reparer mon grub grace a vous.