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:47]
sefran Mise en forme
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 utilisateurs ou d'​applications) 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 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]]. 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]].
Ligne 24: Ligne 24:
 ===== Changer de système ===== ===== Changer de système =====
  
-Cette technique est le plus souvent utilisée pour récupérer une installation endommagée.+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.
  
 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 52: Ligne 52:
 sudo umount /​media/​system/​run sudo umount /​media/​system/​run
 sudo umount /​media/​system</​code>​ sudo umount /​media/​system</​code>​
 +
 +
 +==== Exemple pratique avec une version 17.10 , 18.04 , 20.04 , 21.04  , 22.04   et 24.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.
 +Les commandes de préparation sont
 +<​code>​setxkbmap fr       ### afin d'​avoir un clavier français.
 +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 tapant la commande
 +<​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. ​
 +<code bash>​cryptsetup luksOpen /dev/xxx chiffre</​code>​
 +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
 +ou
 +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).
 +<​code> ​  mount -t proc  /proc              /mnt/proc
 +   mount -t sysfs /sys               /​mnt/​sys
 +   mount --bind ​  /​dev ​              /​mnt/​dev
 +   mount --bind ​  /​run ​              /​mnt/​run
 +   mount --bind ​  /​sys ​              /​mnt/​sys
 +   mount --bind ​  /​etc/​resolv.conf ​  /​mnt/​etc/​resolv.conf
 +   ​modprobe efivars ​    </​code>  ​
 + Le changement d'​environnement se fera avec cette commande
 +<​code> ​ chroot /​mnt</​code>​
 +Quelques contrôles seront à faire par exemple
 +<​code>​mount -t devpts devpts /​dev/​pts ​
 +df -h && df -i
 +ping -c4 8.8.8.8 ​ && ping -c4 google.fr
 +ls   -ls /home </​code>​
 +Vous pouvez alors passer à la réparation proprement dite qui a justifié cette opération.
 +Espérons simplement que ce message d'​erreur "//​Running in chroot, ignoring request.//"​ n'​empêchera pas votre réparation.
 +Lorsque cela sera fini, le plus simple est de rebooter pour vérifier. La commande suivante s'​occupe de toutes les déconnexions.
 +<​code>​reboot</​code>​
 +
  
 ==== Multi architecture ==== ==== Multi architecture ====
Ligne 80: 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 
 +sudo chroot /​media/​system qemu-i386-static /​bin/​bash</​code>​
  
-=== Convertir un environnement 32 bits en environnement 64 bits ===+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 93: Ligne 133:
  
  
- +==== Pour un ubuntu ​intallé ​dans une partition ​ BTRFS ====
-==== 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. +
-Les commandes de préparation sont +
-<​code>​setxkbmap fr       ### afin d'​avoir un clavier français. +
-sudo -i            ### afin d'​éviter de passer son temps à frapper cette commande</​code>​ +
-L'​identification de la partition système à cibler sera plus aisée en frappant la commande +
-<​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.  +
-<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). +
-<​code>​mount ​  /​dev/​XXXX /mnt   ### Si pas  chiffrée +
-ou +
-mount   /​dev/​mapper/​chiffre /mnt   ### Si   ​chiffrée</​code>​ +
-Le montage des répertoires se fera avec ces commandes (copier/​coller). +
-<​code> ​  mount -t proc  /proc              /mnt/proc +
-   mount -t sysfs /sys               /​mnt/​sys +
-   mount --bind ​  /​dev ​              /​mnt/​dev +
-   mount --bind ​  /​run ​              /​mnt/​run +
-   mount --bind ​  /​sys ​              /​mnt/​sys +
-   mount --bind ​  /​etc/​resolv.conf ​  /​mnt/​etc/​resolv.conf +
-   ​modprobe efivars ​    </​code> ​  +
- Le changement d'​environnement se fera avec cette commande +
-<​code> ​ chroot /​mnt</​code>​ +
-Quelques contrôles seront à faire par exemple +
-<​code>​mount -t devpts devpts /dev/pts  +
-df -h && df -i +
-ping -c4 8.8.8.8 ​ && ping -c4 google.fr +
-ls   -ls /home </​code>​ +
-Vous pouvez alors passer à la réparation proprement dite qui a justifié cette opération. +
-Espérons simplement que ce message d'​erreur "//​Running in chroot, ignoring request.//"​ n'​empêchera pas votre réparation. +
-Lorsque cela sera fini, le plus simple est de rebooter pour vérifier. La commande suivante s'​occupe de toutes les déconnexions. +
-<​code>​reboot</​code>​ +
- +
- +
-==== Pour un ubuntu ​installé ​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à.]] [[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 ===== ===== 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. 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, les conteneurs ou la virtualisation matérielle.+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. Dans cette documentation nous traitons de la mise en place avec chroot.
Ligne 144: Ligne 149:
  
   * [[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.1706215622.txt.gz
  • Dernière modification: Le 25/01/2024, 21:47
  • par sefran