QEMU et VDE
De RotomaLUG.
| Frontal web | Wiki accueil | Les forums | La galerie | La liste LUG | La liste INSTALL PARTY |
version brouillon, aide mémoire ...
Sommaire |
Mise en place de l'émulation QEMU en réseau avec VDE
Téléchargement, dépendances et compilation
Documentation sur QEMU
Avant de commencer : les dépendances
Avant tout il faut installer les programmes nécessaires à la compilation :
# apt-get install build-essential
Puis les programmes nécessaires à la compilation de qemu (pour cela, il faut que les sources de qemu fassent partie de la distribution) :
# apt-get build-dep qemu
Enfin, il faut installer les autres dépendances : gcc-3.4, libsdl1.2-dev, zlib1g, zlib1g-dev, bochsbios
# apt-get install gcc-3.4 libsdl1.2-dev zlib1g zlib1g-dev bochsbios
*** A VOIR : liste à compléter ? ***
Remarque de Cyrille : il semble que les dépendances se fassent seules sous Ubuntu Dapper :
root@badlieutenant:/home/cyrille# apt-get build-dep qemu Lecture des listes de paquets... Fait Construction de l'arbre des dépendances... Fait Les NOUVEAUX paquets suivants seront installés : cpp-3.4 gcc-3.4 gcc-3.4-base libaa1-dev libartsc0-dev libasound2-dev libaudio-dev libgl1-mesa-dev libglu1-mesa-dev libgpmg1-dev libsdl1.2-dev libslang2-dev mesa-common-dev sharutils texi2html
Et naturellement, j'ai oublié qu'il faut les entêtes pour le noyau sans quoi on ne pourra pas utiliser le module kqemu, tellement important pour accélérer kqemu :
# apt-get install linux-headers-MAVERSION
où MAVERSION est obtenue facilement grâce à uname -r.
téléchargement
Tout d'abord, on se met dans le répertoire /usr/local/src (il faut d'abord se mettre dans le groupe src et se reloguer)
$ cd /usr/local/src
et on désinstalle qemu s'il est installé par les debs :
$ sudo apt-get remove qemu
Ensuite on télécharge les sources de qemu et de kqemu :
$ wget http://fabrice.bellard.free.fr/qemu/qemu-0.8.0.tar.gz $ wget http://fabrice.bellard.free.fr/qemu/kqemu-0.7.2.tar.gz
Attention : les versions ont changé, allez-voir sur le site de qemu
et on décompresse le tout :
$ tar xvzf qemu-0.8.0.tar.gz $ cd qemu-0.8.0 ; tar xvzf ../kqemu-0.7.2.tar.gz
Compilation
$ ./configure --cc=gcc-3.4 --prefix=/usr/local $ make
Attention, le noyau étant compilé avec gcc4 il faut compiler le module kqemu avec la même version de gcc :
$ cd kqemu ; make clean ; make
Mise à jour : pour la version 1.3.0pre7 de kqemu et peut-être les versions qui suivent, vous devriez renommer le répertoire kqemu-version en kqemu puis faire tout simplement, dans ce répertoire :
$ ./configure --cc=gcc4 ; make ; make install
Puis installer le tout :
# cd .. ; make install
Enfin charger le module (le fichier périphérique est créé par le make install) :
# modprobe kqemu
et le faire charger automatiquement au démarrage en l'ajoutant dans /etc/modules :
# echo 'kqemu' >> /etc/modules
Remarque : kqemu n'est pas libre !
Jan 15 14:37:39 localhost kernel: [4304248.599000] QEMU Accelerator Module version 1.2.0, Copyright (c) 2005 Fabrice Bellard Jan 15 14:37:39 localhost kernel: [4304248.599000] This is a proprietary product. Read the LICENSE file for more information Jan 15 14:37:39 localhost kernel: [4304248.599000] Redistribution of this module is prohibited without authorization Jan 15 14:37:39 localhost kernel: [4304248.600000] KQEMU installed, max_instances=4 max_locked_mem=129284kB.
La licence est la suivante :
1) The QEMU Accelerator Module (aka KQEMU) is a proprietary product. It is available without charge. Commercial use of the QEMU Accelerator Module is allowed. Redistribution of the QEMU Accelerator Module: any person or organisation wishing to distribute it, for example on a CD or as a binary or source package, must have an explicit authorization from the author. The QEMU Accelerator Module is available without any express or implied warranty. In no event will the author be held liable for any damages arising from the use of this software. 2) The header file "kqemu.h" can be freely used and distributed so that it is possible to distribute QEMU binaries ready to use KQEMU. 3) QEMU is a trademark of Fabrice Bellard.
Mettre en place le réseau avec VDE
Documentation
- un HOWTO trouvé sur le net : [[3]]
- télecharger VDE sur [[4]]
http://ovh.dl.sourceforge.net/sourceforge/vde/vde-2.0.1.tgz
Compiler VDE
$ cd /usr/local/src $ tar xvzf /tmp/vde-2.0.1.tgz $ cd vde-2.0.1 $ CC=gcc-3.4 ./configure --prefix=/usr/local $ make && sudo make install
Mettre en place
Tout d'abord un petit script à lancer avant de lancer qemu :
#!/usr/bin/sudo /bin/sh
#
if [ ! -e /dev/kqemu ] ; then
rmmod kqemu
echo creation du peripherique kqemu
mknod /dev/kqemu c 250 0
chmod 666 /dev/kqemu
echo chargement du module kqemu
modprobe kqemu
fi
killall vde_switch >/dev/null 2>&1
ifconfig tap0 down >/dev/null 2>&1
# lance vde en demon et en mode switch
vde_switch -tap tap0 -daemon -sock /tmp/vde.ctl
/bin/sleep 2
# attribue l'ip pour l'interface virtuelle tap0
ifconfig tap0 192.168.254.254
chmod -R 777 /tmp/vde.ctl
# on active le routage
echo "1" > /proc/sys/net/ipv4/ip_forward
# suppression du 'natage' existant s'il y a lieu
iptables -F POSTROUTING -t nat
# on 'renate'
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Pour vérifier que vde est lancé :
#ps x |grep vde 27043 ? Ss 0:00 vde_switch -tap tap0 -daemon -sock /tmp/vde.ctl 27092 pts/2 S+ 0:00 grep vde
Création de l'image de disque pour installer un OS
$ qemu-img create test.img 4G
pour créer une image de 4 Go nommée test.img
Utilisation
D'abord, on évite les petits soucis :
$ sudo umount /dev/shm ; sudo mount -t tmpfs -o size=528m none /dev/shm
Puis on lance qemu comme ça :
$ vdeq /usr/local/bin/qemu -hda test.img -m 256 -localtime
attention, au début je le lancait avec sudo parce que ça ne fonctionnait pas ... le chmod 777 -R /tmp/vde.ctl du script a résolu le problème.
et une fois la session qemu finie :
$ sudo umount /dev/shm
Configuration du poste émulé :
ip : 192.168.254.1 (par exemple)
passerelle : 192.168.254.254
dns : DNS du réseau interne
Problèmes rencontrés
- You do not have enough space in '/dev/shm' for the 512 MB of QEMU virtual RAM.
sudo vdeq /usr/local/bin/qemu -hda slack.img -m 512 -localtime -cdrom slackware-10.2-install-d1.iso Password: You do not have enough space in '/dev/shm' for the 512 MB of QEMU virtual RAM. To have more space available provided you have enough RAM and swap, do as root: umount /dev/shm mount -t tmpfs -o size=528m none /dev/shm qemu exited: vdeq quits
Solution
# umount /dev/shm ; mount -t tmpfs -o size=528m none /dev/shm
Installer un système avec qemu
Remarque : il manque les exemples de lignes de commande
On peut soit utiliser un cdrom, soit une image iso du cd. Dans ce cas on utilise l'option -cdrom monfichier.iso et l'option -boot d pour démarrer dessus.
Pour windows 2000, il faut ajouter l'option -win2k-hack pour (et seulement pour l'installation)
Exemple avec un autre linux
Boot
sudo vdeq /usr/local/bin/qemu -hda slack.img -m 256 -localtime -cdrom slackware-10.2-install-d1.iso -boot d
Partitionnement
Installation en cours...
Redémarrage
sudo vdeq /usr/local/bin/qemu -hda slack.img -m 256 -localtime -boot c
Après un passage via LILO, ça boote !!!
Et voilà :
XFCE sous Slackware 10.2, kernel 2.4.31, sous Ubuntu Dapper 2.6.15 avec la télé via VLC
Un problème, une question ?
Si vous essayez mais que ça ne fonctionne pas, je ne garantis pas de répondre rapidement mais vous pouvez toujours poser vos questions sur le forum de rotomalug




