Virtualiser sans virtualiser

Gazette Linux n°150 — mai 2008

Adaptation française : Marianne Lombard

Relecture de la version française : Deny

Article paru dans le n°150 de la Gazette Linux de mai 2008.

Article publié sous Open Publication License. La Linux Gazette n'est ni produite, ni sponsorisée, ni avalisée par notre hébergeur principal, SSC, Inc.


Table des matières

Introduction
Demander au super-utilisateur
Allouer l'espace disque
Créer une nouvelle installation Debian
Le programme principal
Tous jouent et personne ne travaille
Philosophie

Introduction

Actuellement on peut lire beaucoup de choses sur la virtualisation. La Gazette a même fait paraître un article sur le sujet. La plupart de ces rapports parlent de Xen, Vserver, OpenVZ, Qemu en mode utilisateur de Linux ou en co-utilisation. Chacune de ces technologies modernes à sa place sans le moindre doute, mais cet article va se concentrer sur l'humble chroot comme moyen de faire tourner des programmes dans un environnent virtuel.

Voici l'EULA [1] que vous devez accepter si vous voulez continuez à lire :

  • Le logiciel que vous voulez faire fonctionner "virtuellement" peut fonctionner avec votre noyau actuel.

  • Votre avatar super-utilisateur croit que le logiciel que vous voulez faire fonctionner n'est pas moins digne de confiance que celui qui tourne actuellement sur votre système.

  • Vous avez assez d'espace-disque pour répliquer une installation complète.

  • Vous utilisez Debian ou une distribution dérivée. (Ces jours-ci, la dernière ligne se lit probablement : « Vous êtes sous Ubuntu ! »)

Voici certains des scénarios possibles si quelqu'un veut faire tourner des programmes dans un contexte virtuel en dépit de ces (je l'admet, rigoureuses) conditions :

  • Vous avez installé la version amd64 de Debian mais vous avez besoin de compiler et/ou utiliser des programmes 32-bit. (lire : Vous voulez voir tout ces trucs flashants dont tout le monde parle !)

  • Vous avez installé Debian stable mais vous voulez « expérimenter » certains paquets de testing ou unstable et vous ne voulez pas vraiment mettre le bazar dans votre installation stable (apt-get est génial pour résoudre les dépendances lors de l' upgrade; ceux qui ont essayé un downgrade n'ont pas vécu assez longtemps pour en parler).

  • Vous aimez vraiment Debian mais le DBAV [2] est venu valser dans votre ville à la recherche de nouveaux employés pour Canonical et vous voulez l'impressionner en faisant tourner le Héron Hardi.

  • « Girls [3] = just want to have fun! » C'est souvent la meilleure raison de toutes.

Demander au super-utilisateur

Votre avatar super-utilisateur (SU) doit exécuter les étapes suivantes pour vous permettre d'entrer dans un contexte virtuel.

Allouer l'espace disque

Soit vous avez déjà assez d'espace disque sur une quelconque partition montée ou vous avez une partition inutilisée. Vous allez avoir besoin de cet espace libre pour apparaître dans un emplacement déterminé tel que /srv/schroot, SU peut utiliser mount (avec l'option –-bind dans le cas précendent) pour l'établir.

Créer une nouvelle installation Debian

N'utilisez pas le CD de Debian pour ça ! Il y a un moyen de le faire sans détruire votre enregistrement uptime. SU doit installer debootstrap :

	
		apt-get install debootstrap

et le lancer :

		
		debootstratp --include= iceweasel, mozplugger lenny /srv/schroot

SU peut bien sûr remplacer iceweasel et mozplugger par n'importe quelle liste de programmes séparés par une virgule ayant besoin d'être installés. Il est utile d'ajouter un miroir local à la fin de la liste de l'invocation de debootstrap et d'avoir ainsi un téléchargement plus rapide.

Le programme principal

Puisque vous utilisez Debian, installer schroot est aussi aisé pendant que SU est lancé :

apt-get install schroot

vous devez également configurer schroot; il y a un certain nombre d'options plutôt intéressantes. La strophe de configuration qui semble la plus adéquate est :

[lenny]
description=Debian lenny (testing)
location=/srv/schroot
type=directory
users=luser
root-groups=root
root-users=root
aliases=testing,default
run-setup-scripts=true
run-exec-scripts=true

Si vous voulez utilisez un chroot 32-bit sur un système 64 bit alors vous devez avoir personality=linux32 dans cette configuration. La strophe ci-dessus est placée dans le fichier schroot.conf dans le répertoire de configuration /etc/schroot/. Il dit que SU autorise l'utilisateur luser à utiliser schroot dans le répertoire /src/schroot après que différentes installations standards et scripts de démarrage aient été exécutés.

Vous devez également aller voir le script d'installation 10mount dans le sous-répertoire setup.d du répertoire ci-dessus où vous pourrez avoir besoin de créer certains points de montage additionnels. Par exemple, ajouter la ligne

