Vous n'êtes pas identifié(e).
L'icône rouge permet de télécharger chaque page du wiki visitée au format
PDF et la grise au format ODT →
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente Prochaine révision Les deux révisions suivantes | ||
doc:systeme:vm:qemu [17/08/2009 13:52] Capitaine Fab |
doc:systeme:vm:qemu [02/09/2015 17:09] milou [Installation] |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | ====== Qemu ====== | ||
+ | * Objet : Qemu | ||
+ | * Niveau requis :{{tag>avisé}} | ||
+ | * Commentaires : //logiciel libre de machine virtuelle// | ||
+ | * Suivi : {{tag>à-tester}} | ||
+ | * Création par [[user>captnfab]] le 17/08/2009 | ||
+ | * Testé par .... le .... | ||
+ | * Commentaires sur le forum : [[https://debian-facile.org/viewtopic.php?id=2256 |C'est ici]]((N'hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !)) | ||
+ | |||
+ | ===== Résumé ===== | ||
+ | |||
+ | Ce logiciel permet d’émuler un ou plusieurs ordinateurs sur votre propre machine, vous permettant par exemple d’installer une Debian pour tester la future version, ou d’installer un autre système d’exploitation : | ||
+ | * distribution Linux, | ||
+ | * os à base de noyau BSD, | ||
+ | * système propriétaire. | ||
+ | * ... | ||
+ | Il permet même d'émuler plusieurs architecture (arm, cris, i386, m68k, mips, mips64, ppc, ppc64, x86_64, et d'autres !) | ||
+ | |||
+ | |||
+ | ===== Prérequis ===== | ||
+ | |||
+ | Avant d'installer qemu, assurez-vous d'avoir les paquets ci-dessous d'installé sur votre système. Pour cela, tapez la commande suivante | ||
+ | |||
+ | <code root>apt-get install module-assistant</code> | ||
+ | <code root>module-assistant prepare</code> | ||
+ | |||
+ | |||
+ | ===== Installation ===== | ||
+ | |||
+ | Classiquement, on commence par mettre à jour la liste des paquets : | ||
+ | <code root>apt-get update</code> | ||
+ | puis on installe qemu : | ||
+ | <code root>apt-get install qemu</code> | ||
+ | on compile et installe les modules noyaux : | ||
+ | <code root>m-a a-i kqemu</code> | ||
+ | |||
+ | ===== Configuration ===== | ||
+ | |||
+ | ==== Chargement du module ==== | ||
+ | |||
+ | //Le module kqemu sert à accélérer la pseudo-virtualisation. Les instructions données par la machine simulée par qemu ne sont plus (en grande partie) simulées logiciellement mais directement interprétée par le micro-processeur.// | ||
+ | |||
+ | **À faire en tant que super utilisateur.** | ||
+ | |||
+ | === Pour le charger une fois === | ||
+ | <code bash> | ||
+ | modprobe kqemu | ||
+ | </code> | ||
+ | |||
+ | === Pour le charger à chaque démarrage === | ||
+ | |||
+ | **Attention, il y a deux '>', accolés l'un à l'autre** | ||
+ | |||
+ | <code bash> | ||
+ | echo kqemu >> "/etc/modules" | ||
+ | </code> | ||
+ | |||
+ | ==== Répertoire de travail ==== | ||
+ | |||
+ | On commence par se créer un répertoire de travail, par exemple : ''~/vm'' | ||
+ | <code bash> | ||
+ | mkdir -p ~/vm | ||
+ | </code> | ||
+ | |||
+ | ===== Création de machine virtuelle ===== | ||
+ | |||
+ | <code bash> | ||
+ | cd ~/vm | ||
+ | </code> | ||
+ | |||
+ | Pour faire plus propre, on va maintenant créer un dossier pour la machine en question. | ||
+ | <code bash> | ||
+ | mkdir fenetresXP | ||
+ | cd fenetresXP | ||
+ | </code> | ||
+ | |||
+ | ==== L'image disque ==== | ||
+ | |||
+ | On crée une image disque((le format qcow2 nous permet de ne pas créer directement un fichier de 20 Gio mais de n'allouer l'espace que lorsqu'il est requis)) (de 20 Gio((Pour le reste du tuto, on considèrera que 1 Gio = 2<sup>10</sup> Mio = 2<sup>20</sup> kio = 2<sup>30</sup> o)) dans notre exemple) | ||
+ | <code bash> | ||
+ | qemu-img create -f qcow2 base.qcow2 20G | ||
+ | </code> | ||
+ | |||
+ | ==== Les périphériques ==== | ||
+ | |||
+ | Ils sont choisis au lancement de qemu, par le biais d'options données en ligne de commande | ||
+ | |||
+ | === Pour choisir la carte son === | ||
+ | -soundhw bla | ||
+ | |||
+ | Où bla peut prendre une des valeurs renvoyées par ''qemu -soundhw ?'' | ||
+ | |||
+ | |||
+ | === Pour changer de carte graphique === | ||
+ | -vga bla | ||
+ | |||
+ | Où bla peut prendre une valeur parmi « cirrus, std, vmware, none » | ||
+ | |||
+ | === Pour l'usb === | ||
+ | * Active le support de l'usb | ||
+ | |||
+ | -usb | ||
+ | |||
+ | * Et pour ajouter les périphériques USB : | ||
+ | |||
+ | -usbdevice bla | ||
+ | |||
+ | //bla// peut être remplacé par | ||
+ | - ''host:bus.addr'' pour affecter un port usb ( | ||
+ | - ''host:vendor_id:product_id'' pour affecter un périphérique | ||
+ | |||
+ | Exemple : | ||
+ | |||
+ | Si la commande : | ||
+ | lsusb | ||
+ | |||
+ | Me renvoie : | ||
+ | Bus 007 Device 003: ID 0b97:7772 Blahhhhhhhhhh | ||
+ | Bus 007 Device 002: ID 0b97:7761 Ploum ploum | ||
+ | |||
+ | Si je veux monter le port USB sur lequel est branché mon périphérique Blahhhhhhhhhh | ||
+ | -usbdevice "host:007.003" | ||
+ | |||
+ | Si je veux monter Blahhhhhhhhhh où qu'il soit branché | ||
+ | -usbdevice "host:0b97:7772" | ||
+ | |||
+ | |||
+ | === Nombre de microprocesseurs à allouer à la machine === | ||
+ | -cpu n | ||
+ | (où n représente ce nombre) | ||
+ | |||
+ | === Taille de la mémoire vive à allouer à la machine === | ||
+ | -m n | ||
+ | (où n est cette taille en Mio) | ||
+ | |||
+ | === Et bien d'autres options, …=== | ||
+ | … notamment pour le réseau (présent par défaut) | ||
+ | Voir man ou documentation en référence. | ||
+ | |||
+ | ==== Enregistrement des options ==== | ||
+ | |||
+ | Il est fastidieux de se souvenir des options à chaque lancement, on va donc les enregistrer dans un fichier : | ||
+ | <code bash> | ||
+ | touch "launch_vm.sh" | ||
+ | </code> | ||
+ | |||
+ | On édite le fichier de sorte à ce qu'il ressemble à ça : | ||
+ | <code bash> | ||
+ | #!/bin/sh | ||
+ | qemu -m 256 -soundhw all -vga cirrus -hda ~/vm/fenetresXP/base.qcow2 $* | ||
+ | </code> | ||
+ | |||
+ | On le rend exécutable : | ||
+ | <code bash> | ||
+ | chmod a+x "launch_vm.sh" | ||
+ | </code> | ||
+ | |||
+ | ==== Lancement de la machine la première fois ==== | ||
+ | |||
+ | On veut booter sur le CDRom d'installation, donc | ||
+ | |||
+ | <code bash> | ||
+ | ./launch_vm.sh -m 512 -cdrom ~/mes_isos/fenetresXP_SP3.iso -boot d | ||
+ | </code> | ||
+ | |||
+ | ==== Lancement de la machine les autres fois ==== | ||
+ | |||
+ | <code bash> | ||
+ | ./launch_vm.sh bla | ||
+ | </code> | ||
+ | où //bla// sont les options que vous voulez rajouter. | ||
+ | |||
+ | ===== Aller plus loin : faire des tests sans pourrir sa config ===== | ||
+ | |||
+ | Si vous utilisez votre vm pour tester des logiciels non stable ou des virus, vous n'avez certainement pas envie de <del>foutre en l'air,</del> <del>détruire,</del> perdre votre jolie installation vierge toute belle toute neuve sur votre machine virtuelle. | ||
+ | |||
+ | Faire une copie de sauvegarde de l'image prendrait beaucoup de place. | ||
+ | |||
+ | Heureusement, il y a mieux ! | ||
+ | |||
+ | Supposons que vous veniez de suivre l'installation ci-dessus. Vous avez installé fenêtre XP SP3, effectué plein de mises à jour, installé un navigateur web, .PasNet Framework et autres machins lourds... | ||
+ | Et vous estimez que cette configuration est le point de départ idéal pour tous vos tests futurs. | ||
+ | |||
+ | On s'assure d'être dans le dossier de la vm : | ||
+ | <code bash> | ||
+ | cd ~/vm/fenetresXP | ||
+ | </code> | ||
+ | |||
+ | On interdit les droits d'écriture sur l'image de départ | ||
+ | <code bash> | ||
+ | chmod 444 base.qcow2 | ||
+ | </code> | ||
+ | |||
+ | Et on crée une image test1.qcow2 qui ne contiendra que les modifications faîtes à base.qcow2 | ||
+ | <code bash> | ||
+ | qemu-img create -b base.qcow2 -f qcow2 test1.qcow2 | ||
+ | </code> | ||
+ | |||
+ | Et voilà, maintenant, il suffit de modifier le script ''launch_vm.sh'' pour qu'il utilise ''test1.qcow2'' au lieu de ''base.qcow2'' | ||
+ | |||
+ | == Astuce == | ||
+ | |||
+ | Avec le script suivant ''launch_vm2.sh'' : | ||
+ | |||
+ | <code bash> | ||
+ | #!/bin/bash | ||
+ | IMG=$1 | ||
+ | shift; | ||
+ | qemu -m 256 -soundhw all -vga cirrus -hda ~/vm/fenetresXP/$IMG.qcow2 $* | ||
+ | </code> | ||
+ | |||
+ | Vous lancez la machine de base (attention, en lecture seule) avec : | ||
+ | ./launch_vm2.sh base | ||
+ | |||
+ | La machine de test 1 : | ||
+ | ./launch_vm2.sh test1 | ||
+ | |||
+ | |||
+ | Etc. Vous pouvez simultanément avoir 12((pour toute valeur de 12)) machines de test différentes basées sur la même image ''base.qcow2'', et ce, pour un coût en espace disque moindre ! | ||
+ | ===== Quelques raccourcis indispensables ===== | ||
+ | * 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. | ||
+ | |||
+ | voir le très bon tuto sur lea-linux là : | ||
+ | |||
+ | http://lea-linux.org/documentations/index.php/Software-soft_emul-qemu | ||
+ | |||
+ | Lien : | ||
+ | Voir : [[:doc:systeme:kvm|KVM - Fork de Qemu]] | ||
+ | |||
+ | ===== Références ===== | ||
+ | - ''man qemu'' (anglais) | ||
+ | - http://www.esaracco.fr/documentation/qemu/qemu/ (ou en [[http://esaracco.free.fr/documentations/qemu/qemu.pdf|pdf]]) sur le site http://www.esaracco.fr/ |