Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
chroot [Le 25/01/2024, 21:02]
sefran Correction formulation
chroot [Le 24/07/2024, 15:59] (Version actuelle)
193.57.110.2 [Exemple pratique avec une version 17.10 , 18.04 , 20.04 , 21.04 , 22.04 et 24.04]
Ligne 6: Ligne 6:
 Linux est le logiciel système d'​exploitation qui est une sorte de proxy (interface) entre l'​utilisateur et le matériel. Ce système logiciel d'​interface matériels est alors actif dans un environnement d'​exécution à la fin du lancement du système d'​exploitation (processus init). Linux est le logiciel système d'​exploitation qui est une sorte de proxy (interface) entre l'​utilisateur et le matériel. Ce système logiciel d'​interface matériels est alors actif dans un environnement d'​exécution à la fin du lancement du système d'​exploitation (processus init).
  
-Pour cela il exécute un logiciel d''​interface utilisateurs,​ un «[[shell|shell]]»,​ l'​environnement qui va gérer les interactions utilisateur avec le système d'​exploitation. Cet environnement contient des [[variables_d_environnement|variables paramètres]]+Il exécute ​alors un logiciel d'​interface utilisateurs,​ un «[[shell|shell]]»,​ l'​environnement qui va gérer les interactions utilisateur avec le système d'​exploitation. Cet environnement contient des [[variables_d_environnement|variables paramètres]]
 <​code>​printenv</​code>​ <​code>​printenv</​code>​
-une arborescence et les ressources ​matérielles et logicielles du système d'​exploitation.+une arborescence et les ressources logicielles ​de contrôle du matériel ​du système d'​exploitation.
  
 Ce shell peut-être en ligne de commandes ou graphique. Ce shell peut-être en ligne de commandes ou graphique.
  
-La commande **chroot** permet de changer le répertoire racine (premier environnement d'​exécution) vers un nouvel environnement d'​exécution ​utilisateurs.+La commande **chroot** permet de changer le répertoire racine (premier environnement d'​exécution ​shell utilisateurs ou d'​applications) vers un nouvel environnement d'​exécution.
  
-<​code>​chroot arborescence shell</​code>​+<​code>​chroot arborescence shell/​application</​code>​
  
 Cette opération peut être utilisée dans divers cas : Cette opération peut être utilisée dans divers cas :
   * prison : empêche un utilisateur ou un programme de remonter dans l'​arborescence et le cantonne à une nouvelle arborescence restreinte.   * prison : empêche un utilisateur ou un programme de remonter dans l'​arborescence et le cantonne à une nouvelle arborescence restreinte.
-  * changement ​d'​environnement ​: permet de basculer vers un autre système linux (autre architecture,​ autre distribution,​ autre version). Nous détaillerons ici cette technique.+  * changement ​de système ​: permet de basculer vers un autre système linux (autre architecture,​ autre distribution,​ autre version). Nous détaillerons ici cette technique.
  
-Le concept d'​environnement ​c'est étendu aux ressources du système d'​exploitation avec la notion de conteneurs comme [[lxc|lxc]],​ [[docker|docker]],​ et au matériel avec la [[virtualisation|virtualisation]] ou les proxy matériels pur, les XénoServeur,​ comme [[xen|xen]]. +Le concept ​de chroot, de changements ou d'​isolation ​d'​environnement ​système utilisateurs (ou d'​exécution d'​applications),​ s'est étendu aux ressources du système d'​exploitation avec la notion de conteneurs comme [[lxc|lxc]],​ [[docker|docker]] ​(sans changement du logiciel système d'​exploitation), et aux systèmes d'​exploitation ​au niveau du matériel avec la [[virtualisation|virtualisation]] ou les proxy matériels pur, les XénoServeur,​ comme [[xen|xen]].
-===== Utilisation =====+
  
 +===== Changer de système =====
  
- +Cette technique est le plus souvent utilisée pour récupérer une installation endommagée ​ou pour installer un nouveau système d'​exploitation.
- +
- +
-==== Changer de système ==== +
- +
-Cette technique est le plus souvent utilisée pour récupérer une installation endommagée.+
  
 Ici le chroot sera utilisé après le démarrage sur un système sain pour se retrouver dans l'​environnement endommagé et faire des modifications directement dans ce dernier environnement. Ici le chroot sera utilisé après le démarrage sur un système sain pour se retrouver dans l'​environnement endommagé et faire des modifications directement dans ce dernier environnement.
Ligne 49: Ligne 44:
  
 Maintenant vous êtes sur l'​installation endommagée et vous pouvez travailler dessus pour y corriger les problèmes. Maintenant vous êtes sur l'​installation endommagée et vous pouvez travailler dessus pour y corriger les problèmes.
- 
  
 Pour quitter l'​environnement,​ il suffit d'un : <​code>​exit</​code>​ Pour quitter l'​environnement,​ il suffit d'un : <​code>​exit</​code>​