do_mount "-o rw,bind" "/dev/snd" "${CHROOT_PATH}/dev/snd"

à 10mount en même temps que la création du sous-répertoire dev/snd dans /svr/schroot assure que les périphériques de son (ALSA) seront accessibles dans le chroot. C'est extrêmement important pour flash !

Ceci complète l'installation que le super-utilisateur doit faire. Après cela, luser peut aller de l'avant et jouer avec son « environnement »tout neuf.

Tous jouent et personne ne travaille

L'utilisateur autorisé luser peut executer un shell en lançant

schroot -p -c lenny

le shell se lance normalement dans un environnent où les répertoires de l'utilisateur, /tmp et /dev se montent à la base du système. Donc il devrait être possible d'exécuter des commandes qui nécessitent également un environnement X window. (L'option -p donnée plus haut est requise pour préserver l'environnement ce qui inclut la variable DISPLAY).

Un autre moyen de lancer une commande comme iceweasel directement est

schroot -p -c lenny iceweasel

Notez que chacune de ces commandes crée une nouvelle « session » schroot. Pour réutiliser une session déjà créée, vous devez sauver l'identifiant de session et l'utiliser. Par exemple, vous pouvez démarrer une nouvelle session, sans aucune commande :

SCHROOT_SESSION=$(schroot -b -c lenny)

si vous lançez ensuite la commande

schroot -p --chroot $(SCHROOT_SESSION) iceweasel

iceweasel va démarrer et tourner dans cette session. Si vous lancez cette commande une autre fois, vous n'allez pas créer une nouvelle session.

Philosophie

La commande chroot existe depuis des « ères », mais elle était souvent considérée « pour le super-utilisateur exclusivement ». En utilisant schroot elle devient parfaitement accessible et sûre pour l'utilisateur habituel du système. Utiliser ce type de virtualisation minimale n'est certainement pas au même niveau de sécurité que les « vraies » techniques de virtualisation mais n'a pas de surcoût (à l'exception de l'usage-disque); j'espère que cet article démontre que schroot est au moins aussi simple à installer.

Utiliser schroot est une bonne réponse à la question courante :

comment dois-je faire tourner la toute dernière version de « nommer votre application favorite à développement rapide » sous Debian ?

À mon avis, la solution ci-dessus est préfèrable plutôt que de faire fonctionner un environnent mixant les versions stable/testing de Debian. Même les backports sont légèrement plus mauvais, puisqu' un environnent mixte stable/backports n'est pas celui où les paquets sont testés par la plupart des développeurs.

La motivation d'écrire cet article est née d'une discussion que j'ai lu dans les lettres du Linux Weekly News où des gens disaient que Debian entravait ceux qui voulaient lancer des programmes 32-bit sur un système 64-bit. Évidement, si les bibliothèques sont correctement empaquetées et maintenues, alors c'est plus simple que la solution ci-dessus. Tout de même, Debian doit avoir cette solution !

Le titre de cet article est inspiré par John Archibald Wheeler, une des physicien les plus fascinants du 20e siècle, qui nous a quitté récemment.

Kapil Hari Paranjape a l'âme d'un « hacker » depuis l'époque des cartes perforées. Plus précisément, cela veut dire qu'il n'a jamais écrit de « véritable » programme. Il s'est contenté d'expérimenter des programmes écrits par d'autres. Après avoir joué avec Minix en 1990-91, il a pensé écrire son premier logiciel — un « authentique » noyau *nix pour la classe d'ordinateurs x86. Heureusement pour lui, un certain Linus Torvalds l'a devancé — lui évitant ainsi la peine (une fois de plus) d'écrire effectivement du code. En signe de gratitude éternelle, il a passé beaucoup de temps à expérimenter et promouvoir le système Linux et le projet GNU depuis lors, au grand dam de la plupart de son entourage, qui pense qu'il devrait se concentrer sur la recherche en mathématiques — qui est son gagne-pain. L'interaction entre les programmes s'exécutant réellement, ce qui peut être calculé en théorie et ce dont on peut prouver l'existence, continuent de le fasciner.

Adaptation française de la Gazette Linux

L'adaptation française de ce document a été réalisée dans le cadre du Projet de traduction de la Gazette Linux.

Vous pourrez lire d'autres articles traduits et en apprendre plus sur ce projet en visitant notre site : http://wiki.traduc.org/Gazette_Linux.

Si vous souhaitez apporter votre contribution, n'hésitez pas à nous rejoindre, nous serons heureux de vous accueillir.



[1] C'est un acronyme dyslexique pour « Expérimental – Usage Avancé Expérimental » (NDT : jeu de mot sur EULA (End User License Agreement) traduit normalement en français par CLUF (Contrat de License d'Utilisateur Final))

[2] Mark Shuttleworth : Dictateur Bénévole A Vie pour Ubuntu

[3] ou Boys, selon le cas (NDT : laissé volontairement en anglais)