Amorçage, démarrage du système

chroot sous Linux : Explications et exemples

Table des matières

wiki_divers



Introduction



man chroot :
chroot - exécuter une commande ou un shell interactif avec un répertoire racine spécial


Le concept de chroot, qui signifie "change root", est une fonctionnalité dans les systèmes d'exploitation de type Unix, dont Linux. Il permet à un processus de changer son répertoire racine, créant ainsi un environnement isolé et restreint pour son exécution.

On va voir l'utilisation de chroot, son fonctionnement et quelques exemples pratiques pour illustrer son utilité.

Cas d'utilisation



Chroot peut être utilisé dans plusieurs cas :

En tant que bascule d'environnement pour prendre le contrôle d'une installation Linux depuis un autre système. Cela peut se faire depuis le média d"installation d'une distribution linux (live USB), ou depuis un autre système installé en double démarrage.

En tant que prison pour empêcher un utilisateur de remonter dans l'arborescence pour l'emprisonner dans un répertoire spécifique. Cela peut être utilisé avec un serveur FTP pour que les utilisateurs ne remontent pas dans l'arborescence du système.

En tant qu'environnement de développement isolé afin que les développeurs puissent développer avec différentes versions de bibliothèques sans affecter le système global. Ils pourront installer des dépendances spécifiques à un projet sans altérer le système principal.

Fonctionnement de chroot



La commande chroot modifie le répertoire racine pour le processus en cours d'exécution et de ses descendants.
En gros, les processus lancés dedans et ses enfants perçoivent un nouvel environnement racine, isolé du reste du système. Le chemin du nouveau répertoire racine est spécifié en argument de la commande chroot.

La commande chroot s'utilise ainsi :

Code BASH :
chroot /nouvelle/racine /usb/bin/commande_a_lancer


Exemples



chroot d'un système Linux complet



Le prérequis est de démarrer sur un autre système Linux :
- Le média de la même distribution dans le cas d'une réparation
- Depuis un autre système Linux installé en dualboot, c'est aussi possible

On va créer un point de montage dans /mnt/linux par exemple, mais on peut tout à fait créer un point de montage où on veut.

On identifiera avec la commande suivante les partitions et leur taille :
Code BASH :
lsblk


Code BASH :
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
sda      8:0    0   90G  0 disk 
├─sda1   8:1    0   35G  0 part 
├─sda2   8:2    0   53G  0 part 
└─sda3   8:3    0    2G  0 part 


Ici : sda1 est ma racine à 35Go, sda2 est le /home et sda3 est le swap.
Pour plus de détails (systèmes de fichiers, labels, UUID, ...) on peut utiliser :
Code BASH :
lsblk -f



Ensuite, on va monter la racine du système concerné dans la future arborescence :

Dans cet exemple, j'utilise /dev/sda1 qui est la partition racine, évidemment, remplacez en fonction de votre cas.

Code BASH :
mount /dev/sda1 /mnt/linux


Ensuite, montez si vous en avez l'utilité d'autres partitions (/boot ou /home etc ... )

Exemple avec /home en /dev/sda2

Code BASH :
mount /dev/sda2 /mnt/linux/home


Ensuite, il ne faut pas oublier de monter les dossiers spéciaux nécessaires au fonctionnement du système dans le cas d'une réparation de celui-ci :

Code BASH :
mount --bind /dev /mnt/linux/dev
mount -t proc /proc /mnt/linux/proc
mount -t sysfs /sys /mnt/linux/sys


Enfin, basculer vers le nouveau système avec la commande chroot vue précédemment. On va appeler un shell bash dans ce cas :

Code BASH :
chroot /mnt /bin/bash 


Le prompt change alors et vous pouvez maintenant effectuer des opérations comme si vous étiez dans votre système installé directement.
Par exemple : réparer le chargeur d'amorçage, mettre à jour le système, ou réinitialiser des mots de passe.


Quitter le chroot



Pour sortir de l'environnement du chroot, il suffit sumplement de quitter le système chrooté avec la commande

Code BASH :
exit


Puis une fois revenu sur le système live, démonter tous les systèmes de fichiers précédemment montés :

Commencer par les dossiers spéciaux :

Code BASH :
umount /mnt/linux/dev
umount /mnt/linux/proc
umount /mnt/linux/sys


Puis par les partitions additionnelles :

Code BASH :
umount /mnt/linux/home


Et enfin la racine :

Code BASH :
umount /mnt/linux


On pourra tout démonter d'un coup avec l'option -R de la commande umount qui fait les démontages de façon récursive :
Code BASH :
umount -R /mnt/linux


Et voilà !
Quand on redémarrera sur le système que l'on a précédemment chrooté, on verra l'impact des modifications réalisées pendant le chroot.
Cette page a été vue 109078 fois