La commande chroot
signifie change root, c'est à dire changer la racine. Elle permet donc d'« entrer dans » une installation de Linux, sans booter dessus.
Nous allons voir comment utiliser la commande chroot pour pouvoir basculer vers un système GNU/Linux (par exemple votre Debian préférée), à partir d'un autre système. Ce second système peut être un Live (cd/usb) ou un autre système GNU/Linux en dual boot.
Vous pouvez par exemle utiliser une live debian, ou la DFiso, mais n'importe quel Live CD GNU/Linux fera l'affaire : Knoppix, Ubuntu, Sidux, etc.
Voici en détail les opérations à effectuer pour monter et chrooter son système.
Ouvrez un terminal et tapez :
lsblk --fs
Cette commande vous permet de lister les partitions présentes sur votre machine. À vous d'identifier la partition racine du système auquel vous voulez accéder.
Dans le cas où l'on a deux systèmes présents sur son ordi (en comptant le live ou le dual-boot), le résultat de la commande ci-dessus pourrait ressembler à ceci :
NAME FSTYPE FSVER LABEL UUID FSAVAIL FSUSE% MOUNTPOINT sda ├─sda1 ext4 1.0 711cca50-9068-4a59-9c39-a6b3947a3250 346,4M 23% /boot └─sda2 ext4 1.0 18c3dcf5-7912-47d5-b121-c246482181a1 15,0G 50% / sdb ├─sdb1 vfat FAT32 7AD0-5B24 450,8M 5% ├─sdb2 swap 1 0d43bb7d-f3a8-4232-969e-ad47f5616923 ├─sdb3 ext4 1.0 160df578-36ff-4dc3-b9a7-a67b0b0ae9b9 17G 45% └─sdb4 ext4 1.0 3be277a2-1f2b-44a1-bda6-066cf5bc7a9d 494,9G 40%
/dev/sda2
est la partition racine du système que l'on est en train d'utiliser (on le voit car la colonne mountpoint indique /
).
La partition qui nous intéresse ici est /dev/sdb3
, car c'est la partition racine de l'autre système.
On la reconnaît en général car elle est en ext4 et a une taille comprise entre 15Go et 50Go.
On commence donc par créer un répertoire de montage :
mkdir /mnt/plouf
Puis on monte notre partition système dans ce répertoire :
mount /dev/sdb3 /mnt/plouf
Une fois que la partition système est montée, il faut monter les périphériques que le Live CD a trouvé :
mount --bind /dev/ /mnt/plouf/dev mount --bind /sys/ /mnt/plouf/sys mount -t proc /proc /mnt/plouf/proc
Entrez alors dans le système et monter les autres partitions :
chroot /mnt/plouf /bin/bash mount -a
Une fois toutes ces opérations effectuées, vous êtes dans un shell root sur le système auquel vous cherchiez à accéder.
Une fois votre chroot réalisé, vous pouvez donc apporter des modifications sur votre système.
Vous pouvez, par exemple, utiliser les commandes apt
/apt-get
/etc. pour installer des paquets ou en enlever.
Cela permet de pouvoir récupérer un système où suite à une mise à jour des paquets sont cassés et/ou buggés.
Avec la branche sid, il peut arriver à l'occasion (rarement quand même) qu'une mise à jour de paquets casse complètement le système à notre prochain démarrage. Un chroot nous évite alors une réinstallation du système.
Par exemple, vous essayez de mettre à jour le système à opérer, mais cela ne fonctionne pas…
Vous tentez sans succès :
ping www.debian-facile.org
Pourtant “ip a” vous montre que votre carte réseau est en fonction “UP” et vous tentez avec succès :
ping 8.8.8.8
Dans ce cas là, il vous faut copier dans la partition racine du système que l'on est en train d'utiliser le contenue de :
cat /etc/resolv.conf
Et le coller dans “/etc/resolv.conf” (dans le système auquel vous avez accédé via “chroot”) :
nano /etc/resolv.conf
Vous devriez à présent accéder a internet et vraquier a vos occupations !
Pour sortir du chroot, il suffit de taper la commande :
exit
Une fois que vous êtes revenu à la console de base, il vous reste à démonter tous vos montages antérieurs :
umount -R /mnt/plouf
Vous pouvez alors redémarrer votre machine et essayer de redémarrer sur le système qui ne bootait plus précédemment.