Qemu est un outil de virtualisation / emulation multi-architecture …
En gros vous pouvez emuler un PC, un mac, une machine de type SPARC … etc
Ici on n'aime pas cliquer 154 fois avec la souris pour lancer une nouvelle machine virtuelle … On aime bouffer des lignes … de commandes.
Qemu peut être utilisé avec une interface graphique mais bon … pour bien savoir où on va et ce qu'on fait … mieux vaut un bon vieux terminal
Qemu est tellement puissant … que Vmware (et donc vmplayer aussi) mais aussi virtualbox utilise le code source de qemu.
Vous n'avez pas envie d'installer en dur que vous soyez sur windows ou linux, qemu est pour vous.
2 types d'installation sont possibles :
- Package - Sources
A l'aide des packages :
sudo apt-get install qemu kqemu-*
A l'aide des sources :
Ils vous faut évidement les outils gcc de compilation
sudo apt-get install gcc build-essential
une fois ces outils installés il vous faut les sources de qemu :
wget http://fabrice.bellard.free.fr/qemu/qemu-0.9.1.tar.gz
tar -zxvf qemu-0.9.1.tar.gz
cd qemu-0.9.1
./configure
make
sudo make install
Theoriquement si vous n'avez pas eu de message d'erreur … qemu est installé.
EN PLUS
qemu est assez lent mais ne vous inquiétez pas il existe un outil qui fonctionne très bien pour accélerer le tout : kqemu dont je parlerai plus loin
Pour l'installer depuis les sources :
wget http://fabrice.bellard.free.fr/qemu/kqemu-1.3.0pre11.tar.gz
tar -zxvf kqemu-1.3.0pre11.tar.gz
cd kqemu-1.3.0pre11.tar.gz
./configure
make
sudo make install
Maintenant que qemu est installé avec son “outil accélérateur”, nous allons prendre plusieurs exemples pour montrer les possibilité de ce dernier.
2 possibilté = Une image ISO ou un Vrai CD dans le lecteur Une image ISO :
/usr/bin/qemu -cdrom /répertoire_de_votre_image/votre_image.iso
Un CD ROM:
/usr/bin/qemu -cdrom /dev/hda
# ou hda est votre device cdrom
Vous avez envie, après avoir testé le live cd, d'installer en semi-dur votre système, il vous faudra un disque virtuel :
2 possibilités = dd ou qemu-img
dd:
dd est un outil super puissant qu'il fait utiliser en faisant très très attention :
dd of=nom_image_disque bs=1024 seek=2000000 count=0
nom_image_disque : le nom de votre image de disque ex: winxp.iso bs = la taille des clusters (vous pouvez passer 512, 1024 … si vous ne savez pas ce que vous faites laissez 1024) seek = le nombre de cycles … donc la taille en octets, ici 2 giga octets
qemu-img
qemu-img create hd.img 2G
hd.img = le nom de votre disque virtuel 2G = La taille en giga octets
Une fois que notre image disque est créée nous allons passer à ce qui va nous aider à installer un système sur notre machine virtuelle :
qemu -hda /répertoire_de_votre_image/votre_image_disque.iso -cdrom /répertoire_de_votre_image/votre_image_cd.iso -m 256 -boot d -localtime -k fr -soundhw all -usb
-hda /répertoire_de_votre_image/votre_image_disque.iso : hda permet d'indiquer où se trouve votre image de disque -cdrom /répertoire_de_votre_image/votre_image_cd.iso : cdrom permet d'indiquer ou se trouve votre image iso ( ou indiquer la device cdrom ex: /dev/hda)
-m 256 : Indique la quantité de mémoire vive que vous voulez qu'utilise qemu
-boot d : IMPORTANT = Indique sur quel périphérique qemu doit bouter ⇒ d indique le cdrom et c indique le disque dur
-localtime : Indique quelle horloge il doit utiliser, ici l'horloge machine
-k fr : Indique quel type de clavier, ici Français (c'est mieux non ?)
-soundhw all : Indique quel son il doit transferer sur vos HP, ici tous les sons systèmes de votre machine virtuelle seront redirigés sur vos HP.
-usb : Le périphérique usb peut être utiliseé mais doit être paramétré avant :
Si vous n'avez pas le fichier /proc/bus/usb/devices, utilisez la commande suivante :
sudo mount -t usbfs none /proc/bus/usb
Ensuite, utilisez la commande suivante, pour que qemu puisse prendre le controle des périphériques usb :
sudo chown votre_nom_utilisateur -R /proc/bus/usb
Lancez qemu en rajoutant sur la ligne de commande ”-usb” et “usbdevice host:<vid>:<pid>”
<vid>:<pid> s'obtient à partir de la commande
lsusb
Une fois que vous avez installé votre système sur votre image disque, lancez cette ligne après avoir arrêté qemu :
qemu -hda /répertoire_de_votre_image/votre_image_disque.iso -m 256 -boot c -localtime -k fr -soundhw all -usb
-hda [image] ou -hda [périphérique] Sert à spécifier l'image de disque dur qui va servir pendant l'émulation; il peut aussi s'agir d'un périphérique ou d'une partition, comme /dev/hda1. Il y a aussi -hdb, -hdc, -hdd, pour simuler d'autres partitions, mais on ne peut pas utiliser -hdc en même temps que -cdrom. L'utilisation de partitions “réelles” présente des risques pour le disque dur, préférez les images.
-cdrom [image] ou -cdrom [périphérique] même chose que précédemment, mais là il est question du cdrom. Le périphérique peut être un lien (/dev/cdrom) ou sa cible (/dev/hdc) ; -cdrom peut utiliser n'importe quel hdX qui correspond à un lecteur cédérom qui contient un cédérom mais qui n'est pas monté.
-fda [image] ou -fda [périphérique] comme pour -cdrom, version disquette, et il y a aussi -fdb, et donc certainement la possibilité d'utiliser 2 lecteurs de disquettes.
-boot X où X peut être a (floppy ou image), c (partition virtuelle), ou d (lecteur CD ou image), soit le périphérique sur lequel on va démarrer. Si l'on n'utilise qu'un seul périphérique (voir options précédentes), cette option est inutile.
-enable-audio permet le support du son en émulant une carte-son SB16. Cela pose quelques problèmes avec l'OS de Bill, qui, suivant les versions, peut avoir des soucis avec cette carte.
-m [memoire] permet de spécifier la quantité de mémoire vive pour le système émulé; ne mettez pas la taille totale de votre mémoire car il faut en laisser pour le système hôte. Par défaut, cette valeur est de 128.
-k [lang] (à partir de Qemu 0.6.1) précise le schéma du clavier: en-gb, en-us, fr, fr-ca, fr-be, fr-ch,…etc. Par défaut, c'est en-us, mais une fois le système émulé lancé, c'est lui qui choisira le schéma (sauf pour les consoles virtuelles de Qemu).
-snapshot pour écrire dans un fichier temporaire, au lieu d'une partition ou d'une image disque.
-nographic désactive l'interface graphique, la sortie devenant la console où a été lancé Qemu, c'est utile pour les systèmes en mode texte (Linux texte, Msdos…).
-full-screen l'option parle d'elle même
Par défaut, le réseau de l'OS invité transitera sur l'hôte par le biais de l'interface /dev/net/tun0; toutefois, ce n'est pas le procédé le plus simple, car celle-ci n'est pas forcément présente sur le système et la créer peut nécessiter une compilation du noyau (rarement avec les distributions récentes). Je lui préfèrerai donc, pour plus de compatibilité, le mode “user”:
-net user active le mode “user” pour le réseau; Qemu se comporte comme un serveur DHCP, qui attribue au système émulé l'adresse 10.0.2.15; ce système se connecte via une passerelle virtuelle à 10.0.2.2, et le DNS est à 10.0.2.3. L'inconvénient de ce procédé est que le système invité “voit” l'hôte, mais pas l'inverse. Attention, Microsoft Windows ne trouve pas toujours le serveur DHCP, il vaudra mieux le configurer avec une IP fixe.
-smb [dossier] permet à l'invité d'accéder à un dossier partagé sur l'hôte, qui devra être équipé d'un serveur Samba; l'adresse de ce serveur pour l'invité est 10.0.2.4.
-tftp [préfixe] active un serveur TFTP à l'adresse 10.0.2.2.
Il est aussi possible d'utiliser des raccourcis clavier, pour accéder à des fonctions supplémentaires:
ctrl-alt-f: passe en plein-écran. ctrl-alt-1: affichage graphique de l'invité. ctrl-alt-2: passage au moniteur Qemu; attention, dans ces deux options, le 1 et le 2 sont à taper sur les chiffres hauts du clavier, pas sur le pavé numérique. ctrl-alt: pour arrêter le contrôle de la souris dans l'invité, alors que pour l'activer, on avait cliqué dans la fenêtre de Qemu.
Le moniteur propose quelques commandes supplémentaires:
info affiche une liste des sous-rubriques d'informations. eject [périphérique amovible] éjecte un CD ou une disquette; on peut ajouter l'option -f pour forcer l'éjection.
change [périphérique ou image] permet de changer de média amovible, périphérique ou image.
q ou quit pour quitter Qemu (sans arrêter l'OS émulé proprement).
Comment utiliser le module kqemu, qui permet d’accélérer Qemu…
Une fois installé, le lancement de qemu (même via qemu-launcher) devrait charger le module. Pour le vérifier on utilise la commande /sbin/lsmod.
Si le module est chargé il devrait se créer un périphérique du nom de /dev/kqemu.
- Utiliser la mémoire partagée (shm) si vous avez beaucoup de ram comme suit :
umount /dev/shm
mount -t tmpfs -o size=528m none /dev/shm
528 ou plus si vous le voulez
afin d’allouer 528 Mo de votre ram à la mémoire partagée.
- Enfin, augmenter votre fréquence rtc (real time clock) via la commande
echo 1024 > /proc/sys/dev/rtc/max-user-freq