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

GRUB est une application permettant de choisir sous quel OS booter. Elle s'installe sur la MBR du disque dur. Il arrive parfois qu'elle ne fonctionne plus ( souvent suite à une réinstallation de Windows ) et ainsi il n'est plus possible de démarrer l'ordinateur. L'utilisation de la commande chroot avec un LiveCD est une manière possible de réparer GRUB.

Introduction

Dans un système UNIX, la racine des répertoires ( root en anglais ) est noté "/" . La commande chroot permet de faire croire à un processus que la racine "/" est ailleurs ! Vous pouvez donc par exemple avoir un système d'exploitation complet dans /mnt/ubuntu . En utilisant la commande :

chroot /mnt/ubuntu bash -i Vous lancez un shell Bash depuis le système de fichier "/mnt/ubuntu" pour qui "/mnt/ubuntu" est en fait la racine du système. "/mnt/ubuntu" est devenue une nouvelle "/" indépendante de la racine initiale. Toute commande effectuée à l'intérieur de ce bash n'aura aucune connaissance du vrai répertoire racine. Tout ce passe comme si vous étiez sur une autre machine UNIX.

Et GRUB alors ?

L'astuce est la suivante : nous allons booter sur notre LiveCD et chrooter sur notre linux installé. Pour ensuite réinstaller le GRUB facilement

C'est parti !

Alors tout d'abord il vous faut un LiveCD, n'importe lequel devrait suffire, Knoppix par exemple. Insérez le dans votre ordinateur et redémarrez. Une fois le démarrage terminé, ouvrez une console. Passez en mode superutilisateur (root) en tapant la commande suivante sur Knoppix: su - Maintenant il faut créer notre espace de travail et monter les partitions de notre installation Linux. Il faut créer un répertoire pour notre point de montage : mkdir /mnt/help Si votre "/boot" est dans une partition differente de la racine du système il faut aussi créer le dossier boot : mkdir /mnt/help/boot Il est maintenant temps de chargé les données dans ces dossiers. Dans mon système la partition /dev/hda4 correspond à la racine de mon système. Adapter donc la commande suivante 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 partition monter la aussi comme ceci : mount /dev/hda5 /mnt/help/boot Maintenant il suffit de rentrer dans l'environnement de travail avec chroot : chroot /mnt/help/ /bin/bash À partir de maintenant vous n'êtes plus dans le LiveCD mais sur le système Linux que vous avez installé. Donc toute modification est prise en compte !

Réparons GRUB

Lancez la commande "grub" : un prompt devrait apparaître. Lancer ensuite : grub> find /boot/grub/stage1 # Vous obtenez 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 dessus grub> setup (hd0) # On réecrit la MBR grub> quit # On quitte Et voila normalement c'est réparé, vous pouvez quitter le LiveCD et essayer de rebooter sur votre système.