Sommaire |
Par David Roux, avec la collaboration de Joël Tarlao et Alain Rivest, relu et complété par Erwan Velu
Voici un petit guide pour utiliser Qemu facilement
Dans le monde des émulateurs, Qemu a actuellement le vent en poupe, et nombreux sont ceux qui l'ont adopté pour faire tourner les applications indisponibles pour leur système d'exploitation. Dans notre cas, on appréciera de pouvoir utiliser des logiciels conçus pour Microsoft Windows ou Mac OS sous Linux, mais il sera également possible de faire l'inverse. Son autre avantage est qu'il peut émuler plusieurs architectures, du x86 au PowerPC en passant par le Sun-SPARC, ce qui permet de lancer une foule d'OS différents. De plus, il est important de signaler que Qemu est disponible sous licence GNU LGPL. Pour en savoir plus, le mieux est d'aller faire un tour ici; quand à nous, rentrons dans le vif du sujet...
| Rappel : si votre distribution contient un paquetage pour qemu, préférez utiliser ce paquetage plutôt que les sources. Certains puristes prétendrons qu'utiliser les sources c'est l'esprit Linux, mais ce sont surtout des problèmes de dépendances non gérées, des choix par forcément simple à faire sur l'utilisation de telle ou telle fonctionnalité du logiciel que l'on désire compiler.
Pour vérifier que votre distribution contient un paquetage pour qemu, il faut utiliser l'outil de gestion de paquetage de celle-ci. Par exemple :
Votre distribution contient aussi presque surement un outil graphique pour obtenir cette information. Pour plus d'information sur ces questions, consulter cette documentation. |
Il est également préférable d'utiliser la dernière version de QEMU, (0.7.2 au moment de la rédaction de ces lignes) qui doit être disponible en format deb pour testing et RPM pour Mandriva LE 2005-2006. On peut également la trouver la version 0.7.0 dans les branches "unstable" des distributions Linux (Sid, Cooker...). Quoiqu'il en soit, l'installation par cette méthode (urpmi, apt-get,...etc) ne devrait pas poser de problème.
Cependant, pour les possesseurs de machines PC (architecture i386), ce serait passer à côté d'un formidable accélérateur de performance : Kqemu, un module du noyau que Fabrice Bellard souhaite rentabiliser avant de le libérer. Il n'est donc pas libre et vous ne le trouverez pas dans vos distributions. Selon les machines, le gain va de 200% à 600% !!!!! Mais il faut compiler à la main :
La compilation passe par les traditionnels
./configure make # make install
Cependant, la version 0.7.2 ne peut se compiler qu'avec gcc-3.xx alors que la plupart des distributions acutelles sont en GCC-4 (gcc est le compilateur). La coexistence des 2 gcc ne pose généralement pas de problèmes. Donc :
Installer gcc-3.3
extraire qemu. Extraire kqemu en étant dans le répertoire de qemu.
préciser le compilateur utilisé :
./configure --cc=gcc-3.3.6 make
Ici, il peut y avoir un soucis, car votre noyau risque de ne pas être compilé avec ce GCC là... et donc le système refusera de mettre en mémoire le module Kqemu. Il faut donc compiler le module avec gcc 4 :
make cleanmake
ensuite vous pouvez installer le tout :
Il faut ensuite faire quelques manipulations pour créer un périphérique un peu particulier :
modprobe kqemu mknod /dev/kqemu c 250 0 chmod 666 /dev/kqemu
Ceci peut être placé dans un fichier pour être effectué au lancement du système : dans /etc/rc.local par exemple.
Pour les dépendances de Qemu 0.6.1, vous aurez besoin des paquets suivants: libc6 (>=2.3.2-ds1-4), libsdl (>=1.2), zlib1g (>=1.1.2.1), vgabios (>=0.4c), bochsbios (>=2.1.1). Les noms des paquets peuvent varier suivant les distributions.
On va se faire la main avec un truc tout simple, l'émulation d'un système d'exploitation en live-CD. Il ne sera pas nécessaire d'écrire sur le disque dur ni même graver le fichier ISO que l'on vient de télécharger sur un site internet. Dans la suite de cet article, ce fichier ISO s'appelera "live.iso". Pour démarrer cette image iso avec Qemu, Il suffit de se rendre dans le répertoire qui contient l'image et lancer Qemu, en tapant:
cd /home/toto/repertoire_ou_est_l'image_iso
qemu -cdrom live.iso
Il n'est pas nécessaire d'être « root » pour exécuter QEMU, tout peut être fait par un simple utilisateur.
Une fenêtre s'ouvre et le système émulé se lance. Pour utiliser la souris de votre système virtuel, il suffit de cliquer dans la fenêtre d'émulation. Pour libérer la souris de la fênetre d'émulation, il suffit d'appuyer sur les touches 'ctrl' & 'alt' en même temps. Pour le pavé numérique, Qemu le considèrera toujours comme inactif donc il faudra presser la touche "VerrNum". Attention aux mots de passe car on peut se retrouver avec le clavier numérique vérouiller avec le voyant "numlock" éteint !
Si l'on souhaite démarrer sur un vrai céderom, il suffit d'utiliser la syntaxe -cdrom /dev/cdrom . Qemu utilise directement le périphérique bloc, il ne faut donc pas monter le cédérom avant l'éxecution de Qemu.
Le système virtuel peut également accéder au réseau grâce à l'option -user-net : dans ce mode, Qemu utilisera vos interfaces réseaux pour accéder a votre réseau local ou a Internet par exemple. La carte son virtuelle, une carte-son SB16, peut être activée avec l'option -enable-audio. Compte-tenu que le système émulé est tout de même plus lent que lors d'une utilisation normale, et que la charge sur le processeur de l'hôte est importante, faites d'abord un essai avec un live-CD "léger", genre DamnSmall Linux et ce surtout si votre machine n'est pas de la première jeunesse;
Qemu offre par défaut au système émulé 128 Mo de mémoire vive, il faut donc au moins en avoir le double sur la machine hôte (plus, c'est mieux). Pour info, j'ai fait tous ces tests sur un Athlon XP1800+ avec 512 Mo de RAM, et mon processeur tournait à 100% tout le temps: n'essayez pas sur un 486 ;-)
Dans ce mode, Qemu est capable d'utiliser un fichier de votre disque dur et de le transformer en un disque dur virtuel. Pour l'exemple, on installera un Microsoft Windows 98, sur une image de disque dur de 2Go que l'on appelle "hd.img" et située dans un répertoire /home/toto/invite/.
La commande qemu-img permet de créer une image disque de la taille spécifiée mais on aurais pu également le faire avec l'outil dd:
Dans notre répertoire « invite », on placera aussi une image du CD d'installation nommée msw.iso ainsi qu'une image de sa disquette de boot « mswboot.img ».
Cette commande permet donc de demarrer Qemu avec une disquette, un disque dur et un cdrom virtuel correspondant respectivement a la disquette d'amorcage de Microsoft Windows 98, le disque virtuel que l'on a créé et l'image ISO de Windows 98. L'option « boot a » indique que l'on souhaite démarrer le système virtuel depuis le lecteur de disquette virtuel. Il n'est pas nécessaire d'utiliser une disquette d'amorçage si l'image ISO est « amorçable ».
Vous remarquez que j'ai mis des options dont je n'ai pas forcément besoin tout de suite (-cdrom, -user-net), mais comme on va devoir redémarrer notre système virtuel de nombreuses fois pendant l'installation, et donc relancer Qemu, on fera un copier-coller de la commande au lieu de tout retaper. j'ai aussi mis le clavier en français avec -k fr.
L'installation de Windows débute, on va tout d'abord créer notre partition et l'activer avec Fdisk puis on reboot. On formatte ensuite le disque C: puis on reboot a nouveau. Ceci fait partie de la procédure standard d'installation de Windows, ce n'est pas spécifique a Qemu. Attention, le lecteur de cdrom porte parfois la lettre R: (donc pas de panique si ça ne marche pas avec D:). On est arrive ensuite dans la partie graphique de l'installation, je ne rentre pas dans les détails. Au reboot suivant, on relancera le système en partant du disque dur virtuel et non plus à partir de la disquette en remplaçant -boot a par -boot c. Lorsque l'installation est terminée, on a accès au système virtuel avec la commande suivante, toujours en étant dans le répertoire où se trouve l'image-disque:
Pour pouvoir démarrer avec l'option -cdrom /dev/cdrom, assurez vous qu'un céderom est présent dans le lecteur avant le démarrage de Qemu.
J'ai volontairement oublié certaines options que l'on va détailler dans le chapitre suivant.
Si vous souhaitez démarrer le Windows qui se trouve sur le disque dur de votre PC, mais sans quitter Linux, c'est possible ! Tapez la commande suivante :
C'est très pratique quand vous êtes en train de mettre à jour votre chargeur de démarrage (grub, lilo...) afin de tester les modifications, ou bien quand vous souhaitez passer à Linux et que vous souhaitez encore utiliser quelques applications Windows sans redémarrer sous Windows !
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":
Il est aussi possible d'utiliser des raccourcis clavier, pour accéder à des fonctions supplémentaires:
Le moniteur propose quelques commandes supplémentaires:
Avant la version 0.6.1, les raccourcis clavier étaient à base de "ctrl-shift...".Il existe d'autres commandes, il n'a été présenté que celles qui sont réellement indispensables. Pour plus de détails, je vous recommande de lire le très complet manuel de Qemu qui se trouve dans /usr/share/doc/qemu/si vous avez installé un paquet binaire, ou dans /usr/local/share/doc/qemu/ si vous avez installé à partir des sources. Le site officiel propose aussi une FAQ, et un forum. Enfin, les archives de la liste de diffusion de Lea-aide fourmillent de questions et de réponses, qui sont d'ailleurs à la base de cet article.
Si on utilise très souvent Qemu, il peut être pénible de taper toujours la même longue commande. On s'en sort en faisant un script-shell très simple, avec son éditeur de texte favori:
On sauvegarde ce fichier puis on le rend le exécutable. On se fait un raccourci dans son menu, ou sur le bureau, avec le chemin complet du script en guise de commande: on vient de se simplifier la vie. Notez que je charge l'image du CD d'installation, au lieu de penser à mettre un CD dans le lecteur: si j'ai besoin, je pourrais changer via le moniteur de Qemu.
Sachez enfin qu'il existe un module additionnel pour accélérer l'émulation, Kqemu; celui-ci n'est, hélas, pas libre.Il n'est disponible qu'en tar.gz, et doit être placé dans le dossier où l'on a extrait les sources de Qemu avant la compilation de l'ensemble.Il faut préciser que Qemu ne présente normalement aucun risque pour le système hôte, mais vu la charge sur le processeur, je recommande de s'assurer que celui-ci est convenablement refroidi, et éventuellement de surveiller la température avec un utilitaire adéquat (Gkrellm par exemple); mon Athlon prend facilement 5°C dans ce cas, et c'est un modèle plutôt stable: inutile de préciser que c'est à vos risques et périls, vous êtes seul responsable de votre matériel. L'utilisation de Kqemu permet un gain de performance allant jusqu'a X 10 : dans ce contexte, la différence de temps d'exécution entre un OS natif et d'un OS émulé par Qemu est de l'orde de 20%.
Remarque : kqemu est disponible en rpm dans le media plf de la mandriva 2007.
Voilà, j'espère que cet article est assez complet et simple à comprendre: c'était le but recherché.
@ Retour à la rubrique Logiciels
Copyright © 20/05/2005, David Roux
| | Ce document est publié sous licence Creative Commons Attribution, Partage à l'identique, Contexte non commercial 2.0 : http://creativecommons.org/licenses/by-nc-sa/2.0/fr/ |