Réinstaller Grub-legacy

De wiki.debian-fr

Grub ou grub-legacy est l'ancienne version de grub depuis la sortie de grub2 (ou grub-pc) Grub-legacy : Guide de survie en cas de problèmes de démarrage...

Je pars du principe que vous avez déjà installé Grub-legacy dans le MBR de votre disque. Sachez qu'il est possible de l'installer dans le PBR des partitions. Dans ce cas particulier, il faudra un programme d'amorçage (ce peut être depuis Windows, ou un Gestionnaire libre - GAG, SBM, AirBoot...)

Si Grub-legacy est en panne pour une raison X ou Y, voici un guide de survie...

Le mode Rescue[modifier]

Grub ne démarre pas le système, et vous donne seulement accès au "mode rescue"

[ Minimal BASH-like line editing is supported.
For the first word, TAB lists possible command completions.
Anywhere eles TAB lists the possible completions of a device/filename. ]

grub rescue>

Cette ligne de commande (que vous ne vouliez pas...) vous permet tout de même d'exécuter n'importe quelle action au démarrage, ce qui est bien utile dans certains cas.

Recherchons sur quelle partition linux est installé (si vous n'êtes pas sûr...)

grub> find /boot/grub/stage1

La réponse obtenue est sous la forme :

hd(X,Y)

Ou X représente le disque et Y la partition. ATTENTION Grub-legacy numérote les partitions à partir de zéro...

Cela pourrait donner si vous avez plus d'un disque :

(hd0)	Premier disque IDE
(hd1)	Premier disque IDE
etc.

Précisons à Grub où se trouve notre système (dans l'exemple suivant premier disque / première partition)

grub> root (hd0,0)

Il ne reste plus qu'à réinstaller Grub sur le MBR du premier disque :

grub> setup (hd0)

Checking if "/boot/grub/stage1" exists... no
Checking if "/grub/stage1" exists... yes
Checking if "/grub/stage2" exists... yes
Running "install /grub/stage1 d (hd0) /grub/stage2 p /grub/menu.lst"...
succeeded
Done.

grub>

Quittez

grub> quit

Et redémarrez, vous devriez retrouver votre Grub (ouf !)

Si vous ne parvenez pas à démarrer votre machine avec les manipulations ci-dessus, lisez la suite...

La solution la plus simple[modifier]

1. Procurez-vous Super-grub-disk sur le site officiel ou sur linux-live-cd.org
Petite explication sur Super-grub-disk :
La principale utilité de Super Grub Disk est de démarrer un système dont le Grub est en panne... il peut aussi réparer Grub et le réinstaller sur MBR ou sur une autre partition - PBR -(utilisateurs avancés).
Il peut également restaurer le MBR d'origine en désinstallant Grub sans risquer de rendre votre ordinateur inutilisable après formatage de la partition Linux.
Lorsque vous démarrez vote ordinateur avec Super-grub-disk, vous tombez sur un menu plus ou moins clair. Laissez vous guider, vous devriez parvenir à trouver la bonne option pour démarrer sur votre Debian (Un tuto de Super-grub-disk viendra...)
2. Démarrer votre système en panne avec ce disque.
3. Réinstaller ou réparez Grub-legacy

Solution avec un chroot[modifier]

  • Trouvez un LiveCD et démarrez votre machine avec. N'importe quel LiveCD à base de Debian fera l'affaire (Knoppix, Ubuntu, Sidux...)

Attention, si votre système est en 64bits, il faudra démarrer avec un LiveCD en 64bits

Deuxième étape: montage, et chrootage[modifier]

  • Ouvrez un terminal et tapez sudo fdisk -l (Permet de vérifier quelle partition est à "chrooter"...)
  • Il faut trouver laquelle des partitions listée est votre installation GNU/Linux. Sur une installation "simple" ça ressemblera à ceci :
   Device Boot      Start         End      Blocks   Id  System
/dev/hda1   *           1        5624    45174748+  83  Linux
/dev/hda2            5625        6110     3903795   82  Linux swap / Solaris
/dev/hda3            6111       14946    70975170    5  Extended
/dev/hda5            6111       14946    70975138+  8e  Linux LVM

La partition qui vous intéresse est /dev/hda1

  • Il faut créer un répertoire ou vous allez monter cette partition, et monter votre partition système  :
# mkdir /mnt/chroot
# mount /dev/hda1 /mnt/chroot
  • Si vous aviez créé une partition séparée pour /boot, il faut la monter :
# mount /dev/hdxy /mnt/chroot/boot

Il est d'ailleurs probable que dans ce cas, /dev/hda1 soit votre partition /boot et /dev/hda2 la racine de votre système, soyez attentif à ce que vous faites.

  • Une fois que la partition système est montée, il faut monter les périphériques que le Live CD a trouvé,
# mount --bind /dev/ /mnt/chroot/dev
# mount -t proc /proc /mnt/chroot/proc
  • Le système est prêt à être "chrooté" :
# chroot /mnt/chroot


Il peut parfois être nécessaire, en fonction de votre système ou du LiveCD à partir duquel vous avez démarré d'ajouter /bin/bash à la commande

# chroot /mnt/chroot /bin/bash
  • Vous êtes maintenant en tant que root sur votre système installé en dur.

Troisième étape: Réinstaller Grub-legacy[modifier]

# grub
grub>

Cette ligne de commande (que vous ne vouliez pas...) vous permet tout de même d'exécuter n'importe quelle action au démarrage, ce qui est bien utile dans certains cas.

Recherchons sur quelle partition linux est installé.

grub> find /boot/grub/stage1

La réponse obtenue est sous la forme :

hd(X,Y)

Ou X représente le disque et Y la partition. ATTENTION Grub-legacy numérote les partitions à partir de zéro...

Cela pourrait donner si vous avez plus d'un disque :

(hd0)	Premier disque IDE
(hd1)	Premier disque IDE
etc.

Précision à Grub ou se trouve notre système (dans l'exemple suivant premier disque première partition)

grub> root (hd0,0)

Il ne reste plus qu'a réinstaller Grub sur le MBR du premier disque :

grub> setup (hd0)

Checking if "/boot/grub/stage1" exists... no
Checking if "/grub/stage1" exists... yes
Checking if "/grub/stage2" exists... yes
Running "install /grub/stage1 d (hd0) /grub/stage2 p /grub/menu.lst"...
succeeded
Done.

grub>

Quittez

grub> quit

Et redémarrez, vous devriez retrouver votre Grub (ouf !)

Si ça ne fonctionne toujours pas, réinstaller Grub dans le MBR - (toujours dans un chroot)

# grub-install --recheck /dev/hda (si hda est le premier disque, et celui sur lequel vous souhaitez installer Grub)

Ou si /boot est sur une partiion différente de /

# grub-install --root-directory=/boot --recheck /dev/hda


Documentation extérieure (en anglais) : Manuel de Grub-legacy

--Lol 30 mars 2010 à 13:03 (UTC)