====== 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