====== 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 === * On vérifie d'avoir les bons outils installés... sudo aptitude install coreutils debootstrap * Je commence par préparer le terrain sudo mkdir -p /srv/babylon **babylon** étant le doux nom que je dédierai à ce chroot. * J'installe une Lenny (en utilisant le premier miroir français). Cependant, en replaçant //lenny// par la version de votre choix et le premier miroir debian français par celui de votre choix, vous serez bien plus sûrement satisfaits. Si vous le désirez, vous pouvez aussi installer une Ubuntu comme ça. sudo debootstrap lenny /srv/babylon http://ftp.fr.debian.org/debian * Je donne un ''/dev'' et un ''/proc'' dignes de leur nom à mon chroot sudo mount -o bind /dev /srv/babylon/dev sudo mount -t proc proc /srv/babylon/proc * Je fais en sorte que la partition ''/home'' soit commune à mon système hôte et à mon chroot (facultatif) sudo mount -o bind /home /srv/babylon/home === Configuration === * Entrons dans notre chroot ! LANG=C sudo chroot /srv/babylon //On utilise les locales de base car les locales françaises ne sont pas encore installées.// * Donnons-lui un nom : echo babylon > /etc/debian_chroot * On met à jour la base de paquets aptitude update * [[:tuto_nix/config_aptitude|On configure le gestionnaire de paquet]] * [[:tuto_nix:vim:installation|On installe VIm]] * On installe et configure les locales aptitude install locales dpkg-reconfigure locales export LANG=fr_FR.UTF-8 * On crée un utilisateur principal de même nom et de même id que notre compte sur la machine hôte adduser --uid 1000 mon_login * [[:tuto_nix:config_sudo|On l'ajoute au groupe des sudoers]] * On bascule vite fait en mode utilisateur 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 === * Lancer rapidement son chroot : Créer un fichier exécutable babylon.sh (à bien mettre dans le PATH) #!/bin/sh sudo chroot /srv/babylon/ su - mon_login * Monter automatiquement /proc, /dev et /home 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 * Il est possible de lancer des applications graphiques depuis le chroot, pour ce faire, il faut déclarer DISPLAY à la valeur qu'il a sur le serveur X où doivent s'afficher les fenêtres. 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