Je suis Charlie

Autres trucs

Accueil

Seulement les RFC

Seulement les fiches de lecture

Mon livre « Cyberstructure »

Ève

Virtualisation avec User-Mode-Linux

Première rédaction de cet article le 2 mai 2006
Dernière mise à jour le 5 mai 2006


Contrairement à Xen, User-Mode-Linux est, comme son nom l'indique, spécifique à Linux. C'est un noyau modifié pour pouvoir être lancé comme une commande, sur un Linux ordinaire :

% ./kernel32-2.6.15.3-bs1-tls ubd0=./Slackware-10.2-root_fs
[Messages de démarrage, puis :]
Welcome to Linux 2.6.15.3-bs1-tls (tty0)

darkstar login: 

User-Mode-Linux permet par exemple à un hébergeur de proposer une machine virtuelle au client, sur laquelle il sera root, sans avoir à lui dédier une machine physique chère et encombrante (le processus est très bien décrit dans http://www.stearns.org/slartibartfast/uml-coop.html).

Quel plaisir de lancer un noyau sans être root, de voir les messages de démarrage et de pouvoir faire un ps après :

bortzme  12130  1.0  5.2 33572 26972 pts/1   S+   12:59   0:02 ./kernel32-2.6.15.3-bs1-tls 

La commande complète que j'utilise pour lancer la machine virtuelle Ubuntu sur laquelle j'écris cet article est :

 screen -S ragnetrude sudo kernels/kernel32-2.6.16.11-bs2 ubd0=cows/ragnetrude.cow ubd1=./swap mem=96M eth0=tuntap,,,192.134.4.69 umid=ragnetrude

J'utilise sudo pour être root afin de pouvoir configurer le réseau sur la machine hôte (cela n'est pas forcément nécessaire, permettre l'accès à /dev/net/tun peut être suffisant mais je n'ai pas testé). Je définis la mémoire utilisée par la machine virtuelle (ici, 96 méga-octets). Et je configure une interface réseau qui va utiliser ma machine, 192.134.4.69, comme routeur (l'adresse IP de la machine virtuelle est, elle, configurée dans la machine virtuelle). Enfin, je définis un identificateur, ici ragnetrude.

À noter que screen est très pratique (mais pas obligatoire) pour lancer les machines virtuelles (comme ci-dessus), se détacher du terminal (Control-A d), se reconnecter (screen -r ragnetrude), etc.

Pour lancer tout un système et pas le seul noyau, il faut une image d'un système installé, comme celles qu'on trouve en http://uml.nagafix.co.uk/. Si on veut faire tourner plusieurs machines virtuelles, sans copier à chaque fois ce gros fichier, User-Mode-Linux permet d'utiliser des fichiers COW, pour Copy-on-Write. On les crée avec uml_mkcow (en indiquant sur quel fichier image il s'appuie, ici une image d'Ubuntu) et on peut les utiliser après :

% uml_mkcow -f cows/ragnetrude.cow images/Ubuntu-x86-root_fs
% kernels/kernel32-2.6.16.11-bs2 ubd0=cows/ragnetrude.cow

On trouve de très bonnes ressources UML (noyaux déjà compilés et images de système de fichiers racine) sur http://uml.nagafix.co.uk/. Il y a aussi des noyaux déjà compilés sur http://www.user-mode-linux.org/~blaisorblade/.

Version PDF de cette page (mais vous pouvez aussi imprimer depuis votre navigateur, il y a une feuille de style prévue pour cela)

Source XML de cette page (cette page est distribuée sous les termes de la licence GFDL)