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:50] – [Gestion du 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:// | ||
+ | |||
+ | ---- | ||
+ | // |