Table des matières

La commande système chroot sous GNU/Linux

Chroot est à la fois un appel système et une commande Unix du même nom qui permet de changer de répertoire racine /, d'ailleurs la commande chroot signifie change root (ch = change). Cette commande a été ajouté en 1979 à Unix version 7 des laboratoires Bell Labs de l'entreprise AT&T. Cette commande a des similitudes avec des conteneurs tel que LXC avec tout de même une isolation beaucoup moins forte, raison pour laquelle a été créé les conteneurs.

Chroot permet par exemple de réparer un système Linux cassé, par exemple par le biais d'un live USB Linux. Cette commande se trouve par défaut dans le paquets coreutils de GNU mais également sous BusyBox pour les systèmes embarqués.

Dans la suite de ce tuto nous allons utiliser la commande sudo

Utilisation de la commande chroot sous Linux

Comme mentionné précédemment vous pouvez utiliser un live USB Linux pour réparer un système Linux cassé sur votre ordinateur ou bien même avoir un second système Linux complet hors noyau donc l'espace utilisateur au sein d'un système Linux sain (comme LXC).

Pour commencer créer un répertoire dans /mnt sur le système hôte :

sudo mkdir /mnt/chroot

Monter votre chroot

Monter la partition racine / du système que vous voulez chrooter :

sudo mount /dev/sda1 /mnt/chroot/

sda1 est à remplacer par votre média de stockage.

Monter les répertoires /dev et /proc indispensable pour un chroot :

sudo mount --bind /dev /mnt/chroot/dev
sudo mount -t proc /dev /mnt/chroot/proc

Vous pouvez également monter les répertoires /sys et /run :

sudo mount -t sysfs /sys /mnt/chroot/sys
sudo mount --bind /run /mnt/chroot/run
Sur un système Linux UEFI il peut-être nécessaire de monter :
sudo mount -t efivarfs none /sys/firmware/efi/efivars
sudo mount -t /dev/<partition_EFI> /boot/efi

Si vous souhaitez également avoir accès à internet dans votre chroot :

sudo cp /etc/resolv.conf /mnt/chroot/etc/resolv.conf

Vous pouvez désormais changer de répertoire / et aller dans celui de votre chroot :

sudo chroot /mnt/chroot

si la commande échoue, tapez :

sudo chroot /mnt/chroot /bin/bash

Maintenant que vous êtes dans votre chroot vous pouvez en sortir avec cette commande :

exit

Démonter votre chroot

Démonter les répertoires :

sudo umount /mnt/chroot/dev
sudo umount /mnt/chroot/proc
sudo umount /mnt/chroot/sys
sudo umount /mnt/chroot/run

Démonter le chroot lui même :

sudo umount /mnt/chroot
Vous pouvez également démonter votre chroot en une seule commande :
sudo umount -R /mnt/chroot