Ligne 59: Ligne 53:
 sudo umount /​media/​system</​code>​ sudo umount /​media/​system</​code>​
  
-=== Multi architecture === 
  
-Vous pouvez aussi vouloir démarrer [[https://​wiki.debian.org/​RaspberryPi/​qemu-user-static|en chroot un système Linux d'une autre architecture matérielle]]. +==== Exemple pratique avec une version 17.10 , 18.04 , 20.04 , 21.04  ​, 22.04   et 24.04 ====
- +
-Pour cela il vous faut installer [[apt>​binfmt-support]] et [[apt>​qemu-user-static]]. +
- +
-Vous pouvez alors lister les architectures matérielles supportées : +
-<​code>​ls /​usr/​bin/​qemu-*-static</​code>​ +
- +
-Pour démarrer le chroot en arm 64 bit par exemple, et après avoir monter tout ce que vous avez besoin pour fonctionner en chroot dans /​media/​system : +
-<​code>​cp /​usr/​bin/​qemu-aarch64-static /​media/​system/​usr/​bin +
-sudo chroot /​media/​system qemu-aarch64-static /​bin/​bash</​code>​ +
- +
-Vous pouvez aussi utiliser des commande comme [[proot|proot]] pour passer des commandes en chroot. +
- +
-<​code>​proot -S /​chemin/​répertoire_monté/​ -q qemu-architecture-static commande_bash</​code>​ +
-<​code>​proot -S /​media/​system/​ -q qemu-aarch64-static arch</​code>​ +
-<​code>​proot -S /​media/​system/​ -q qemu-aarch64-static bash -c "if ping -c 1 doc.ubuntu-fr.org &> /dev/null; then echo '​Réseau OK'; else exit 1; fi"</​code>​ +
-==== Exemple pratique avec une version 17.10 , 18.04 , 20.04 , 21.04  et 22.04====+
 Le plus souvent, cette utilisation est faite à partir d'une clé USB d'​installation d'​Ubuntu. ​ Ceci est  un cas pratique fait en EFI sur partition ​ système non chiffrée. Le plus souvent, cette utilisation est faite à partir d'une clé USB d'​installation d'​Ubuntu. ​ Ceci est  un cas pratique fait en EFI sur partition ​ système non chiffrée.
 Les commandes de préparation sont Les commandes de préparation sont
 <​code>​setxkbmap fr       ### afin d'​avoir un clavier français. <​code>​setxkbmap fr       ### afin d'​avoir un clavier français.
-sudo -i            ### afin d'​éviter de passer son temps à frapper ​cette commande</​code>​ +sudo -i            ### afin d'​éviter de passer son temps à taper cette commande</​code>​ 
-L'​identification de la partition système à cibler sera plus aisée en frappant ​la commande+L'​identification de la partition système à cibler sera plus aisée en tapant ​la commande
 <​code>​lsblk -fe7</​code>​ <​code>​lsblk -fe7</​code>​
 Si cette commande ​ montre que ubuntu est installé dans une partition chiffrée, il est nécessaire de l'​ouvrir pour y avoir accès. ​ Si cette commande ​ montre que ubuntu est installé dans une partition chiffrée, il est nécessaire de l'​ouvrir pour y avoir accès. ​
 <code bash>​cryptsetup luksOpen /dev/xxx chiffre</​code>​ <code bash>​cryptsetup luksOpen /dev/xxx chiffre</​code>​
-Le montage de la partition système à cibler se fera  en frappant ​la commande (pensez à remplacer XXXX par la bonne valeur).+Le montage de la partition système à cibler se fera  en tapant ​la commande (pensez à remplacer XXXX par la bonne valeur).
 <​code>​mount ​  /​dev/​XXXX /mnt   ### Si pas  chiffrée <​code>​mount ​  /​dev/​XXXX /mnt   ### Si pas  chiffrée
 ou ou
-mount   /​dev/​mapper/​chiffre /mnt   ### Si   ​chiffrée</​code>​+mount   /​dev/​mapper/​chiffre /mnt   ### Si   ​chiffrée 
 +ou 
 +zpool import -a -f -l -R /mnt  ### Si partition zfs standard</​code>​
 Le montage des répertoires se fera avec ces commandes (copier/​coller). Le montage des répertoires se fera avec ces commandes (copier/​coller).
 <​code> ​  mount -t proc  /proc              /mnt/proc <​code> ​  mount -t proc  /proc              /mnt/proc
Ligne 111: Ligne 90:
  
  
 +==== Multi architecture ====
  
-==== Pour un ubuntu installé dans une partition ​ BTRFS====+Vous pouvez aussi vouloir démarrer [[https://​wiki.debian.org/​RaspberryPi/​qemu-user-static|en chroot ​un système Linux d'une autre architecture matérielle]].
  
-[[https://forum.ubuntu-fr.org/viewtopic.php?​pid=22031607#​p22031607|c'​est là]] ou [[:​timeshift#​restauration_depuis_une_autre_instance|là.]]+Pour cela il vous faut installer ​[[apt>​binfmt-support]] et [[apt>​qemu-user-static]]. 
 + 
 +Vous pouvez alors lister les architectures matérielles supportées ​: 
 +<​code>​ls ​/usr/bin/qemu-*-static<​/code> 
 +ou plus verbeux : 
 +<​code>​sudo update-binfmts --display</​code>​ 
 + 
 +Pour démarrer le chroot en arm 64 bit par exemple, et après avoir monter tout ce que vous avez besoin pour fonctionner en chroot dans /​media/​system : 
 +<​code>​cp /​usr/​bin/​qemu-aarch64-static /​media/​system/​usr/​bin 
 +sudo chroot /​media/​system qemu-aarch64-static /​bin/​bash</​code>​ 
 + 
 +Vous pouvez aussi utiliser des commande comme [[proot|proot]] pour passer des commandes en chroot. 
 + 
 +<​code>​proot -S /​chemin/​répertoire_monté/​ -q qemu-architecture-static commande_bash</​code>​ 
 +<​code>​proot -S /​media/​system/​ -q qemu-aarch64-static arch</​code>​ 
 +<​code>​proot -S /​media/​system/​ -q qemu-aarch64-static bash -c "if ping -c 1 doc.ubuntu-fr.org &> /dev/null; then echo '​Réseau OK'; else exit 1; fi"</​code>​
  
-==== Utiliser un environnement 32 bits sur une installation 64 bits ====+=== Utiliser un environnement 32 bits sur une installation 64 bits ===
  
 Cette option devient de plus en plus désuète puisque la plupart des machines sont maintenant en 64 bits. Cette option devient de plus en plus désuète puisque la plupart des machines sont maintenant en 64 bits.
Ligne 122: Ligne 117:
 CD Live 32bit pour une installation système 32bits et de même pour 64bits. CD Live 32bit pour une installation système 32bits et de même pour 64bits.
  
-Sinon, voir le tutoriel [[tutoriel:​chroot32bits]] +<​code>​cp /​usr/​bin/​qemu-i386-static /​path/​folder_system_32bit/​usr/​bin 
-==== Convertir un environnement 32 bits en  environnement 64 bits ====+sudo chroot /​media/​system qemu-i386-static /​bin/​bash</​code>​ 
 + 
 +Voir le tutoriel [[tutoriel:​chroot32bits]] ​pour approfondir. 
 + 
 +== Convertir un environnement 32 bits en environnement 64 bits ==
 Il faut d'​abord ​ faire la fonctionnalité "​chroot"​ telle que décrite ci-dessus. Il faut d'​abord ​ faire la fonctionnalité "​chroot"​ telle que décrite ci-dessus.
  
Ligne 132: Ligne 131:
 apt-get update apt-get update
 apt-get install linux-image-amd64:​amd64 </​code>​ apt-get install linux-image-amd64:​amd64 </​code>​
 +
 +
 +==== Pour un ubuntu intallé dans une partition ​ BTRFS ====
 +
 +[[https://​forum.ubuntu-fr.org/​viewtopic.php?​pid=22031607#​p22031607|c'​est là]] ou [[:​timeshift#​restauration_depuis_une_autre_instance|là.]]
 +ou aussi [[https://​forum.ubuntu-fr.org/​viewtopic.php?​pid=22771420#​p22771420|là]] et en [[https://​forum.endeavouros.com/​t/​chroot-into-a-btrfs-uefi-system-from-live-media/​15986|anglais.]]
 +===== Isolation d'​applications =====
 +
 +C'est une action logicielle qui consiste à protéger l'​environnement système des faiblesses de sécurités d'une application.
 +Pour cela on peut utiliser chroot, [[https://​doc.ubuntu-fr.org/​virtualisation|les conteneurs ou la virtualisation matérielle]].
 +
 +Dans cette documentation nous traitons de la mise en place avec chroot.
 +
 +<note tip>À faire [[https://​www.vincentliefooghe.net/​content/​mise-place-dun-serveur-ftp-cloisonn%C3%A9|Lien externe]]</​note>​
  
 ===== Liens ===== ===== Liens =====
  
   * [[schroot|schroot]]   * [[schroot|schroot]]
 +  * [[fakeroot|fakeroot]] [[https://​www.thegeekdiary.com/​fakeroot-command-examples-in-linux/​|Lien externe EN]]
   * [[https://​linuxfr.org/​news/​care-et-la-reproductibilite-des-executions|care]]   * [[https://​linuxfr.org/​news/​care-et-la-reproductibilite-des-executions|care]]
   * [[https://​linuxfr.org/​tags/​cde/​public|cde]]   * [[https://​linuxfr.org/​tags/​cde/​public|cde]]
  • chroot.1706212970.txt.gz
  • Dernière modification: Le 25/01/2024, 21:02
  • par sefran