====== chroot ======
* Objet : Utilisation de la commande chroot pour accéder à une installation gnu/linux depuis une autre
* Niveau requis : {{tag>avisé}}
* Commentaires : //Cela peut être très utile si un système ne démarre plus à cause d'un problème de grub, ou de noyau, etc.//
* Suivi :
* Création par [[user>smolski]] le 28/10/2011
* Testé par [[user>bendia]] le 2/05/2015
* Màj par [[user>captnfab]] le 16/01/2021
* Commentaires sur le forum : [[https://debian-facile.org/viewtopic.php?id=10080 | c'est ici]] ((N'hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !))
===== Introduction =====
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.
Attention, si votre système est en 64bits, il faudra démarrer avec un Live en 64bits
===== Deuxième étape: montage, et chroot =====
Voici en détail les opérations à effectuer pour monter et chrooter son système.
==== Identification de la partition à chrooter ====
Il vous faut connaître d'abord ce qu'est un [[doc:systeme:terminal|terminal]] et ce que sont des commandes [[doc:systeme:superutilisateur|user et superutilisateur]] à utiliser dedans.
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.
==== Création d'un répertoire où la partition système sera montée. ====
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
Pour monter un système qui tient sur plusieurs partitions ( généralement une partition système plus une partition contenant le /home partition utilisateur ou dans le cas d'utilisation de plusieurs volumes [[doc:systeme:lvm|LVM]]). Il suffit; après avoir monté la partition principale avec la commande ci dessus; de bien monter la seconde partition au bon endroit. Ex : pour un /home séparé : le monter avec la commande mount dans le dossier /mnt/plouf/**home/** . ( pas simplement /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.
===== Opérations sur votre système =====
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.
==== Exemple détaillé de l'utilisation d'un chroot : réinstaller GRUB 2 ====
* Voir [[:doc:systeme:grub2:reparer|Réparer Grub2]]
==== Vous n'y avez pas accès à internet ? ====
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 !
===== Sortir du chroot =====
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.
===== gimp en chroot =====
* [[http://debian-facile.org/doc:systeme:schroot | Installer une version chrootée de gimp pas à pas]]
===== Liens et remerciement : =====
* http://www.isalo.org/wiki.debian-fr/index.php?title=R%C3%A9installer_Grub2#Solution_avec_un_chroot