Rendez-vous sur Arrakis

C'est lorsque nous croyons savoir quelque chose qu'il faut justement réfléchir un peu plus profondément. F. Herbert

Faire un chroot transparent

Mais qu'est-ce que ça veut dire ça, un chroot transparent? Il s'agit en fait de pouvoir lancer des applications d'un autre système, le tout à partir de debian.

Par exemple, vous êtes en 64bits, mais il vous faut lancer un programme uniquement présent en 32 bits. (Déprécié lorsque le multi arch sera là) Ou alors, vous utilisez debian stable, mais avez besoin d'un logiciel présent en sid.

Une autre utilisation est de pouvoir installer des programmes et ne pas risquer de polluer le système de base. En particulier, installer des packages LaTeX et compiler les documents latex avec le chroot, même s'ils proviennent d'une source tierce. Ainsi, il n'y a pas de soucis avec les mises à jours.

Ce que je décris ensuite permet de lancer ces commandes relatives à un autre système sans avoir à préparer le chroot à chaque fois.

Mise en place

Installation du sous-système

Lorsqu'un # précède la commande à taper, c'est qu'il faut se placer avec les droits superutilisateur.

En partant du principe que c'est une debian que vous voulez utiliser pour lancer une application non présente pour votre architecture ou version de debian. On commence par créer le dossier qui contiendra la distribution , ici ce sera le dossier /debception, puis avec la commande debootstrap on installe le système de base :

# mkdir /debception
# debootstrap --arch i386 squeeze /debception http://ftp.fr.debian.org/debian

remplacer --arch i386 par l'architecture qui vous intéresse, ainsi que squeeze par la branche souhaitée (sid par exemple). Et voilà, vous voici avec le squelette d'une debian dans le dossier /debception.

Configuration du sous-système

Vous pouvez désormais :

Intégration du chroot

Bon, c'est bien joli tout ça, mais on ne va pas lancer toutes ces commandes dès que l'on veut utiliser une commande du sous-système. Pour cela, on automatise la liaison entre les documents (le /home), les dossiers “système” et “périphériques” (/proc et /dev) au sein du fstab. En fait, on rajoute ces lignes à la fin du fichier /etc/fstab qui contient tous les périphériques à monter au démarrage :

/home           /debception/home       none    bind            0       0
/tmp            /debception/tmp        none    bind            0       0
proc            /debception/proc       proc    defaults        0       0
/var/run        /debception/var/run    none    bind            0       0
/dev            /debception/dev        none    bind            0       0

Redémarrez ou lancez mount -a pour prendre les changements en compte

Utilisation et lancement d'une commande

Afin de se faciliter la vie, on va utiliser le programme schroot qui s'occupera de faire le lien avec le sous-système de façon sécurisée. Installez donc le paquet schroot, puis assurez-vous d'avoir ces lignes dans le fichier /etc/schroot/schroot.conf

[debception]
directory=/debception
users=thuban

Quelques explications :

Exemple

Vous connaissez peut-être le jeu dwarf fortress. Seul souci, il est compilé pour 32 bits, et j'utilise une debian 64 bits. Alors, pour le lancer, je vais dans son répertoire :

cd /home/thuban/Jeux/df_linux/

Puis je le lance, comme si j'étais dans le système 32 bits :

schroot -c squeeze32 -p ./df

Et voilà le résultat :

Références :

La page de fran.b