UserModeLinux

Cette page présente un exemple d'utilisation de UML (User Mode Linux) sous Ubuntu.

Présentation

UML est une technique permettant de faire tourner un système Linux quasiment complet comme un simple processus utilisateur.

Cela autorise donc n'importe quel utilisateur à lancer un serveur Linux virtuel sans aucun risque pour la sécurité de la machine.

Pré-requis

Aucun : il y a tout ce qu'il faut avec Ubuntu "Gutsy Gibbon" 7.10 ! ;-)

En cherchant bien vous pourrez même trouver ce qu'il faut pour Feisty.

Installation

Commencer par installer les paquets utiles :

sudo aptitude install user-mode-linux uml-utilities

Et c'est tout ! Car le reste (patch UML dans le noyau) a déjà été fait par Ubuntu !

Le seul point un peu subtil est, comme d'habitude, la configuration du réseau du serveur virtuel. Et toujours comme d'habitude il y a plusieurs possibilités. La plus sécurisée étant probablement du NAT avec le service uml-net et la plus pratique étant sans-doute de faire un pont Ethernet mais je n'ai pas encore testé cette solution.

Contenu utile du fichier /etc/default/uml-utilities :

UML_SWITCH_START="true"
UML_SWITCH_OPTIONS="-tap tap0"
UML_SWITCH_USER="uml-net"

Contenu utile du fichier /etc/network/interfaces :

auto tap0
iface tap0 inet static
        address 192.168.127.254
        netmask 255.255.255.0
        network 192.168.127.0
        broadcast 192.168.127.255
        tunctl_user uml-net

Activer ensuite l'interface une première fois (évite le redémarrage) :

sudo ifup tap0

Et relancer le service réseau pour UML :

sudo /etc/init.d/uml-utilities restart

Préparation

On commence par se créer un disque virtuel (un simple fichier vide suffit) :

dd if=/dev/zero of=~/mon-disque-uml bs=1K seek=1M count=1

Ensuite on crée un système de fichiers dessus :

mkfs -t ext3 ~/mon-disque-uml

On monte ce système de fichier :

sudo mount ~/mon-disque-uml /mnt/

Et on y installe un serveur :

sudo debootstrap etch /mnt/ http://ftp.fr.debian.org/debian/

On y désactive ensuite toutes les consoles sauf une :

sudo sed -i '/^[2-6]:/s/^/#/' /mnt/etc/inittab

Et finalement on y ajoute une ligne pour accéder aux modules noyau :

echo "hostfs /lib/modules hostfs /usr/lib/uml/modules 0 0" | sudo tee -a /mnt/etc/fstab

Utilisation

Il suffit de lancer le programme linux.uml avec les options adéquates pour obtenir tout de suite un serveur Linux virtuel fonctionnel :

linux.uml mem=256M ubd0=~/mon-disque-uml eth0=daemon

UserModeLinux (dernière édition le 2008-02-21 22:09:26 par localhost)