Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
| schroot [Le 01/06/2011, 14:36] – [Mise place d'un environnement chroot] 147.171.132.116 | schroot [Le 12/02/2016, 11:35] (Version actuelle) – [Configuration de schroot] 82.240.126.100 | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| + | {{tag> | ||
| + | ---- | ||
| + | ====== schroot ====== | ||
| + | **schroot** permet de gérer plus efficacement un environnement [[wpfr> | ||
| + | |||
| + | En terme de sécurité, schroot est moins robuste que les solutions de [[virtualisation]] régulières. | ||
| + | |||
| + | |||
| + | ===== Pré-requis ===== | ||
| + | |||
| + | * Disposer des [[: | ||
| + | * Disposer d'une connexion à Internet configurée et activée. | ||
| + | |||
| + | ===== Installation ===== | ||
| + | |||
| + | Il suffit d' | ||
| + | |||
| + | ===== L' | ||
| + | |||
| + | Voici un petit descriptif de l' | ||
| + | |||
| + | * **chroot.d** : On peut placer des fichiers de configuration supplémentaires dans ce répertoire qui seront lus de la même manière que schroot.conf | ||
| + | * **copyfiles-defaults** : Les fichiers à copier à partir du système hôte dans l' | ||
| + | * **mount-defaults** : Les systèmes de fichiers à monter à l' | ||
| + | * **nssdatabases-defaults** : Système de base de données NSS à copier dans le chroot. | ||
| + | * **schroot.conf** : Définit chaque chroot à mettre en place | ||
| + | * **script-defaults** : Script à exécuter par défaut lors du démarrage de l' | ||
| + | * **setup.d** : Dossier qui possède des scripts de configuration | ||
| + | | ||
| + | |||
| + | ===== Mise en place d'un environnement chroot ===== | ||
| + | * Création du répertoire :< | ||
| + | |||
| + | * Installation d'une distribution (Ubuntu). Pour cela, on récupérera l' | ||
| + | |||
| + | * Pour conserver les logins utilisateurs, | ||
| + | /etc/passwd | ||
| + | /etc/shadow | ||
| + | /etc/group | ||
| + | / | ||
| + | /etc/hosts | ||
| + | / | ||
| + | </ | ||
| + | / | ||
| + | </ | ||
| + | |||
| + | |||
| + | * [[: | ||
| + | [quantal] | ||
| + | description=quantal | ||
| + | directory=/ | ||
| + | users=user1, | ||
| + | root-groups=root | ||
| + | root-users=root | ||
| + | type=directory | ||
| + | aliases=default | ||
| + | </ | ||
| + | ===== Utilisation courante ===== | ||
| + | * Pour se connecter dans un environnement chroot et avoir la main en ligne de commande :< | ||
| + | |||
| + | * Démarrer un environnement chroot :< | ||
| + | |||
| + | * S' | ||
| + | |||
| + | * Stopper le chroot :< | ||
| + | |||
| + | ===== Exemple d' | ||
| + | |||
| + | 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 ==== | ||
| + | |||
| + | |||
| + | * Installation d'une distribution Debian. Pour cela, on récupérera l' | ||
| + | |||
| + | debootstrap --arch amd64 squeeze / | ||
| + | |||
| + | * [[: | ||
| + | < | ||
| + | [squeeze] | ||
| + | description=squeeze | ||
| + | directory=/ | ||
| + | root-groups=root | ||
| + | root-users=root | ||
| + | type=directory | ||
| + | script-config=script-squeeze | ||
| + | </ | ||
| + | |||
| + | * On crée le fichier script-squeeze qui a la même structure et qui se trouve dans répertoire que script-defaults | ||
| + | |||
| + | touch / | ||
| + | |||
| + | * Puis, on édite le fichier **/ | ||
| + | < | ||
| + | # Default settings for chroot setup and exec scripts. | ||
| + | # See schroot-script-config(5) for further details. | ||
| + | |||
| + | # Filesystems to mount inside the chroot. | ||
| + | FSTAB="/ | ||
| + | </ | ||
| + | * On copie le fichier / | ||
| + | |||
| + | cp / | ||
| + | |||
| + | * On commente les lignes dont le montage ne doit pas s' | ||
| + | < | ||
| + | # mount.defaults: | ||
| + | # Note that the mount point will be prefixed by the chroot path | ||
| + | # (CHROOT_PATH) | ||
| + | # | ||
| + | # <file system> <mount point> | ||
| + | proc /proc | ||
| + | # | ||
| + | /dev /dev none rw, | ||
| + | / | ||
| + | / | ||
| + | #/ | ||
| + | #/tmp / | ||
| + | </ | ||
| + | | ||
| + | ==== Installation du serveur LAMP ==== | ||
| + | |||
| + | === Installation === | ||
| + | |||
| + | sudo -s | ||
| + | schroot -b -c lenny | ||
| + | schroot -r -c lenny-00e8c158-e183-48ad-8407-272808c6b0c6 | ||
| + | apt-get install apache2 mysql-server php5 | ||
| + | |||
| + | === Démarrage automatique du serveur lamp === | ||
| + | |||
| + | Pour démarrer de façon automatique la chroot et tout les services que vous désirez, je vous propose ce script : | ||
| + | <code bash> | ||
| + | #!/bin/bash | ||
| + | |||
| + | # | ||
| + | # File : / | ||
| + | # | ||
| + | # Auteur : Zarkxe | ||
| + | # | ||
| + | # Date create : Mon Nov 1 16:01:09 2010 | ||
| + | # Description : démarrer de façon automatique la chroot et tout les services | ||
| + | # que vous désiré | ||
| + | # | ||
| + | |||
| + | . / | ||
| + | |||
| + | NAMESCRIPT=" | ||
| + | |||
| + | do_start() { | ||
| + | |||
| + | if [ ! -e "/ | ||
| + | |||
| + | SCHROOT_ID=$(schroot -b -c lenny) | ||
| + | |||
| + | schroot -r -c $SCHROOT_ID / | ||
| + | schroot -r -c $SCHROOT_ID / | ||
| + | schroot -r -c $SCHROOT_ID / | ||
| + | schroot -r -c $SCHROOT_ID / | ||
| + | |||
| + | mkdir / | ||
| + | echo $SCHROOT_ID > / | ||
| + | |||
| + | elif [ -e "/ | ||
| + | echo " | ||
| + | fi | ||
| + | } | ||
| + | |||
| + | do_stop() { | ||
| + | |||
| + | if [ -e "/ | ||
| + | SCHROOT_ID=$(cat / | ||
| + | schroot -r -c $SCHROOT_ID / | ||
| + | schroot -r -c $SCHROOT_ID / | ||
| + | schroot -r -c $SCHROOT_ID / | ||
| + | schroot -e -c $SCHROOT_ID | ||
| + | |||
| + | rm -R / | ||
| + | elif [ ! -e "/ | ||
| + | echo " | ||
| + | fi | ||
| + | } | ||
| + | |||
| + | case $1 in | ||
| + | | ||
| + | log_daemon_msg " | ||
| + | if [[ $EUID = 0 ]] | ||
| + | then | ||
| + | do_start | ||
| + | log_end_msg 0 | ||
| + | else | ||
| + | log_end_msg 1 | ||
| + | echo "You are not root !" | ||
| + | |||
| + | fi | ||
| + | ;; | ||
| + | stop) | ||
| + | log_daemon_msg | ||
| + | if [[ $EUID = 0 ]] | ||
| + | then | ||
| + | do_stop | ||
| + | log_end_msg 0 | ||
| + | else | ||
| + | log_end_msg 1 | ||
| + | echo "You are not root !" | ||
| + | fi | ||
| + | ;; | ||
| + | | ||
| + | log_daemon_msg | ||
| + | if [[ $EUID = 0 ]] | ||
| + | then | ||
| + | do_stop | ||
| + | do_start | ||
| + | log_end_msg 0 | ||
| + | else | ||
| + | log_end_msg 1 | ||
| + | echo "You are not root !" | ||
| + | fi | ||
| + | ;; | ||
| + | | ||
| + | if [[ $EUID = 0 ]] | ||
| + | then | ||
| + | if [ ! -e "/ | ||
| + | echo " | ||
| + | elif [ -e "/ | ||
| + | SCHROOT_ID=$(cat / | ||
| + | echo " | ||
| + | fi | ||
| + | else | ||
| + | echo "You are not root !" | ||
| + | fi | ||
| + | ;; | ||
| + | *) | ||
| + | log_daemon_msg | ||
| + | ;; | ||
| + | esac | ||
| + | </ | ||
| + | |||
| + | ===== Voir aussi ===== | ||
| + | * [[chroot|chroot]] | ||
| + | * **(fr)** [[http:// | ||
| + | * **(fr)** [[http:// | ||
| + | * **(en)** [[http:// | ||
| + | |||
| + | ---- | ||
| + | // | ||
