Table des matières

Schrootez de la bonne manière !

Introduction

On démarre notre périple après avoir installé notre autre version de Debian (voir le wiki DF), ou quoi que ce soit d'autre, sur une partition dédiée. Pour cette page c'est une sid qui est prise en exemple.

Configuration

Tout se passe dans le dossier /etc/schroot, et donc en root.

A noter que pour l'exemple du fichier principal ci-dessous, la valeur de la clé “type” ne doit pas être différente de “directory”.

Quant à la clé “profile” elle désigne le répertoire de config qui sera lu par schroot.

Ici c'est le user “bidule” et son groupe du même nom qui va utiliser le chroot.

schroot.conf
[sidchroot]
type=directory
directory=/media/sidchroot
users=bidule
groups=bidule
preserve-environment=true
profile=sidchroot

Ensuite, selon l'utilisation du chroot on peut choisir comme modèle un des dossiers (sauf ceux de scripts). Tous comportent plus ou moins les mêmes fichiers mais avec des pré-configurations différentes. On peut aussi picorer dans chaque….

Pour créer simplement le dossier “sidchroot” pour une session avec des appli graphiques.

cp -r desktop sidchroot

Dans le répertoire “sidchroot” on peut conserver le fichier “fstab” tel quel:

fstab
# fstab: static file system information for chroots.
# Note that the mount point will be prefixed by the chroot path
# (CHROOT_PATH)
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
/proc           /proc           none    rw,bind         0       0
/sys            /sys            none    rw,bind         0       0
/dev            /dev            none    rw,bind         0       0
/dev/pts        /dev/pts        none    rw,bind         0       0
/home           /home           none    rw,bind         0       0
/tmp            /tmp            none    rw,bind         0       0
 
# If you use gdm3, uncomment this line to allow Xauth to work
#/var/run/gdm3  /var/run/gdm3   none    rw,bind         0       0
# For PulseAudio and other desktop-related things
/var/lib/dbus    /var/lib/dbus  none    rw,bind         0       0
 
# It may be desirable to have access to /run, especially if you wish
# to run additional services in the chroot.  However, note that this
# may potentially cause undesirable behaviour on upgrades, such as
# killing services on the host.
#/run           /run            none    rw,bind         0       0
#/run/lock      /run/lock       none    rw,bind         0       0
#/dev/shm       /dev/shm        none    rw,bind         0       0
#/run/shm       /run/shm        none    rw,bind         0       0

Mais phlinux n'aime pas “binder” le /home ni /sys. A noter que /run peut poser des problèmes comme il est indiqué dans les commentaires.

De même que tout “fstab” on peut ajouter le montage de la racine (c'est à dire la partition de la distribution chrootée) et, pourquoi pas, une partition utile dans le chroot.

Ce qui donne par exemple:

fstab
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
UUID=xxxx41ef-13f6-xxxx-a484-9b1ec5fd6271	/	ext4	defaults		0	0
/proc           /proc           none    rw,bind         0       0
/dev            /dev            none    rw,bind         0       0
/dev/pts        /dev/pts        none    rw,bind         0       0
/tmp            /tmp            none    rw,bind         0       0
/var/lib/dbus    /var/lib/dbus  none    rw,bind         0       0
UUID=6c66xxxx-35c0-4336-xxxx-b14c2ddc2835	/media/stock	ext3	defaults	0	0

Toujours dans le dossier “sidchroot” on peut utiliser le fichier “copyfiles” pour copier dans le chroot des fichiers du système hôte.

Par exemple:

copyfiles
# Files to copy into the chroot from the host system.
#
# <source and destination>
/home/bidule/.Xauthority     # certainement indispensable pour des sessions en graphiques
/etc/resolv.conf                    # utile/indispensable pour le réseau 

Enfin, vérifier le fichier “nssdatabases”. Dans la liste des fichiers qui peuvent être copiés dans le chroot, beaucoup, voire tous, sont déjà présents suite à la construction de la distribution si on a suivi le wiki DF. Donc à commenter selon les besoins.

Et pis…..c'est tout.

Utilisation

Comme d'hab….. Sauf qu'avec cette configuration plus besoin de pré-monter la partition du chroot depuis l'hôte et de farcir son “fstab” avec des lignes de “bind”, ni même d'écrire des scripts savants… Tout se fait au lancement de l'appli ou de l'accès au chroot par le login.

Quelques rappels de “classiques” avec l'exemple de sidchroot:

schroot -c sidchroot gimp
schroot -c sidchroot /bin/bash

Pour mettre à jour son chroot (petites variations d'options possibles suivant le $TERM utilisé):

$TERM -f -e schroot -c sidchroot -- /bin/bash -c "su -"

Et une petite astuce qui peut servir pour passer une option à l'appli lancée:

schroot -c sidchroot -- mpv --playlist

Les experts pourront peut être apporter la confirmation que cette config est également plus sécurisée car vraiment transparente.

A bientôt sur DF