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)