Un chroot pour réparer Grub
Je donne ici un exemple d'une réparation de Grub dans le chroot mais on peut bien évidemment y faire d'autres choses, installer des paquets, modifier des fichiers de configs, accéder au réseau, toutes choses qui peuvent être utiles pour restaurer votre pingouin favori.
Un chroot est une opération qui modifie le répertoire root courant pour le processus en cours et les processus enfants. Les applications lancées dans ce chroot n'ont plus accès aux fichiers à l'extérieur du chroot. Cela permet donc d'isoler un processus.
Vous n'arrivez plus à booter votre Linux parce que Grub est corrompu. Vous savez qu'il suffirait de lancer la commande update-grub pour que tout rentre dans l'ordre.
Comment arriver à lancer cette commande avec votre distro qui refuse de démarrer ?
La solution est évidemment de lancer un LiveCD, de monter votre installation de Linux et de créer un chroot pour que le root directory devienne celui de votre installation et non plus celui du LiveCD.
Imaginons que le système Linux à réparer se trouve sur sda1.
Commençons par monter le disque dans /mnt par exemple :
$ sudo mount /dev/sda1 /mnt
|
Il faut aussi monter le système de fichiers /dev:
$ sudo mount --bind /dev /mnt/dev/
|
Maintenant, on peut créer le chroot.
A partir de maintenant, sudo n'est plus nécessaire puisque nous sommes dans le chroot avec des droits root. On peut lancer les commandes nécessaires pour réparer notre installation :
Une fois le système réparé, on sort du chroot et on démonte les systèmes de fichiers :
# exit
$ sudo umount /mnt/dev
$ sudo umount /mnt
|
Notez que si votre /home ou votre /boot sont sur une partition séparée, par exemple sda5, il faudra aussi la monter avant de faire le chroot :
$ sudo mount /dev/sda5 /mnt/home
$ sudo mount /dev/sda5 /mnt/boot
|
Vous serez peut-être amener à monter aussi le système de fichiers /proc ou /sys :
$ sudo mount -t proc /proc /mnt/proc
$ sudo mount -t sysfs /sys /mnt/sys
|
▉