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