View previous topic :: View next topic |
Author |
Message |
kopp Advocate
Joined: 09 Apr 2004 Posts: 2885 Location: Grenoble, France
|
Posted: Sat Dec 03, 2005 3:42 pm Post subject: [miniHowto] Qemu |
|
|
Introduction :
Voilà, recemment, Trevoke a parlé d'une distrib encore pire que LFS, du coup il a été vaguement evoqué le sujet de l'émulation de machine pour l'installation, et donc l'utilisation d'un logiciel libre : Qemu.
Je propose donc un petit guide histoire de simplifier l'installation et l'utilisation de Qemu.
Dernière màj : 25/02/06
23/12/05 : ajout de l'astuce de Domix pour la redirection des ports réseaux
25/02/06 : changement de l'utilisation du son dans la version 0.8 de Qemu
I - Installation
Les versions les plus récentes sont masquées, il est donc nécessaire de les démasquer :
Code: | # echo "app-emulation/qemu ~x86" >> /etc/portage/package.keywords
# echo "app-emulation/qemu-softmmu ~x86" >> /etc/portage/package.keywords
# echo "app-emulation/qemu-user ~x86" >> /etc/portage/package.keywords |
Voilà, en plus de ça, il existe un module permettant d'améliorer les performances de qemu. Seulement, ce module n'est pas libre, donc pour les inconditionnels du logiciel libre, qui ont un autel dédié à RMS dans leur chambre, vous pouvez passer votre chemin, sinon pour les autres, il suffit de rajouter le USE-flag kqemu :
Code: | # echo "app-emulation/qemu-softmmu kqemu" >> /etc/portage/package.use |
Rem : le flag sdl joue aussi un role pour qemu-softmmu, vous pouvez l'activer s'il ne l'est pas déjà.
Ensuite, il suffit d'installer :
Pour ceux qui ont choisi d'utiliser le module d'acceleration, il faut faire ceci en plus :
D'abord, charger le module en lui donnant l'appartenance root:qemu
Code: | # modprobe kqemu major=0 |
Si vous voulez que ça se fasse automatiquement au boot :
Code: | # echo "kqemu major=0" >> /etc/modules.autoload.d/kernel-2.6 |
Il faut ensuite créer la device node :
Code: | # mknod /dev/kqemu c 250 0 |
Si vous voulez pouvoir utiliser le module d'accéleration en tant qu'utilisateur :
Code: | # gpasswd -a user qemu | où user est votre nom d'utilisateur.
A noter : il existe un accélérateur libre : Qvm86
Malheureusement, il n'y a pas d'ebuild dans Portage.
II - Utilisation
Voilà, qemu est installé. Pour l'utilisation, l'avantage est de pouvoir utiliser des disques fictifs. Pour cela, il suffit de créer une image disque qui pourra être utilisée comme disque dur virtuel.
Code: | qemu-img create -f qcow imagedisque.img size | où size est à remplacer par la taille que vous voulez attribuer, par exemple 3G pour 3 gigaoctets
Dans le cas où vous avez créer une image de type raw (à la place de qcow), vous pouvez ensuite gérer cette image comme un disque, avec l'aide de fdisk par exemple :
Code: | fdisk imagedisque.img |
et ainsi créer votre table de partition dessus.
(Merci Enlight pour la remarque)
Ensuite, il suffit de lancer l'émulateur.
Si vous voulez lancer qemu comme si la machine démarrer sur ce disque virtuel :
Code: |
qemu -hda imagedisque.img -boot c |
(l'option -enable-audio est là pour rajouter l'émulation du son)
Si vous avez une image iso d'un CD d'installation par exemple, et donc que vous voulez démarrer l'installation depuis cette image sur votre image disque :
Code: | qemu -hda imagedisque.img -cdrom image_cd.iso -boot d |
Si vous voulez faire pareil, mais avec un cd réel dans votre lecteur :
Code: | qemu -hda imagedisque.img -cdrom /dev/cdrom -boot d |
Pour une disquette :
Code: | qemu -hda imagedisque.img -fda /dev/fd0 -boot a |
Si vous voulez démarrer à partir du disque virtuel, mais en ayant le cd (virtuel ou pas) inséré dans le lecteur de la machine virtuelle, il suffit de remplacer le paramètre de l'option -boot :
Code: | qemu -hda imagedisque.img -cdrom /dev/cdrom -boot c |
On peut bien entendu démarrer avec une disquette virtuelle ET un cd virtuel, de même qu'on peut rajouter des disques virtuels avec -hdb et -hdd (Attention, il faut choisir entre -cdrom et -hdc, c'est soit l'un, soit l'autre)
Pour augmenter les performances, si vous possédez assez de RAM (au moins 512Mo), vous pouvez préciser une taille de ram virtuelle plus grande, en passant l'option -m
exemple : Code: | qemu -boot c -hda imagedisque.img -m 192M | On aura là un système virtuel avec 192Mo de ram.
Pour utiliser le son, il faut utiliser l'option -soundhw et préciser quelle carte on veut émuler.
listera toutes les cartes émulables disponibles
Code: | qemu -soundhw \?
Valid sound card names (comma separated):
sb16 Creative Sound Blaster 16
es1370 ENSONIQ AudioPCI ES1370
-soundhw all will enable all of the above |
Ensuite, il suffit d'en choisir une en la nommant, ou toutes en utilisant all
Code: | qemu -hda imagedisque.img -soundhw es1370 |
Si on veut en utiliser plusieurs, il faut les séparer d'une virgule : sb16,es1370
III - Extras
* Contribution de DomiX
Vous avez la possibilité de redirigée des ports de la machine hôte vers la machine virtuelle, ce qui permet des connections par ssh par exemple.
Cela se fait en rajoutant l'option -redir protocole:port_hôte:port_virtuelle
Par exemple si on veut accèder à ssh port 22 de la machine virtuelle par le port 2222 de la machine hôte :
Code: | qemu -hda imagedisque.img -boot c -redir tcp:2222:22 |
Voilà, c'en est tout pour ce mini guide, en tous cas pour le moment.
J'essaierai d'ajouter des infos sur les autres utilisations possibles.
En attendant, n'oubliez pas man qemu.
Remarques : chez moi il arrive que l'utilisation du modules d'acceleration ne soit pas très stable, j'ai eu plusieurs crash.
Sinon, on peut s'en servir pour installer des OS ça marche très bien, mais attention, c'est pas ultra-rapide !
kopp
Last edited by kopp on Sat Feb 25, 2006 3:04 pm; edited 4 times in total |
|
Back to top |
|
|
Leander256 l33t
Joined: 05 Jul 2003 Posts: 910 Location: Singapour
|
Posted: Sat Dec 03, 2005 4:10 pm Post subject: Re: [miniHowto] Qemu |
|
|
Une petite remarque concernant :
kopp wrote: | Il faut ensuite créer la device node :
Code: | # mknod /dev/kqemu c 250 0 |
|
Normalement /dev/kqemu est créé lors du chargement du module, tu n'as pas besoin de cette étape. Ou alors c'est uniquement quand tu charges ton module lors du boot ? Mais tant que udev est démarré avant, tu ne devrais pas avoir besoin de créer ce fichier.
Sinon je l'ai testé récemment, et ma foi c'est relativement rapide, par contre une bonne chose lorsqu'on a de la RAM en rab (genre 512 Mo au moins) et qu'on installe un windows 2000 (ou supérieur) c'est d'augmenter la taille de la mémoire virtuelle de qemu, parce que 128 Mo c'est léger et qemu en arrive rapidement à utiliser /tmp comme "swap" (et ça rame). La procédure est décrite dans la doc de qemu |
|
Back to top |
|
|
kopp Advocate
Joined: 09 Apr 2004 Posts: 2885 Location: Grenoble, France
|
Posted: Sat Dec 03, 2005 4:31 pm Post subject: |
|
|
Bah chez moi j'ai eu un problème avec la node, il a fallu que je la crée comme ça... donc voilà
Au pire ça fait pas de mal.
Exact pour la mémoire virtuelle en rab, j'sais pas pourquoi ça m'est sorti de l'esprit quand j'ai fait ça, alors que je m'en sers !
je vais changer ça de suite. |
|
Back to top |
|
|
Enlight Advocate
Joined: 28 Oct 2004 Posts: 3519 Location: Alsace (France)
|
Posted: Sun Dec 04, 2005 1:39 am Post subject: |
|
|
Aaaaaaaaaaaaahhhh mille mercis!!!!!!!!!!!!!!!!! Je l'attendais impatiamment celui-là et j'étais étouffé par ma flemme donc vraiment pas envie de googleiser.
edit :
Quote: | En attendant, n'oublier pas man qemu. |
s/oublier/oubliez |
|
Back to top |
|
|
kopp Advocate
Joined: 09 Apr 2004 Posts: 2885 Location: Grenoble, France
|
Posted: Sun Dec 04, 2005 11:32 am Post subject: |
|
|
Oui bon ok, j'ai pas gagné les dicos d'or...
Ah je savais bien que ça interesserait quelques fénéants ... faut dire que c'était pas très très long pour trouver comment tout marche...
Bon, maintenant tu n'as plus d'excuse pour ne pas installer Dettux [/url] |
|
Back to top |
|
|
anigel Bodhisattva
Joined: 14 Apr 2003 Posts: 1894 Location: Un petit bled pas loin de Limoges ;-)
|
Posted: Sun Dec 04, 2005 12:43 pm Post subject: |
|
|
Merci kopp !
Malgré quelques fautes (de frappe, j'en suis sûr ), c'est bien écrit, bien expliqué, et très bien mis en page Presque parfait quoi _________________ Il y a 10 sortes d'individus en ce bas-monde : ceux qui causent binaire, et les autres. |
|
Back to top |
|
|
lbr Guru
Joined: 05 Apr 2004 Posts: 503 Location: Paris
|
Posted: Thu Dec 08, 2005 9:50 am Post subject: |
|
|
Merci
Arrives-tu à faire tourner OOo2 ou un PPT par exemple ? Chez moi ca rame à mort ... |
|
Back to top |
|
|
kopp Advocate
Joined: 09 Apr 2004 Posts: 2885 Location: Grenoble, France
|
Posted: Thu Dec 08, 2005 6:03 pm Post subject: |
|
|
Je n'ai pas essayé openoffice mais étant donné que c'est un gouffre à mémoire... tout est dit!
As tu passé l'option -m avec par exemple 256 en paramètre ?
Enfin, faut voir que c'est de l'émulation, donc tu n'arrivera pas aux performances originales... |
|
Back to top |
|
|
DomiX Apprentice
Joined: 26 Oct 2003 Posts: 209 Location: Paris (FRANCE)
|
Posted: Sat Dec 10, 2005 6:08 pm Post subject: |
|
|
Bonjour,
Je tiens à signaler que l'option -redir est super convi lorsque l'on veut accéder à un service dans la machine virtuelle comme ssh.
Voici un exemple, si vous voulez accéder au service ssh lancé sur le port 22 dans la machine virtuelle et accessible via le port 2222 à partir de votre "vraie" machine:
Code: | qemu -cdrom /dev/hdc -boot d -redir tcp:2222::22 |
Et pour y accéder à partir de votre "vraie" machine:
Code: | ssh -p 2222 user@localhost |
Comme d'habitude pour plus d'information sur cette option man qemu
Bye _________________ "La connaissance technique ne suffit pas. On doit surpasser les techniques de sorte que l'art devienne un art sans artifice qui apparaît de l'inconscient."
- Daisetsu Suzuki (1870-1966) - |
|
Back to top |
|
|
Enlight Advocate
Joined: 28 Oct 2004 Posts: 3519 Location: Alsace (France)
|
Posted: Sat Dec 17, 2005 10:59 pm Post subject: |
|
|
qemu-img create -f qcow imagedisque.img size Quote: |
juste un chtit bug-report, en fait si tu fais une image formattée qcow, pas de fdisk dessus, faut formater en raw pour ça. |
|
|
Back to top |
|
|
kopp Advocate
Joined: 09 Apr 2004 Posts: 2885 Location: Grenoble, France
|
Posted: Fri Dec 23, 2005 6:48 pm Post subject: |
|
|
Ok Enlight, mais étrange, il me semblait avoir fait un fdisk sur ma partition qcow, mais maintenant j'ai un doute...
Sinon, merci DomiX pour l'astuce très pratique.
Désolé j'ai été un peu lent à intégrer vos remarques... la flemme d'avant les vacances
Sinon, la version 0.8 de Qemu vient de sortir, mais elle n'est pas encore disponible dans Portage...Il faudra attendre encore un peu...
edit (23/12/05 8pm) : voilà, j'ai bien check juste avant de faire la maj pour être sur de pas dire de bêtise sur la version 0.8.0... et bien là j'y retourne voir et zou, il vient d'être ajouter
j'ai l'impression qu'on se moque de moi!!! |
|
Back to top |
|
|
Poischack Apprentice
Joined: 23 Mar 2005 Posts: 275 Location: (FR) Colmar
|
Posted: Tue Dec 27, 2005 2:25 pm Post subject: |
|
|
Bonjour,
j'ai une petite question est-ce que qemu sait gérer l'USB et le boot USB ?
je suis en trian de me faire une petite distribution sur clé USB mais redémarrer à chaque fois pour tester les changements
J'ai regardé chez vmware: support de l'USB mais il n'est pas possible de booter dessus.
Edit:
ce que j'aurais du faire avant tout c'est aller sur le site officiel plutot que sur google
Quote: |
QEMU version 0.8.0 is out (Changelog).
Initial USB support.
|
Je vais voir mais je doute que le boot soit géré. |
|
Back to top |
|
|
kopp Advocate
Joined: 09 Apr 2004 Posts: 2885 Location: Grenoble, France
|
Posted: Tue Dec 27, 2005 6:07 pm Post subject: |
|
|
Et bien je dirai qu'il suffit d'indiquer comme disque dur le /dev correspondant à ta clef usb..;
genre (ou peut-être la partition je en sais pas...)
Après si tu veux que ce soit vraiment considéré comme une clé usb, faudrait regarder plus en profondeur.
edit :
Sinon, à ce que je comprends, tu ne peux pas la considerer réellement comme une clef usb et faire booter ta machine virtuelle sur clef usb. Ce qu'on peut faire, c'est lorsqu'on branche un périphérique usb, on peut le faire interpreter par la machine virtuelle comme étant un périphérique connectée à la machine virtuelle... mais à priori après le démarrage de l'OS...
Il semble donc que ma première solution soit la bonne ... |
|
Back to top |
|
|
Poischack Apprentice
Joined: 23 Mar 2005 Posts: 275 Location: (FR) Colmar
|
Posted: Tue Dec 27, 2005 6:55 pm Post subject: |
|
|
Genial c'est exactement ce qu'il me fallais merci. |
|
Back to top |
|
|
kopp Advocate
Joined: 09 Apr 2004 Posts: 2885 Location: Grenoble, France
|
Posted: Tue Dec 27, 2005 9:08 pm Post subject: |
|
|
ah oui, si tu veux quand meme pouvoir tester des trucs genre installation sur un disque dur etc, tu peux bien sur preciser un autre fichier image avec l'option -hdb et meme -hdd si nécessaire (-hdc est à éviter en cas d'utilisation de l'option -cdrom)
donc, Code: | qemu -hda /dev/sda -hdb fichier.img | et zou! |
|
Back to top |
|
|
BuBuaBu l33t
Joined: 09 Jul 2005 Posts: 914 Location: France
|
Posted: Sun Feb 19, 2006 2:01 pm Post subject: |
|
|
La commande pour l'audio a changer :
Il ne faut plus metre -enable-audio mais -soundhw carte_a_utiliser
carte_a_utiliser pouvant etre all dans le cas où on veu utilisé toute les cartes son dispo. |
|
Back to top |
|
|
kopp Advocate
Joined: 09 Apr 2004 Posts: 2885 Location: Grenoble, France
|
Posted: Sat Feb 25, 2006 3:04 pm Post subject: |
|
|
Merci pour la remarque BuBuaBu. C'est intégré. |
|
Back to top |
|
|
kwenspc Advocate
Joined: 21 Sep 2003 Posts: 4954
|
Posted: Fri Mar 03, 2006 7:42 pm Post subject: |
|
|
Pour monter une image disque vous pouvez utiliser cette commande :
Code: |
mount -t <TYPE_FS> <IMAGE> <POINT_DE_MONTAGE> -o loop,offset=32256
|
enfin sinon nickel ce ptit howto.
(y a moyen d'avoir l'usb aussi avec l'option -usb, enfin perso chez moi ça fonctionne qu'à demi, j'ia bien les devices mais certains périfs usb ne semblent pas etre detecté...bref) _________________ membre officieux du SAV Ati GEntoo |
|
Back to top |
|
|
kopp Advocate
Joined: 09 Apr 2004 Posts: 2885 Location: Grenoble, France
|
Posted: Fri Mar 03, 2006 8:43 pm Post subject: |
|
|
Oui l'usb n'a pas l'air encore totalement fonctionnel.
Pour ton histoire de montage, comment on fait lorsque cette image a des partitions ?
Enfin, n'ayant pas le loop device, ça veut pas trop monter chez moi.
J'avais promis de travailler ce guide plus en profondeur, il faudrait... |
|
Back to top |
|
|
kwenspc Advocate
Joined: 21 Sep 2003 Posts: 4954
|
Posted: Fri Mar 03, 2006 8:53 pm Post subject: |
|
|
ah ça je sais pas pour les partitions. perso je préfère travailler avec plusieurs disques (via -hda, -hdb etc...) _________________ membre officieux du SAV Ati GEntoo |
|
Back to top |
|
|
Enlight Advocate
Joined: 28 Oct 2004 Posts: 3519 Location: Alsace (France)
|
Posted: Fri Mar 10, 2006 9:37 pm Post subject: |
|
|
kwenspc wrote: | Pour monter une image disque vous pouvez utiliser cette commande :
Code: |
mount -t <TYPE_FS> <IMAGE> <POINT_DE_MONTAGE> -o loop,offset=32256
|
enfin sinon nickel ce ptit howto.
(y a moyen d'avoir l'usb aussi avec l'option -usb, enfin perso chez moi ça fonctionne qu'à demi, j'ia bien les devices mais certains périfs usb ne semblent pas etre detecté...bref) |
ça ça marche pour la première primaire lorsque les secteurs font 512Mo, je donnerai les formules de calcul sous peu (le temps de jouer encore un peu avec sfdisk).
par contre je ne savais pas que mount savait appliquer un offset, j'utilise un loop_device par partition perso. |
|
Back to top |
|
|
BuBuaBu l33t
Joined: 09 Jul 2005 Posts: 914 Location: France
|
Posted: Thu Mar 16, 2006 7:12 pm Post subject: |
|
|
kwenspc wrote: |
(y a moyen d'avoir l'usb aussi avec l'option -usb, enfin perso chez moi ça fonctionne qu'à demi, j'ia bien les devices mais certains périfs usb ne semblent pas etre detecté...bref) |
Tu peu préciser comment tu fait ? La doc officielle ne m'aide pas beaucoup (enfin je la capte pas quoi...). |
|
Back to top |
|
|
BuBuaBu l33t
Joined: 09 Jul 2005 Posts: 914 Location: France
|
Posted: Fri Mar 17, 2006 2:47 pm Post subject: |
|
|
BuBuaBu wrote: | kwenspc wrote: |
(y a moyen d'avoir l'usb aussi avec l'option -usb, enfin perso chez moi ça fonctionne qu'à demi, j'ia bien les devices mais certains périfs usb ne semblent pas etre detecté...bref) |
Tu peu préciser comment tu fait ? La doc officielle ne m'aide pas beaucoup (enfin je la capte pas quoi...). |
Finalement j'ai reussi, il faut pour avoir le support de l'usb :
lancé qemu avec l'option -usb et -monitor dev où dev est la console où on veu discuter avec qemu.
Dans cette console on va pouvoir taper :
info usbhost ce ui va donner la liste des periph USB
et ensuite add_usb host:1234:5678 ou 1234:5678 est l'adresse de votre periph usb vu dans la liste précédente. |
|
Back to top |
|
|
synss Apprentice
Joined: 08 Mar 2006 Posts: 282 Location: Dijon > Berlin > Tokyo > Nürnberg > München
|
Posted: Mon Mar 27, 2006 4:50 pm Post subject: |
|
|
juste au passage, il est dangereux d'utiliser
Code: | qemu -hda /dev/sda1 |
sur une partition montee
Code: | qemu -snapshot /dev/sda1 |
est mieux
Pour avoir le reseau ds la machine hote, la seule explication claire et simple que j'ai trouvee est dans le forum en allemand. Un truc avec le module "tun" dans le kernel etc. C'est possible mais pas simple.
dans qemu 0.8, -usb est l'option par defaut
je crois que monter /tmp en tmpfs aide beaucoup.
Mais la, je suis au boulot sous windows 2000 pro alors je resterai dans le vague...
Les machines hote et virtuelle peuvent communiquer via samba.
le format qcow est compresse (un fichier foo.raw 1G occupe 1G sur la machine hote ; un fichier foo.qcow 1G n'occupe que la taille des donnees de la machine virtuelle, i.e. si le disque virtuel est plein a 50%, le fichier foo.qcow pesera 0.5G)
MAIS
1. il n'est pas possible de monter un fichier qcow avec mount -o loop
2. fdisk foo.qcow n'a pas vmt de sens (corrigez moi si je me trompe)
et
qemu-img peut convertir d'un format vers un autre |
|
Back to top |
|
|
synss Apprentice
Joined: 08 Mar 2006 Posts: 282 Location: Dijon > Berlin > Tokyo > Nürnberg > München
|
Posted: Sat Jun 24, 2006 11:03 pm Post subject: |
|
|
Pour le reseau, avec qemu 8.1: zgrep TUN /proc/config.gz: | CONFIG_TUN=m |
iptables-save: | [...]
-A FORWARD -d 10.0.2.5 -j ACCEPT
-A FORWARD -s 10.0.2.5 -j ACCEPT
[...] |
Et ca marche.
La machine virtuelle (VM) est configuree par defaut pour chercher une gateway a l'adresse IP 10.0.2.5
donc dans la machine hote, il suffit de rediriger les paquets envoyers par la VM (10.0.2.2) a sa gateway (10.0.2.5) vers la veritable connection internet de l'hote.
Il faut aussi lire la doc de Fabrice Bellard. C'est particulierement interessant. Il a implemente un moyen tres simple de faire passer des fichiers vers une VM windows avec Code: | qemu winxp.img -fda fat:floppy:/my_directory | . Windows va prendre votre repertoire "my_directory" pour une disquette formatee en FAT, et donc lisible.
Et autre choses interessantes. _________________ Compress portage tree
Elog viewer
Autodetect swap |
|
Back to top |
|
|
|