Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
[miniHowto] Qemu
View unanswered posts
View posts from last 24 hours

Goto page 1, 2  Next  
Reply to topic    Gentoo Forums Forum Index French
View previous topic :: View next topic  
Author Message
kopp
Advocate
Advocate


Joined: 09 Apr 2004
Posts: 2868
Location: Grenoble, France

PostPosted: Sat Dec 03, 2005 3:42 pm    Post subject: [miniHowto] Qemu Reply with quote

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 :
Code:
# emerge qemu


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
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.
Code:
qemu -soundhw ?
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
View user's profile Send private message
Leander256
l33t
l33t


Joined: 05 Jul 2003
Posts: 893
Location: Singapour

PostPosted: Sat Dec 03, 2005 4:10 pm    Post subject: Re: [miniHowto] Qemu Reply with quote

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
View user's profile Send private message
kopp
Advocate
Advocate


Joined: 09 Apr 2004
Posts: 2868
Location: Grenoble, France

PostPosted: Sat Dec 03, 2005 4:31 pm    Post subject: Reply with quote

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
View user's profile Send private message
Enlight
Advocate
Advocate


Joined: 28 Oct 2004
Posts: 3514
Location: Alsace (France)

PostPosted: Sun Dec 04, 2005 1:39 am    Post subject: Reply with quote

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
_________________
le "lol" est aux boulets ce que le ";" est au programmeurs
Back to top
View user's profile Send private message
kopp
Advocate
Advocate


Joined: 09 Apr 2004
Posts: 2868
Location: Grenoble, France

PostPosted: Sun Dec 04, 2005 11:32 am    Post subject: Reply with quote

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
View user's profile Send private message
anigel
Bodhisattva
Bodhisattva


Joined: 14 Apr 2003
Posts: 1880
Location: Un petit bled pas loin de Limoges ;-)

PostPosted: Sun Dec 04, 2005 12:43 pm    Post subject: Reply with quote

Merci kopp !

Malgré quelques fautes (de frappe, j'en suis sûr :lol:), 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
View user's profile Send private message
lbr
Guru
Guru


Joined: 05 Apr 2004
Posts: 503
Location: Paris

PostPosted: Thu Dec 08, 2005 9:50 am    Post subject: Reply with quote

Merci

Arrives-tu à faire tourner OOo2 ou un PPT par exemple ? Chez moi ca rame à mort ...
Back to top
View user's profile Send private message
kopp
Advocate
Advocate


Joined: 09 Apr 2004
Posts: 2868
Location: Grenoble, France

PostPosted: Thu Dec 08, 2005 6:03 pm    Post subject: Reply with quote

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
View user's profile Send private message
DomiX
Apprentice
Apprentice


Joined: 26 Oct 2003
Posts: 209
Location: Paris (FRANCE)

PostPosted: Sat Dec 10, 2005 6:08 pm    Post subject: Reply with quote

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
View user's profile Send private message
Enlight
Advocate
Advocate


Joined: 28 Oct 2004
Posts: 3514
Location: Alsace (France)

PostPosted: Sat Dec 17, 2005 10:59 pm    Post subject: Reply with quote

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.

_________________
le "lol" est aux boulets ce que le ";" est au programmeurs
Back to top
View user's profile Send private message
kopp
Advocate
Advocate


Joined: 09 Apr 2004
Posts: 2868
Location: Grenoble, France

PostPosted: Fri Dec 23, 2005 6:48 pm    Post subject: Reply with quote

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
View user's profile Send private message
Poischack
Apprentice
Apprentice


Joined: 23 Mar 2005
Posts: 275
Location: (FR) Colmar

PostPosted: Tue Dec 27, 2005 2:25 pm    Post subject: Reply with quote

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 :D
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
View user's profile Send private message
kopp
Advocate
Advocate


Joined: 09 Apr 2004
Posts: 2868
Location: Grenoble, France

PostPosted: Tue Dec 27, 2005 6:07 pm    Post subject: Reply with quote

Et bien je dirai qu'il suffit d'indiquer comme disque dur le /dev correspondant à ta clef usb..;
genre
Code:
qemu -hda /dev/sda
(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
View user's profile Send private message
Poischack
Apprentice
Apprentice


Joined: 23 Mar 2005
Posts: 275
Location: (FR) Colmar

PostPosted: Tue Dec 27, 2005 6:55 pm    Post subject: Reply with quote

Genial c'est exactement ce qu'il me fallais merci.
Back to top
View user's profile Send private message
kopp
Advocate
Advocate


Joined: 09 Apr 2004
Posts: 2868
Location: Grenoble, France

PostPosted: Tue Dec 27, 2005 9:08 pm    Post subject: Reply with quote

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
View user's profile Send private message
BuBuaBu
l33t
l33t


Joined: 09 Jul 2005
Posts: 898
Location: France

PostPosted: Sun Feb 19, 2006 2:01 pm    Post subject: Reply with quote

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
View user's profile Send private message
kopp
Advocate
Advocate


Joined: 09 Apr 2004
Posts: 2868
Location: Grenoble, France

PostPosted: Sat Feb 25, 2006 3:04 pm    Post subject: Reply with quote

Merci pour la remarque BuBuaBu. C'est intégré.
Back to top
View user's profile Send private message
kwenspc
Advocate
Advocate


Joined: 21 Sep 2003
Posts: 4906

PostPosted: Fri Mar 03, 2006 7:42 pm    Post subject: Reply with quote

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
View user's profile Send private message
kopp
Advocate
Advocate


Joined: 09 Apr 2004
Posts: 2868
Location: Grenoble, France

PostPosted: Fri Mar 03, 2006 8:43 pm    Post subject: Reply with quote

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
View user's profile Send private message
kwenspc
Advocate
Advocate


Joined: 21 Sep 2003
Posts: 4906

PostPosted: Fri Mar 03, 2006 8:53 pm    Post subject: Reply with quote

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
View user's profile Send private message
Enlight
Advocate
Advocate


Joined: 28 Oct 2004
Posts: 3514
Location: Alsace (France)

PostPosted: Fri Mar 10, 2006 9:37 pm    Post subject: Reply with quote

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.
_________________
le "lol" est aux boulets ce que le ";" est au programmeurs
Back to top
View user's profile Send private message
BuBuaBu
l33t
l33t


Joined: 09 Jul 2005
Posts: 898
Location: France

PostPosted: Thu Mar 16, 2006 7:12 pm    Post subject: Reply with quote

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
View user's profile Send private message
BuBuaBu
l33t
l33t


Joined: 09 Jul 2005
Posts: 898
Location: France

PostPosted: Fri Mar 17, 2006 2:47 pm    Post subject: Reply with quote

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
View user's profile Send private message
synss
Apprentice
Apprentice


Joined: 08 Mar 2006
Posts: 280
Location: Dijon (F) > Berlin > Tokyo > Nürnberg (D)

PostPosted: Mon Mar 27, 2006 4:50 pm    Post subject: Reply with quote

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
View user's profile Send private message
synss
Apprentice
Apprentice


Joined: 08 Mar 2006
Posts: 280
Location: Dijon (F) > Berlin > Tokyo > Nürnberg (D)

PostPosted: Sat Jun 24, 2006 11:03 pm    Post subject: Reply with quote

Pour le reseau, avec qemu 8.1:
zgrep TUN /proc/config.gz:
CONFIG_TUN=m
Code:
modprobe tun
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
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index French All times are GMT
Goto page 1, 2  Next
Page 1 of 2

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum