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…)
C'est archi-simple. La méthode est toujours la même, voici l'installation de base suivie de quelques exemples.
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
/dev et un /proc dignes de leur nom à mon chrootsudo mount -o bind /dev /srv/babylon/dev sudo mount -t proc proc /srv/babylon/proc
/home soit commune à mon système hôte et à mon chroot (facultatif)sudo mount -o bind /home /srv/babylon/home
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à…
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
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
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)
sudo aptitude install texlive-latex-extra