{{tag>kernel linux système}}
----
====== User Mode Linux ( UML ) ======
== Pour Ubuntu Feisty ==
« User Mode Linux » (ou UML) est un noyau Linux compilé qui peut être exécuté dans l'espace utilisateur comme un simple programme. Il permet donc d'avoir plusieurs systèmes d'exploitation virtuels (systèmes nommés « invités ») sur une seule machine physique GNU/Linux (système nommé « hôte »).
===== Utiliser des machines virtuelles avec User Mode Linux =====
Pour faire fonctionner UML, il faut récupérer trois choses :
* un noyau Linux spécifique
* l'image d'un système de fichiers
* des utilitaires
==== Installer les utilitaires ====
On installe les utilitaires :
sudo apt-get install uml-utilities bridge-utils
==== Noyau Linux spécifique et système de fichiers à utiliser ====
=== Les récupérer... ===
Vous pouvez récupérer le noyau et le système de fichiers sur ce site : http://uml.devloop.org.uk/http://fs.devloop.org.uk/
Faites bien attention de prendre la bonne version selon votre processeur, 32-bit ou 64-bit. Dans notre exemple nous allons utiliser le noyau **kernel32-2.6.16.43-bs2** et le système de fichiers **Ubuntu-FeistyFawn-i386-root_fs.bz2** .
=== Les mettre en œuvre... ===
Ensuite, il faut donner des droits particuliers à ces deux fichiers.
Pour le noyau, il faut le rendre exécutable :
chmod 755 kernel32-2.6.16.43-bs2
Pour le système de fichiers, il faut le décompresser :
bzip2 -d Ubuntu-FeistyFawn-i386-root_fs.bz2
puis lui donner les droits d'écriture :
chmod 666 Ubuntu-FeistyFawn-i386-root_fs
puis vérifier l'intégrité du système de fichiers :
e2fsck Ubuntu-FeistyFawn-i386-root_fs
On peut ensuite lancer la machine virtuelle :
./kernel32-2.6.16.43-bs2 ubd0=Ubuntu-FeistyFawn-i386-root_fs
vous pouvez ensuite vous connecter avec le compte **root** (sans mot de passe).\\
===== Configuration de l'interface réseau pour la machine virtuelle =====
==== Ajout de l'utilisateur dans le groupe "uml-net" ====
Ajoutez votre utilisateur dans le groupe "uml-net" :
sudo vim /etc/group
Pour ce faire, vous pouvez aussi utiliser la commande suivante. Attention, remplacez (sans les <>) par l'identifiant (login) réel !
sudo usermod -a -G uml-net
==== Création d'un bridge ====
Il faut créer un bridge dans le fichier /etc/network/interfaces ; pour ce faire :
sudo vim /etc/network/interfaces
Votre interface eth0 est probablement déjà configurée avec un truc du genre :
auto eth0
iface eth0 inet dhcp
ou
auto eth0 iface eth0 inet static
address xxx.xxx.xxx.xxx
netmask xxx.xxx.xxx.xxx
broadcast xxx.xxx.xxx.xxx
gateway xxx.xxx.xxx.xxx
Ceci n'est plus nécessaire... Commentez ces lignes (#)
Il faut d'abord créer deux interfaces, une réelle (eth0) et une virtuelle (tap1), puis les bridger (bridge0), pour cela, ajoutez :
auto eth0
iface eth0 inet manual
et
auto tap1
iface tap1 inet manual
tunctl_user
où (sans les <>) correspond exactement à l'utilisateur précédemment déclaré dans le groupe uml-net.
Maintenant, le bridge... Il y a plusieurs solutions : soit l'OS hôte (Host) est en client DHCP (ce qui n'est pas pratique si vous voulez en faire un smb server pour partager des fichiers et des imprimantes avec l'OS invité (Guest)), soit il est configuré en IP fixe. On choisira l'une ou l'autre des solutions ci-dessous. Evidemment, ceci rend impossible une configuration future avec les outils Gnome.
=== IP fixe ===
Insérer **après les interfaces ci-dessus** (copier/coller les données IP de l'ex eth0 que vous avez commentées plus haut) :
auto bridge0
iface bridge0 inet static
post-up chmod ugo+rw /dev/net/tun
address xxx.xxx.xxx.xxx
netmask xxx.xxx.xxx.xxx
broadcast xxx.xxx.xxx.xxx
gateway xxx.xxx.xxx.xxx
bridge-ports eth0 tap1
bridge-ageing 7200
bridge-fd 0
=== Client DHCP ===
Insérer **après les interfaces ci-dessus** :
auto bridge0
iface bridge0 inet dhcp
post-up chmod ugo+rw /dev/net/tun
bridge-ports eth0 tap1
bridge-ageing 7200
bridge-fd 0
Un reboot du Host ne sera pas nécessaire, pour s'assurer que les nouvelles configurations réseau sont bien prises en compte. Il suffira de lancer :
sudo /etc/init.d/networking restart
Faites attention aux erreurs qui pourraient apparaitre dans le terminal.
Vous avez maintenant un bridge qui met à disposition de l'OS Guest un accès complet au LAN.
==== Configuration des OS hôte et invités ====
Dans les paramètres de configuration de l'OS Guest, il vous reste à configurer le "Host Interface Networking" avec comme interface (sans les <>).
Si votre LAN dispose d'un serveur DHCP, vous pouvez configurer l'OS Guest en client DHCP, sinon, une adresse IP fixe fera l'affaire (différente de celle du Host, bien sûr).
==== Lancement de l'OS invité ====
Une fois tout ceci configuré, il ne vous reste plus qu'à lancer votre machine virtuelle avec l'interface réseau :
./kernel32-2.6.16.43-bs2 ubd0=Ubuntu-FeistyFawn-i386-root_fs eth0=tuntap,tap1
===== Options supplémentaires =====
Par défaut la mémoire vive allouée à la machine virtuelle est 32 Mo. Si vous souhaitez lui allouer 256 Mo par exemple, il suffit de rajouter l'option mem=256M :
./kernel32-2.6.16.43-bs2 ubd0=Ubuntu-FeistyFawn-i386-root_fs eth0=tuntap,tap1 mem=256M
//Tuto réalisé par Yoann Vareille//