Table des matières

Pourquoi (et comment) faire des chroots sur son ordinateur personnel

Pourquoi ?

Installer une distro dans une distro, ça peut paraître un peu lourd et l'intérêt ne saute pas forcément aux yeux. Alors pourquoi réinstaller plusieurs mini-debian dans une debian ?

Premièrement, il y a le problème de la gestion des paquets installés. Le jeu des dépendances fait qu'en peu de temps, on ne maîtrise plus du tout les paquets installés sur sa machine. Pourquoi sont-ils là, à quoi servent-ils, que font-ils, quelle place prennent-ils, me sont-ils vraiment nécessaires, etc. ?

Cloisonner les applications peut donc aider à avoir un système plus « maintenable » et plus « sous contrôle ».

Sur ce principe, voilà comment je vois l'organisation de mon OS.

Le système hôte se charge de la composante matérielle, c'est lui qui charge les modules associés aux pilotes matériel. C'est avec lui que j'interagis, il s'occupe donc des tty, du serveur X et du Window Manager. Il contient aussi les outils que j'utilise tous les jours : mon navigateur web, mon client mail, messagerie instantanée et bien sûr, les outils de base : éditeur de texte et compagnie.

Tout ça me fait un / de moins de 3 Go (en excluant /home).

J'ai un chroot Debian sid pour la compilation (sid 64bit), qui pèse moins de 1,5 Go Un autre chroot pour Latex et la compilation (sid 32 bits), qui pèse environs 2 Go

Si je veux faire un peu de ménage, je n'ai qu'à supprimer le chroot qui me gêne et à le refaire. Mon système ne bouge pas. Je peux même avoir en même temps différents chroot qui servent à la même chose mais qui ont des particularités (ex : plusieurs JVM… haha… déjà qu'une JVM…)

Comment ?

C'est archi-simple. La méthode est toujours la même, voici l'installation de base suivie de quelques exemples.

Installation

sudo aptitude install coreutils debootstrap
sudo mkdir -p /srv/babylon

babylon étant le doux nom que je dédierai à ce chroot.

sudo debootstrap lenny /srv/babylon http://ftp.fr.debian.org/debian
sudo mount -o bind /dev /srv/babylon/dev
sudo mount -t proc proc /srv/babylon/proc
sudo mount -o bind /home /srv/babylon/home

Configuration

LANG=C sudo chroot /srv/babylon

On utilise les locales de base car les locales françaises ne sont pas encore installées.

echo babylon > /etc/debian_chroot
aptitude update
aptitude install locales
dpkg-reconfigure locales
export LANG=fr_FR.UTF-8
adduser --uid 1000 mon_login
su - mon_login

où nous sommes accueillis par un joli prompt :

(babylon)mon_login@salade:~$ 

(peut différer si vous avez monté le /home de votre machine hôte dans le /home du chroot et que vous avez personnalisé votre prompt…)

Et voilà…

Quelques trucs

Créer un fichier exécutable babylon.sh (à bien mettre dans le PATH)

#!/bin/sh
sudo chroot /srv/babylon/ su - mon_login

Rajouter dans le /etc/fstab de la machine hôte

proc            /srv/babylon/proc           proc    defaults      0       0
/dev            /srv/babylon/dev            auto    bind          0       0
/dev/sda7       /srv/babylon/home           ext4    defaults      0       2

Exemple :

export DISPLAY=":0"
soffice

Exemples

Installer son serveur LAMP sans polluer le reste

Pour faire localement mes tests que je mettrai en suite en production sur un serveur dédié, je souhaite avoir des versions équivalentes. Je vais donc commencer par m'installer la même distribution, en l'occurrence la stable du moment : Lenny.

Une fois l'installation faite, on installe les outils habituels (et pas plus…)

sudo aptitude install -R  apache2 mysql-server libapache2-mod-php5 phpmyadmin

Puis quand on souhaite les utiliser, on les lance (depuis le chroot)

sudo invoke-rc.d mysql start
sudo invoke-rc.d apache2 start

Installer les outils de compilation sans polluer le reste

De la même manière on suit la procédure décrite ci-dessus en choisissant comme version à installer celle du système pour lequel on veut compiler (on me souffle à l'oreille qu'il y a quelques problèmes avec la sid, donc plutôt la squeeze)

Installer des logiciels « sensibles aux mises à jour » sans priver le système de mises à jour

sudo aptitude install texlive-latex-extra