Un exemple d'utilisation de chroot : réinstaller GRUB

GRUB est une appli­ca­tion per­met­tant de choi­sir sous quel OS boo­ter. Elle s'installe sur la MBR du disque dur. Il arrive par­fois qu'elle ne fonc­tionne plus ( sou­vent suite à une réins­tal­la­tion de Windows ) et ainsi il n'est plus pos­sible de démar­rer l'ordinateur. L'utilisation de la com­mande chroot avec un LiveCD est une manière pos­sible de répa­rer GRUB.

Introduction

Dans un sys­tème UNIX, la racine des réper­toires ( root en anglais ) est noté "/" . La com­mande chroot per­met de faire croire à un pro­ces­sus que la racine "/" est ailleurs ! Vous pou­vez donc par exemple avoir un sys­tème d'exploitation com­plet dans /mnt/ubuntu . En uti­li­sant la commande :

chroot /mnt/ubuntu bash -i

Vous lan­cez un shell Bash depuis le sys­tème de fichier "/mnt/ubuntu" pour qui "/mnt/ubuntu" est en fait la racine du sys­tème. "/mnt/ubuntu" est deve­nue une nou­velle "/" indé­pen­dante de la racine ini­tiale. Toute com­mande effec­tuée à l'intérieur de ce bash n'aura aucune connais­sance du vrai réper­toire racine.

Tout ce passe comme si vous étiez sur une autre machine UNIX.

Et GRUB alors ?

L'astuce est la sui­vante : nous allons boo­ter sur notre LiveCD et chroo­ter sur notre linux ins­tallé. Pour ensuite réins­tal­ler le GRUB facilement

C'est parti !

Alors tout d'abord il vous faut un LiveCD, n'importe lequel devrait suf­fire, Knoppix par exemple. Insérez le dans votre ordi­na­teur et redé­mar­rez. Une fois le démar­rage ter­miné, ouvrez une console.

Passez en mode super­u­ti­li­sa­teur (root) en tapant la com­mande sui­vante sur Knoppix:

su -

Maintenant il faut créer notre espace de tra­vail et mon­ter les par­ti­tions de notre ins­tal­la­tion Linux. Il faut créer un réper­toire pour notre point de montage :

mkdir /mnt/help

Si votre "/boot" est dans une par­ti­tion dif­fe­rente de la racine du sys­tème il faut aussi créer le dos­sier boot :

mkdir /mnt/help/boot

Il est main­te­nant temps de chargé les don­nées dans ces dos­siers. Dans mon sys­tème la par­ti­tion /dev/hda4 cor­res­pond à la racine de mon sys­tème. Adapter donc la com­mande sui­vante pour vous :

mount /dev/hda4 /mnt/help
mount -o bind /dev /mnt/help/dev
mount -o bind /proc /mnt/help/proc
cp /proc/mounts /mnt/help/etc/mtab

Et si votre "/boot" est sur une autre par­ti­tion mon­ter la aussi comme ceci :

mount /dev/hda5 /mnt/help/boot

Maintenant il suf­fit de ren­trer dans l'environnement de tra­vail avec chroot :

chroot /mnt/help/ /bin/bash

À par­tir de main­te­nant vous n'êtes plus dans le LiveCD mais sur le sys­tème Linux que vous avez ins­tallé. Donc toute modi­fi­ca­tion est prise en compte !

Réparons GRUB

Lancez la com­mande "grub" : un prompt devrait appa­raître. Lancer ensuite :

grub> find /boot/grub/stage1  # Vous obte­nez la réponse sous la forme hdx,y
# avec x et y deux nombres
grub> root (hdx,y)            # Avec les nombres que vous avez eu au des­sus
grub> setup (hd0)             # On réecrit la MBR
grub> quit                    # On quitte

Et voila nor­ma­le­ment c'est réparé, vous pou­vez quit­ter le LiveCD et essayer de reboo­ter sur votre système.



Post comment as twitter logo facebook logo
Sort: Newest | Oldest

Super, merci.
Sur les autres sites il manque le coup du "mount -o bind /dev /mnt/help/dev"
Et ça change tout :)

Merci pour votre article

Bravo.
Pédagogique, et très utile.
Merci

Petite méthode très sympa pour expliquer l'utilité de chroot, mais avec un live CD qui va bien (ubuntu en fait partie), pas besoin de chrooter. Un utilitaire Grub est installé par défaut, et permet de restaurer le MBR en 3 commandes. (je dis juste ça parceque pour les débutants, voir la méthode via le chroot fait assez peur)
Une autre utilisation sympa du chroot est pour les connexions via SSH : on crée un système minimal (par debootstrap par exemple), et on chroot l'user dedans lorsqu'il se connecte par SSH, ça peut être super utile (jamais eu l'occasion de tester par contre)

vraiment bien tout ça, qqun vient de m'aider sur ce point avant que je ne lise cet article, on fait la même chose mais ça m'aurait aidé de tomber dessus avant.
Clément : peut tu en dire plus sur les 3 commandes qui permettent de restaurant le MBR, ça m'intéresse.
Bon article, merci

Salut,
Clément devait parler de cette méthode là : http://doc.ubuntu-fr.org/tutoriel/comment_restaure...
Néanmoins avec les nouvelles versions d'Ubuntu (qui utilise Grub2 il me semble) c'est un peu différent je pense.

Super, merci.
Sur les autres sites il manque le coup du "mount -o bind /dev /mnt/help/dev"
Et ça change tout :)

Merci pour votre article

Bravo.
Pédagogique, et très utile.
Merci

Petite méthode très sympa pour expliquer l'utilité de chroot, mais avec un live CD qui va bien (ubuntu en fait partie), pas besoin de chrooter. Un utilitaire Grub est installé par défaut, et permet de restaurer le MBR en 3 commandes. (je dis juste ça parceque pour les débutants, voir la méthode via le chroot fait assez peur)
Une autre utilisation sympa du chroot est pour les connexions via SSH : on crée un système minimal (par debootstrap par exemple), et on chroot l'user dedans lorsqu'il se connecte par SSH, ça peut être super utile (jamais eu l'occasion de tester par contre)