Ceci est une ancienne révision du document !
Table des matières
Chroot
Installation
chroot est installé de base sur la distribution Debian. Il est probable que ça soit le cas pour les autres distributions GNU/Linux majeures.
En revanche, pour installer une Debian dans un chroot, on va installer debootstrap :
# apt search debootstrap debootstrap/stable 1.0.89 all Installation d'un système Debian de base # apt install debootstrap
On crée le dossier qui va accueillir notre nouvelle racine :
root@laptop:/home/simon# mkdir -p chroot/debian-stretch
Et on lance l'installation d'une Debian Stretch dans le dossier qu'on vient de créer :
root@laptop:/home/simon# debootstrap --arch=amd64 --include=locales-all stretch chroot/debian-stretch http://ftp.be.debian.org/debian/ I: Retrieving InRelease I: Retrieving Release I: Retrieving Release.gpg I: Checking Release signature I: Valid Release signature (key id 067E3C456BAE240ACEE88F6FEF0F382A1A7B6500) I: Retrieving Packages I: Validating Packages I: Resolving dependencies of required packages... I: Resolving dependencies of base packages... I: Found additional required dependencies: libaudit-common libaudit1 libbz2-1.0 libcap-ng0 libdb5.3 libdebconfclient0 libgcrypt20 libgpg-error0 liblz4-1 libncursesw5 libsemanage-common libsemanage1 libsystemd0 libudev1 libustr-1.0-1 I: Found additional base dependencies: dmsetup gnupg-agent libapparmor1 libassuan0 libbsd0 libc-l10n libcap2 libcryptsetup4 libdevmapper1.02.1 libdns-export162 libelf1 libfastjson4 libffi6 libgmp10 libgnutls30 libhogweed4 libidn11 libidn2-0 libip4tc0 libip6tc0 libiptc0 libisc-export160 libksba8 liblocale-gettext-perl liblognorm5 libmnl0 libncurses5 libnetfilter-conntrack3 libnettle6 libnfnetlink0 libnpth0 libp11-kit0 libpsl5 libseccomp2 libsqlite3-0 libtasn1-6 libtext-charwidth-perl libtext-iconv-perl libtext-wrapi18n-perl libunistring0 libxtables12 pinentry-curses xxd I: Checking component main on http://ftp.be.debian.org/debian... (...) I: Configuring systemd... I: Base system installed successfully.
Le chroot est maintenant fonctionnel, on peut démarrer bash dedans :
# chroot chroot/debian-stretch /bin/bash
Pour sortir, on peut simplement faire exit :
# exit
Configurations supplémentaires
On crée un script bash pour lancer le chroot tout en montant les dossier sys et proc :
# vim debian-stretch.sh
Contenu :
#!/bin/bash cd /chemin/vers/ma_racine sudo mount --bind /proc proc sudo mount --bind /sys sys sudo chroot . /bin/bash sudo umount sys sudo umount proc
On rend le script exécutable :
# chmod +x debian-stretch.sh
Avant de lancer le script, on peut regarder le contenu du dossier /sys/ sur la racine principale :
root@laptop:/home/simon/chroot# ls /sys/ block bus class dev devices firmware fs hypervisor kernel module power
On peut regarder le contenu du dossier /sys/ sur la racine du chroot, avant d'utiliser le script pour se connecter.
root@laptop:/home/simon/chroot# ls debian-stretch/sys/
Et si on lance notre script, on entre dans la racine du chroot et on peut voir que les dossiers /sys/ et /proc/ sont bien montés :
root@laptop:/home/simon/chroot# ./debian-stretch.sh root@laptop:/# ls /sys/ block bus class dev devices firmware fs hypervisor kernel module power root@laptop:/# ls -l /proc/ total 0 dr-xr-xr-x 9 root root 0 oct 10 07:49 1 dr-xr-xr-x 9 root root 0 oct 11 11:37 10 dr-xr-xr-x 9 root root 0 oct 11 11:37 100 dr-xr-xr-x 9 1000 1000 0 oct 11 11:37 1003 (...)
Problèmes rencontrés
sudo qui ne fonctionne pas
Pour odoo, j'ai installé sudo et à la première utilisation, j'ai eu cette erreur :
$ sudo vim /etc/hostname sudo: pas de tty présent et pas de programme askpass spécifié
Solution (trouvée sur stackoverflow) :
sudo -S true
Sources
- La magie du chroot (artisan.karma-lab.net), un peu ancien mais très détaillé.
