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

  • la documentation du projet [1]
  • la doc de lea-linux [2]


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

Slack1.png


Partitionnement

Slack2.png


Installation en cours...

Slack3.png

Redémarrage

sudo vdeq /usr/local/bin/qemu -hda slack.img -m 256 -localtime -boot c

Après un passage via LILO, ça boote !!!

Slack4.png


Et voilà :

XFCE sous Slackware 10.2, kernel 2.4.31, sous Ubuntu Dapper 2.6.15 avec la télé via VLC

Slack5.png

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

Outils personnels