Chroot environment
Ce document décrit les étapes à réaliser pour créer un environnement chrooté, afin de changer la racine du système pour travailler. Cela permet de compiler, tester et développer SliTaz sans risques pour le système hôte depuis lequel on travaille. Ce système hôte peut être SliTaz installée en dur ou tout autre système GNU/Linux tel que Debian, Fedora, PCLinuxOS, etc. On peut aussi créer un environnement chrooté en mode LiveCD associé à un media USB. Les seuls prérequis sont d'avoir une image ISO de SliTaz à disposition et un peu de temps. A noter que toutes les opérations sont réalisées en tant qu'administrateur (root).
Préparer l'environnement
Pour commencer, il faut extraire le contenu de l'image ISO dans le répertoire
qui va servir au chroot. Le répertoire de chroot peut se créer à l'endroit que
l'on veut, nous utilisons un répertoire /home/slitaz/chroot-env
.
Pour extraire le contenu d'une image ISO, il faut la monter en loop
sur un répertoire, pour ensuite copier le système de fichiers racine
compressé (rootfs.gz
) dans le répertoire de chroot. En
supposant que l'ISO est dans le répertoire courant :
# mkdir /tmp/loop # mount -o loop slitaz-cooking.iso /tmp/loop # mkdir -p /home/slitaz/chroot-env # cp /tmp/loop/boot/rootfs.gz \ /home/slitaz/chroot-env # umount /tmp/loop
Maintenant qu'on a une copie du système de fichiers compressé, il faut le
décompresser et le désarchiver (c'est une archive cpio
compressée
avec lzma ou gzip). Pour finir cette étape de préparation et continuer, on
peut retirer le rootfs
qui n'est plus utilisé :
# cd /home/slitaz/chroot-env # (zcat rootfs.gz 2>/dev/null || lzma d rootfs.gz -so) | cpio -id # rm rootfs rootfs.gz
Si le désarchivage du rootfs compressé avec LZMA échoue en utilisant la première méthode vous pouvez utiliser:
# unlzma rootfs.gz -S .gz # cat rootfs | cpio -id
Utiliser l'environnement
Pour utiliser l'environnemnt chrooté, il suffit de monter quelques systèmes
de fichier virtuels et d'utiliser la commande chroot
. Pour se
simplifier la vie on peut rapidement créer un petit script automatisant
le chroot. Exemple en utilisant le répertoire de chroot
/home/slitaz/chroot-env
et en créant un script nommé
chroot_in_env.sh
dans /home/slitaz
. A noter que
le contenu du script n'a pas besoin d'être tapé mais simplement copié/coller
dans le terminal et que sur un autre système que SliTaz vous pouvez
décommenter les lignes montant/démontant /dev
et
/tmp
:
# cat > /home/slitaz/chroot_in_env.sh << "EOF"
#!/bin/sh # Chroot in SliTaz to hack. # ROOTFS="/home/slitaz/chroot-env" # Mount virtual Kernel file systems and chroot. # #mount --bind /dev $ROOTFS/dev #mount --bind /tmp $ROOTFS/tmp mount -t proc proc $ROOTFS/proc mount -t sysfs sysfs $ROOTFS/sys mount -t devpts devpts $ROOTFS/dev/pts mount -t tmpfs shm $ROOTFS/dev/shm echo "Chrooting in $ROOTFS... " chroot $ROOTFS /bin/sh --login # Unmount virtual Kernel file systems on exit. # umount $ROOTFS/dev/shm umount $ROOTFS/dev/pts umount $ROOTFS/sys umount $ROOTFS/proc #umount $ROOTFS/tmp #umount $ROOTFS/dev echo "Exiting of $ROOTFS chroot environment... " EOF
Pour finir et tester l'environnement, il suffit de rendre le script exécutable et le lancer :
# chmod +x /home/slitaz/chroot_in_env.sh # sh /home/slitaz/chroot_in_env.sh
Activer le réseau
Pour avoir le réseau afin de télécharger, naviguer en mode texte et installer
des paquets de développement, il suffit de lancer le client DHCP sur la bonne
interface, exemple avec eth1
:
/# udhcpc -i eth1
Installer des paquets
Si le réseau est fonctionnel, il suffit de recharger la liste des paquets et
utiliser tazpkg get-install
pour installer de nouveaux paquets.
Si la connexion n'est pas possible, on peut télécharger les paquets du miroir
depuis un autre système, les copier dans l'environnement chrooté et les
installer via la commande tazpkg install
. Pour installer la base
des outils de compilation :
/# tazpkg recharge /# tazpkg get-install slitaz-toolchain
Une fois l'environnement configuré, on peut complier des applications depuis les sources pour en créer des paquets, tester des scripts et autre. Le chapitre développement du Handbook et le Cookbook devraient aider à aller plus loin.
Sortir de l'environnement
Pour sortir de l'environnement chrooté il suffit de taper exit
,
le script chroot_in_env.sh
va finir son rôle en démontant
le systèmes de fichiers virtuels propre au Kernel Linux :
/# exit #