UML est un projet libre
(http://user-mode-linux.sourceforge.net/) qui permet de faire
tourner un Linux dans une machine virtuelle depuis n'importe quelle
distribution Linux. Depuis les versions des noyaus 2.6, UML fait même
partie intégrante des sources du noyau (arch/um).
La mise en oeuvre d'UML est relativement simple, il faut dans un premier temps récupérer les sources du noyau Linux et son patch UML associé :
$ wget http://www.kernel.org/pub/linux/kernel/v2.6/ linux-2.6.4.tar.bz2 $ wget http://prdownloads.sourceforge.net/user-mode-linux/ uml-patch-2.6.4-1.bz2
Puis créer ou récupérer un système de fichier compatible :
$ wget http://prdownloads.sourceforge.net/user-mode-linux/ Debian-3.0r0.ext2.bz2 $ wget http://prdownloads.sourceforge.net/user-mode-linux/ root_fs_slack8.1.bz2
Ensuite, il suffit d'appliquer le patch et de configurer le noyau en spécifiant l'architecture UML. Enfin, la compilation proprement dite crée un exécutable linux.
$ tar -xvjf linux-2.6.4.tar.bz2 $ cd linux-2.6.4 $ bzcat ../uml-patch-2.6.4-1.bz2 | patch -p1 $ make defconfig ARCH=um $ make menuconfig ARCH=um $ make linux ARCH=um
Une fois l'exécutable créé, il se lance comme n'importe quel binaire
du système avec éventuellement des arguments comme le système de fichiers et
le réseau.
Pour activer le réseau, il suffit d'ajouter à la ligne de lancement de l'UML : . Il est également nécessaire d'avoir les uml_utilities d'installées et que le binaire uml_net se trouve bien dans le path et ait les bonnes permissions. Le réseau se configure ensuite comme sous n'importe quel Linux. A noter que le système hôte doit posséder le module ``tun.o'' qui permet la réception et la transmission de paquets pour les programmes en espace utilisateur.
$ ./linux root=/dev/ubd/0 ubd0=../Debian-3.0r0.ext2 devfs=mount eth0=tuntap,,,192.168.0.2 uml:~# uname -a Linux uml 2.6.4-1um $1 Wed May 5 19:58:57 CEST 2004 i686 unknown