Contexte : prendre la main sur un système Linux installé depuis un autre environnement (live USB, système de secours) · Testé sur : Linux, toutes distributions · Dernière vérification : contenu de 2023 non revérifié
La commande chroot (pour change root, « changer de racine ») fait d'un répertoire la nouvelle racine / d'un shell et de ses processus. Elle sert dans deux cas :
Ce tutoriel traite le premier cas.
root.lsblk ou fdisk -l permettent de l'identifier.On utilise ici le point de montage /mnt, prévu pour les montages temporaires ; n'importe quel répertoire vide convient.
Dans cet exemple,
/dev/sda2est la partition racine du système installé sur le disque. Remplacez-la par la vôtre : monter la mauvaise partition peut mener à modifier le mauvais système.
mount /dev/sda2 /mnt
Le système cible a besoin des pseudo-systèmes de fichiers du noyau pour fonctionner (périphériques, processus, informations matérielles) :
mount --bind /dev /mnt/dev
mount -t proc /proc /mnt/proc
mount -t sysfs /sys /mnt/sys
chroot /mnt /bin/bash
Le chroot est fait : les commandes saisies s'exécutent désormais dans le système installé sur le disque, comme s'il avait démarré.
Une fois les réparations terminées, quittez le shell du chroot, puis démontez les systèmes de fichiers dans l'ordre inverse du montage :
exit
umount /mnt/sys /mnt/proc /mnt/dev
umount /mnt
Dans le chroot, vérifiez que vous êtes bien dans le système cible, par exemple en affichant sa version et son nom d'hôte :
cat /etc/os-release
cat /etc/hostname
Les informations affichées sont celles du système installé sur le disque, et non celles du système de secours.
| Symptôme | Cause probable | Solution |
|---|---|---|
chroot: failed to run command '/bin/bash': No such file or directory |
Mauvaise partition montée, ou partition racine vide | Vérifiez avec ls /mnt que la racine du système (dossiers bin, etc, usr…) est bien présente |
umount: target is busy |
Un processus utilise encore le point de montage | Quittez le chroot et sortez de /mnt (cd /) avant de démonter |