| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente |
| schroot [Le 01/06/2011, 14:52] – [Mise en place d'un environnement chroot] 147.171.132.116 | schroot [Le 12/02/2026, 18:46] (Version actuelle) – andykimpe |
|---|
| |
| ===== Mise en place d'un environnement chroot ===== | ===== Mise en place d'un environnement chroot ===== |
| * Création du répertoire :<code>sudo mkdir /chroot</code>N'importe quel répertoire peut faire l'affaire. L'exemple est donné avec **/chroot**, à changer à loisir. | * Création du répertoire :<code>sudo mkdir /chroot</code>N'importe quel répertoire peut faire l'affaire. L'exemple est donné avec le dossier **/chroot**, à changer à loisir. |
| |
| * Installation d'une distribution (Ubuntu). Pour cela, on récupérera l'ensemble des paquets. Pour du 64 bits :<code>sudo debootstrap --arch amd64 lucid /chroot/lucid http://us.archive.ubuntu.com/ubuntu/</code>Ou bien, pour installer l'environnement en 32 bits :<code>sudo debootstrap --arch i386 lucid /chroot/lucid http://us.archive.ubuntu.com/ubuntu/</code> | * Installation d'une distribution (Ubuntu). Pour cela, on récupérera l'ensemble des paquets. Pour du 64 bits :<code>sudo debootstrap --arch amd64 noble /chroot/noble http://fr.archive.ubuntu.com/ubuntu/</code>Ou bien, pour installer l'environnement en 32 bits Debian 12 dernier OS 32 bits :<code>sudo debootstrap --arch i386 bookworm /chroot/bookworm http://ftp.fr.debian.org/debian</code>Après cela, le dossier **/chroot/noble/** contient l'arborescence habituelle de la racine de la distribution Ubuntu Noble 24.04 LTS ou dossier /chroot/bookworm debian 12 stable 32 bits. |
| |
| * Pour conserver les logins utilisateurs, mots de passe, groupes etc :<code> | * Pour conserver les logins utilisateurs, mots de passe, groupes etc du système hôte, ajouter ces lignes au fichier /etc/schroot/default/copyfiles :<code> |
| sudo cp /etc/passwd /etc/shadow /etc/group /etc/sudoers /etc/hosts /etc/hostname /chroot/lucid/etc/ | /etc/passwd |
| | /etc/shadow |
| | /etc/group |
| | /etc/sudoers |
| | /etc/hosts |
| | /etc/hostname |
| | </code>Pour conserver les dépôts de paquets (NE PAS FAIRE lorsque les distributions sont différentes...), ajouter cette ligne:<code> |
| | /etc/apt/sources.list |
| </code> | </code> |
| | |
| |
| * [[:tutoriel:comment_modifier_un_fichier|Configuration du fichier]] **/etc/schroot/schroot.conf**<file> | * [[:tutoriel:comment_modifier_un_fichier|Configuration du fichier]] **/etc/schroot/schroot.conf**<file> |
| [lucid] | [noble] |
| description=lucid | description=noble |
| directory=/chroot/lucid | directory=/chroot/noble |
| | users=user1,user2,... |
| root-groups=root | root-groups=root |
| root-users=root | root-users=root |
| type=directory | type=directory |
| </file> | aliases=default |
| ===== Gestion du chroot ===== | </file>Et remplacer "user1", "user2" par les utilisateurs ayant le droit d'utiliser le chroot. La ligne peut être remplacée par "groups=schroot" par exemple, en ajoutant les utilisateurs au groupe "schroot". |
| * Pour se connecter dans un environnement chroot et avoir la main en ligne de commande :<code>schroot</code> ou bien, si plusieurs environnements chroot sont installés :<code>schroot -c lucid</code>Pour quitter l'environnement, utiliser les touches Ctrl+d. | ===== Utilisation courante ===== |
| | * Pour se connecter dans un environnement chroot et avoir la main en ligne de commande :<code>schroot</code> ou bien, si plusieurs environnements chroot sont installés :<code>schroot -c lucid</code>Pour quitter l'environnement, utiliser les touches **Ctrl+d** ou bien la commande **exit**. |
| |
| * Démarrer un environnement chroot :<code>schroot -b -c lucid</code>Lors du démarrage du chroot, schroot nous donne l'identifiant du chroot, par exemple **lucid-00e8c158-e183-48ad-8407-272808c6b0c6** | * Démarrer un environnement chroot :<code>schroot -b -c lucid</code>Lors du démarrage du chroot, schroot nous donne l'identifiant du chroot, par exemple **lucid-00e8c158-e183-48ad-8407-272808c6b0c6** |
| * Stopper le chroot :<code>schroot -e -c lucid-00e8c158-e183-48ad-8407-272808c6b0c6</code> | * Stopper le chroot :<code>schroot -e -c lucid-00e8c158-e183-48ad-8407-272808c6b0c6</code> |
| |
| ===== Exemple d'utilisation ===== | ===== Exemple d'utilisation avancée ===== |
| |
| Nous allons installer un serveur [[LAMP|LAMP]] dans un environnement chroot. Le système exploitation hôte sera une distribution ubuntu. Par contre le système invité sera une distribution debian. | Nous allons installer un serveur [[LAMP|LAMP]] dans un environnement chroot. Le système exploitation hôte sera une distribution ubuntu. Par contre le système invité sera une distribution Debian. |
| |
| ==== Configuration de schroot ==== | ==== Configuration de schroot ==== |
| </file> | </file> |
| |
| * On crée le fichier script-squeeze qui a la même structure et que se trouve dans répertoire que script-defaults | * On crée le fichier script-squeeze qui a la même structure et qui se trouve dans répertoire que script-defaults |
| |
| touch /etc/schroot/script-squeeze | touch /etc/schroot/script-squeeze |
| cp /etc/schroot/mount-defaults /etc/schroot/mount-squeeze | cp /etc/schroot/mount-defaults /etc/schroot/mount-squeeze |
| |
| * On comment les lignes dont le montage ne doit pas s'effectuer | * On commente les lignes dont le montage ne doit pas s'effectuer |
| <file> | <file> |
| # mount.defaults: static file system information for chroots. | # mount.defaults: static file system information for chroots. |
| === Démarrage automatique du serveur lamp === | === Démarrage automatique du serveur lamp === |
| |
| Pour démarrer de façon automatique la chroot et tout les services que vous désiré, je vous propose ce script : | Pour démarrer de façon automatique la chroot et tout les services que vous désirez, je vous propose ce script : |
| <code bash> | <code bash> |
| #!/bin/bash | #!/bin/bash |
| SCHROOT_ID=$(schroot -b -c lenny) | SCHROOT_ID=$(schroot -b -c lenny) |
| |
| schroot -r -c $SCHROOT_ID /etc/init.d/mtab.sh | schroot -r -c "$SCHROOT_ID" /etc/init.d/mtab.sh |
| schroot -r -c $SCHROOT_ID /etc/init.d/mysql start | schroot -r -c "$SCHROOT_ID" /etc/init.d/mysql start |
| schroot -r -c $SCHROOT_ID /etc/init.d/apache2 start | schroot -r -c "$SCHROOT_ID" /etc/init.d/apache2 start |
| schroot -r -c $SCHROOT_ID /etc/init.d/exim4 start | schroot -r -c "$SCHROOT_ID" /etc/init.d/exim4 start |
| |
| mkdir /tmp/schroot/ | mkdir /tmp/schroot/ |
| echo $SCHROOT_ID > /tmp/schroot/$NAMESCRIPT | echo "$SCHROOT_ID" > /tmp/schroot/$NAMESCRIPT |
| |
| elif [ -e "/tmp/schroot/$NAMESCRIPT" ]; then | elif [ -e "/tmp/schroot/$NAMESCRIPT" ]; then |
| if [ -e "/tmp/schroot/$NAMESCRIPT" ]; then | if [ -e "/tmp/schroot/$NAMESCRIPT" ]; then |
| SCHROOT_ID=$(cat /tmp/schroot/$NAMESCRIPT) | SCHROOT_ID=$(cat /tmp/schroot/$NAMESCRIPT) |
| schroot -r -c $SCHROOT_ID /etc/init.d/mysql stop | schroot -r -c "$SCHROOT_ID" /etc/init.d/mysql stop |
| schroot -r -c $SCHROOT_ID /etc/init.d/apache2 stop | schroot -r -c "$SCHROOT_ID" /etc/init.d/apache2 stop |
| schroot -r -c $SCHROOT_ID /etc/init.d/exim4 stop | schroot -r -c "$SCHROOT_ID" /etc/init.d/exim4 stop |
| schroot -e -c $SCHROOT_ID | schroot -e -c "$SCHROOT_ID" |
| |
| rm -R /tmp/schroot/ | rm -R /tmp/schroot/ |
| ===== Voir aussi ===== | ===== Voir aussi ===== |
| * [[chroot|chroot]] | * [[chroot|chroot]] |
| * **(fr)** [[http://ftp.traduc.org/doc-vf/gazette-linux/html/2008/150/lg150-C.html|Virtualiser sans virtualiser]], article sur l'usage de chroot et schroot | * **(fr)** [[https://ftp.traduc.org/doc-vf/gazette-linux/html/2008/150/lg150-C.html|Virtualiser sans virtualiser]], article sur l'usage de chroot et schroot |
| * **(fr)** [[http://cepcasa.info/apt/debootstrap.html|Installer Debian depuis une distribution Debian avec debootstrap]] | * **(fr)** [[http://cepcasa.info/apt/debootstrap.html|Installer Debian depuis une distribution Debian avec debootstrap]] |
| * **(en)** [[http://www.debian-administration.org/articles/566|schroot - chroot for any users]] | * **(en)** [[http://www.debian-administration.org/articles/566|schroot - chroot for any users]] |