logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

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 → ODT PDF Export

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

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 [02/09/2015 17:10]
milou [Configuration]
doc:systeme:vm:qemu [14/08/2023 19:19]
captnfab
Ligne 6: Ligne 6:
   * Suivi : {{tag>​à-tester}}   * Suivi : {{tag>​à-tester}}
     * Création par [[user>​captnfab]] le 17/08/2009     * Création par [[user>​captnfab]] le 17/08/2009
-    * Testé par .... le ....+    * Testé par [[user>​arpinux]] ​le 02/10/2021
   * 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 !))    * 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é ===== ===== 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 dexploitation ​: +Ce logiciel permet ​de créer une machine virtuelle avec un large choix d'​architecture (i.e. de type d'ordinateurssur sa propre machine, permettant par exemple d’installer une Debian pour tester la future version, ou d’installer ​un android version arm64, ou tester ​un autre système d'exploitation ​comme 
-  * distribution Linux, +  * une autre distribution Linux, 
-  * os à base de noyau BSD, +  * un os à base de noyau BSD, 
-  * système propriétaire. +  * un système propriétaire, 
-  * ... +  * etc.
-Il permet même d'​émuler plusieurs architecture (arm, cris, i386, m68k, mips, mips64, ppc, ppc64, x86_64, et d'​autres !)+
  
 +===== 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-system qemu-utils qemu-system-gui</​code>​
  
 ===== Prérequis ===== ===== Prérequis =====
  
-Avant d'​installer qemuassurez-vous d'​avoir les paquets ci-dessous d'​installé sur votre systèmePour cela, tapez la commande suivante+Pour gagner en fluiditéQemu utilise KVM.
  
-<code root>​apt-get install module-assistant<​/code> +{{/file-R70e5a6a5358a997ac6e5da2364abd1cf.png}}
-<code root>​module-assistant prepare</​code>​+
  
 +  * ''​KVM''​ est un [[http://​fr.wikipedia.org/​wiki/​Hyperviseur | hyperviseur de type 1]]  ("bare metal"​) qui permet à Qemu la virtualisation simultanée de différents systèmes d'​exploitation sur la même machine hôte.
 +  * ''​KVM''​ est un module du noyau Linux permettant aux applications de l'​espace utilisateur d'​utiliser les fonctionnalités de virtualisation matérielle.
 +  * ''​KVM''​ permet à Qemu de virtualiser une architecture sur un hôte de même architecture et exploitera alors pleinement l'​accélération matérielle que ''​KVM''​ pourra lui apporter.
 +    * L'​accélération matérielle par ''​KVM''​ ne sera possible que pour les microprocesseurs pourvu de la technologie ''​Intel VT-x''​ et ''​AMD-V''​.
 +    * L'​accès direct au matériel (bus PCI, Carte Graphique, etc..) depuis les machines virtuelles nécessitera aussi que la carte mère soit équipée d'un //chipset// permettant d'​exploiter la technologie ''​IOMMU''​ (**I**nput/​**O**utput **M**emory **M**anagement **U**nit) ​ de ces microprocesseur. => ''​Intel Vt-d''​ et ''​AMD-Vi''​.
  
-===== Installation =====+Pour vérifier que le microprocesseur de votre machine permet la virtualisation avec ''​KVM''​ 
 +<code user>​grep -E '​vmx|svm'​ /​proc/​cpuinfo &>/​dev/​null && echo "La virtualisation est possible sur cette machine."​ || echo "Le microprocesseur de cette machine ne permet pas d'​utiliser la virtualisation avec KVM."</​code>​ 
 + 
 +Et assurez-vous ensuite que les option du [[:​doc:​materiel:​bios | BIOS]] concernant ces technologies de virtualisation sont activées. 
 + 
 +//Merci à //​**bendia**//​ pour ses remarques sur ce tuto [[http://​debian-facile.org/​forum/​viewtopic.php?​pid=44629#​p44629 | dans le forum]] // 
 + 
 +N'​hésitez pas chacun à intervenir dans le forum pour __signaler des compléments à mettre ou à modifier__ dans les tutos que vous visitez ! ;-)
  
-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 ===== ===== Configuration =====
  
-==== Chargement du module ====+<note info> 
 +Les configurations de machines virtuelles peuvent vite devenir très complexes. En effet, si l'on veut préciser les paramètres de chaque périphériques virtuel associé, on n'en fini pas. 
 +C'est pourquoi à moins de savoir exactement ce que l'on veut, on n'​utilise en général pas directement qemu, mais on l'​utilise en passant par une outil plus haut niveau tel [[:​atelier:​chantier:​virtualisation-avec-libvirt|libvirt]] et son gestionnaire de machines virtuelles [[:​doc:​autres:​vm:​virt-manager|virt-manager]]. 
 +</​note>​
  
-//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.//​+De quoi a-t-on besoin pour faire une VM ?
  
-=== Pour le charger une fois === +==== Un microprocesseur ====
-<code root> +
-modprobe kqemu +
-</​code>​+
  
-=== Pour le charger à chaque démarrage ===+En fait, on parle plus généralement d'​architecture. 
 +  * Si l'on est sur un ordinateur fixe, il y a de grandes chances pour que l'​architecture soit x86_64, c'est ce que debian appelle ''​amd64''​ et correspond aux processeurs 64bits communs. 
 +  * Si l'on est sur un ordinosaure fixe, alors il est possible que l'​architecture soit x86, c'est ce que debian appelle ''​i386''​ et correspond aux processeurs 32bits du début du siècle. 
 +  * Si l'on est sur un smartphone, alors on est très probablement sur une architecture arm64.
  
-**Attentionil y a deux '>', accolés ​l'​un ​à l'autre**+la question que l'on doit se poser est: « Quelle est l'architecture de la machine que je veux simuler ? » Donc si l'on veut installer ​un Android, c'est probablement arm64, mais si l'on veut installer une debian sid pour tester, il y a des chances que ça reste x86_64.
  
-<​code ​root> +Pour lister les commandes qemu associées à chaque architecture,​ lancer la commande: 
-echo kqemu >> "/etc/modules"​ +<​code ​user>ls /usr/bin/​qemu-system-*</​code>​
-</​code>​+
  
-==== Répertoire ​de travail ====+On indique ensuite le nombre ​de cœurs que l'on souhaite dédier à la machine via l'​option ''​-smp''​
  
-On commence par se créer un répertoire de travail, par exemple ​''​~/​vm''​ +Exemple
-<​code ​root> +<​code ​user>qemu-system-x86_64 -smp 2</​code>​
-mkdir -p ~/vm +
-</​code>​+
  
-===== Création ​de machine virtuelle =====+==== Un disque ​de stockage ​====
  
-<code bash> +C'est a priori là où sera installé le bootloader et système d'​exploitation que l'on veut lancer. Ça peut être un lecteur CD, une clef USB, mais ça peut aussi être une image disque le représentant.
-cd ~/vm +
-</​code>​+
  
-Pour faire plus propreon va maintenant créer un dossier pour la machine ​en question +<note warning>​ 
-<code bash> +Attentionutiliser une partition comme image disque est possible mais vous ne pourrez pas monter ​la partition ​en tant que système de fichier sur l'​hôte car elle ne contiendra pas un système de fichier mais un disque entier
-mkdir fenetresXP +</note>
-cd fenetresXP +
-</code>+
  
-==== L'image disque ====+Souvent, on crée des images disques avec ''​qemu-img''​. Il permet en particulier de manipuler les images au format ''​.qcow2''​ ou de convertir des images faites pour d'​autres logiciels de VM.
  
-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) +Exemple: 
-<​code ​bash> +<​code ​user>​qemu-img create -f qcow2 hdd.qcow2 20G</​code>​ 
-qemu-img create -f qcow2 base.qcow2 20G +Où : 
-</​code>​+    * ''​hdd.qcow2'' ​ est le nom du fichier //image disque// qui va être créé. 
 +    * ''​10G''​ sera la taille ​ **virtuelle** de l'​espace disponible dans ce **disque virtuel**.
  
-==== Les périphériques ====+<note tip>Le format **qcow2**((**Q**emu **C**opy **O**n **W**rite version **2**)) est un format d'​espace de stockage //​optimisé//,​ c'est à dire que l'​espace occupé par le fichier //image disque// sera très nettement inférieur à l'​espace disponible sur le support de données, mais à mesure que des données seront écrites sur le //disque// la taille du fichier va augmenter.</​note>​
  
-Ils sont choisis au lancement de qemu, par le biais d'options données en ligne de commande+<note important>​**ATTENTION** ! qemu utilise l'unité Gio, mais certains installateurs tels celui de Debian utilise l'​unité Go : 
 +  * 1 Go = 10<​sup>​9</​sup>​ octets 
 +  * 1 Gio = 2<​sup>​30</​sup>​ octets = 1,073741824 Go 
 +et donc 10 Gio correspondront à 10,7 Go.
  
-=== Pour choisir la carte son === +//Un grand merci à //​**vince06fr**//,​ [[http://​debian-facile.org/​viewtopic.php?​pid=54073#​p54073| sur le forum là]] ! Lucide, le gars// ​=) 
-  ​ -soundhw bla+</​note> ​
  
-Où bla peut prendre une des valeurs renvoyées par ''​qemu -soundhw ?''​+Il est important de choisir un support de stockage dont la taille et la vitesse correspondent à ce que l'on veut faire. 
 +On n'utilisera pas une clef USB pour installer une VM destinée aux jeux vidéo.
  
 +On utilise ''​-hda'',​ ''​-hdb'',​ etc. pour indiquer les supports de stockages de type disque dur, et ''​-cdrom''​ pour indiquer des media en lecture seule tels les cdroms.
  
-=== Pour changer de carte graphique === +Exemple: 
-   -vga bla+<code user>​qemu-system-x86_64 -hda /​srv/​VM/​archlinux/​hdd.qcow2 -cdrom /​home/​captnfab/​Téléchargements/​archlinux.iso</​code>​
  
-Où bla peut prendre une valeur parmi « cirrus, std, vmware, none »+==== Mémoire vive ====
  
-=== Pour l'usb === +On veut souvent spécifier la taille de la RAM disponible, cela se fait en utilisant ​l'option ''​-m''​ et en précisant ​l'unité (''​M''​ pour des Mio, ''​G''​ pour des Gio').
-  * Active le support de l'usb+
  
-   -usb+Exemple: 
 +<code user>​qemu-system-x86_64 -hda /​srv/​VM/​archlinux/​hdd.qcow2 -cdrom /​home/​captnfab/​Téléchargements/​archlinux.iso -m 2G</​code>​
  
-  * Et pour ajouter les périphériques USB :+==== Les périphériques USB ====
  
-   -usbdevice bla +Pour rajouter un contrôleur USB virtuel, on rajoute l'​option ''​-usb'',​ ensuite on peut rajouter 
- +  ​* des ports USB via un paramètre du type ''​-usbdevice ​host:​bus.addr''​ 
-//​bla// ​peut être remplacé par +  ​* ou des périphériques USB via un paramètre du type ''​-usbdevice ​host:​vendor_id:​product_id''​ pour un périphérique.
-  ​''​host:​bus.addr'' ​pour affecter un port usb ( +
-  ​''​host:​vendor_id:​product_id''​ pour affecter ​un périphérique+
  
 Exemple : Exemple :
  
-Si la commande : +Si la commande ​''​[[:​doc:​systeme:lsusb|lsusb]]''​ retourne la ligne suivante : 
-  ​lsusb+<file config retour de la commande>​Bus 007 Device 003: ID 0b97:7772 Blahhhhhhhhhh</​file>​
  
-Me renvoie ​+Si je veux monter le port USB sur lequel est branché mon périphérique Blahhhhhhhhhh,​ qui restera connecté même si je change le périphérique branché dessus
-  ​Bus ​007 Device ​003: ID 0b97:7772 Blahhhhhhhhhh +<code user>​qemu-system-x86_64 -hda /​srv/​VM/​archlinux/​hdd.qcow2 -cdrom /​home/​captnfab/​Téléchargements/​archlinux.iso -m 2G -usb -usbdevice "host:007.003"</​code>​
-  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 +Si je veux monter Blahhhhhhhhhh ​où qu'il soit branché: 
-   -usbdevice "host:007.003"+<code user>​qemu-system-x86_64 -hda /​srv/​VM/​archlinux/​hdd.qcow2 -cdrom /​home/​captnfab/​Téléchargements/​archlinux.iso -m 2G -usb -usbdevice "host:0b97:7772"</​code>​
  
-Si je veux monter Blahhhhhhhhhh où qu'il soit branché +==== Les autres périphériques ====
-   -usbdevice "​host:​0b97:​7772"​+
  
 +Une carte son, une carte graphique, des périphériques USB, le nombre de cœurs du microprocesseur,​ la carte réseau…
  
-=== Nombre ​de microprocesseurs à allouer à la machine === +Il serait trop long de tout détailler ici, et ce n'est pas l'​objet. Chaque cas d'​utilisation est unique et nécessite ses propres options.
-   ​ -cpu ​n +
-(où n représente ce nombre)+
  
-=== Taille de la mémoire vive à allouer à la machine === +Pour en savoir plusconsulter ​le manuel: 
-    -m n +<code user>man qemu-system</​code>​
-(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 ==== ==== Enregistrement des options ====
  
-Il est fastidieux de se souvenir des options à chaque lancement, on va donc les enregistrer dans un fichier : +Il est fastidieux de se souvenir des options à chaque lancement, on peut donc écrire ​un fichier ​contenant la commande complète, exemple
-<​code ​bash>+<​code ​user>
 touch "​launch_vm.sh"​ touch "​launch_vm.sh"​
 </​code>​ </​code>​
  
 On édite le fichier de sorte à ce qu'il ressemble à ça : On édite le fichier de sorte à ce qu'il ressemble à ça :
-<code bash>+<file fichier launch_vm.sh>
 #!/bin/sh #!/bin/sh
-qemu -m 256 -soundhw all -vga cirrus ​-hda ~/vm/fenetresXP/base.qcow2 $* +qemu-system-x86_64 ​-hda /srv/VM/archlinux/​hdd.qcow2 ​-m 2G -usb -usbdevice "​host:​0b97:​7772"​ "$@" 
-</code>+</file>
  
 On le rend exécutable : On le rend exécutable :
-<​code ​bash>+<​code ​user>
 chmod a+x "​launch_vm.sh"​ chmod a+x "​launch_vm.sh"​
 </​code>​ </​code>​
Ligne 159: Ligne 161:
 On veut booter sur le CDRom d'​installation,​ donc On veut booter sur le CDRom d'​installation,​ donc
  
-<​code ​bash+<​code ​root
-./​launch_vm.sh ​-m 512 -cdrom ​~/mes_isos/fenetresXP_SP3.iso -boot d+./​launch_vm.sh -cdrom /home/​captnfab/​Téléchargements/archlinux.iso -boot d
 </​code>​ </​code>​
  
 ==== Lancement de la machine les autres fois ==== ==== Lancement de la machine les autres fois ====
  
-<​code ​bash+<​code ​root
-./​launch_vm.sh ​bla+./​launch_vm.sh
 </​code>​ </​code>​
-où //bla// sont les options que vous voulez rajouter. 
  
-===== Aller plus loin : faire des tests sans pourrir sa config ​=====+===== Aller plus loin ===== 
  
-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 des tests sans pourrir sa config ====
  
-Faire une copie de sauvegarde ​de l'image prendrait beaucoup de place.+Si on utilise sa vm pour tester des logiciels non stables, on n'a certainement pas envie de <​del>​foutre en l'air,</​del>​ <​del>​détruire,</​del>​ perdre sa jolie installation vierge toute belle toute neuve sur sa machine virtuelle.
  
-Heureusement,​ il y a mieux !+Faire une copie de sauvegarde de l'​image prendrait beaucoup de place. ​Heureusement,​ il y a mieux ! 
 +Il y a la possibilité de créer une image disque basée sur une autre image disque en lecture seule avec qemu-img.
  
-Supposons ​que vous veniez de suivre ​l'installation ci-dessusVous avez installé fenêtre XP SP3effectué plein de mises à jour, installé un navigateur web, .PasNet Framework et autres machins lourds...  +Exemple: Une image disque ''​hdd.qcow2''​ contient un système fragile ​que l'on a peur de casser. On va renommer ce disque en ''​hdd-base.qcow2''​le passer en lecture seulepuis créer une image ''​hdd.qcow2''​ qui sera basée sur la première ne n'​enregistrera ​que les modifications par rapport à celle-ci.
-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 ​user
-<​code ​bash+mv hdd.qcow2 hdd-base.qcow2 
-cd ~/​vm/​fenetresXP+chmod a-w hdd-base.qcow2 
 +qemu-img create -b hdd-base.qcow2 -f qcow2 hdd.qcow2
 </​code>​ </​code>​
  
-On interdit les droits d'écriture sur l'image de départ +Et voilà, maintenant, ​''​launch_vm.sh''​ utilisera ''​hdd.qcow2''​ sans modifier ''​hdd-base.qcow2''​
-<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 +==== Quelques raccourcis indispensables ====
-<code bash> +
-qemu-img create -b base.qcow2 -f qcow2 test1.qcow2 +
-</​code>​+
  
-Et voilàmaintenantil suffit ​de modifier le script ''​launch_vm.sh'​' pour qu'il utilise ''​test1.qcow2''​ au lieu de ''​base.qcow2''​+^   //​RACCOURCIS CLAVIER// ​ ^   //​ACTION// ​  ^  
 +| <​key>​C-A-f</​key> ​  | passe en plein-écran ​  | 
 +| <​key>​C-A-1</​key> ​  | affichage graphique de l'​invité ​  | 
 +| <​key>​C-A-2</​key> ​  | passage au moniteur Qemu; attentiondans ces deux optionsle 1 et le 2 sont à taper sur les chiffres hauts du clavier, pas sur le pavé numérique ​  | 
 +| <​key>​C-A</​key> ​  | 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   ​| ​
  
-== Astuce ==+voir le très bon tuto sur lea-linux là :
  
-Avec le script suivant ''​launch_vm2.sh'' ​:+http://​lea-linux.org/​documentations/​index.php/​Software-soft_emul-qemu
  
-<code bash> +==== Faire une installation à distance ====
-#​!/​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 +Si vous procédez à une installation distante, rajouter à la fin de la ligne
-  ./launch_vm2.sh base+<code bash>​--vnc :0 -k fr</code>
  
-La machine de test 1 : +Ainsi, vous devriez pouvoir vous connecter via un client VNC tout en gardant une disposition clavier AZERTY ;)
-  ./​launch_vm2.sh test1+
  
 +===== Tutos ====
  
-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 ! +  ​[[:doc:systeme:vm:qemu:​tuto:​installation_windows|Installation ​de Fenêtre XP sur une VM]] 
-===== Quelques raccourcis indispensables ===== +  - [[:​doc:​systeme:​vm:​qemu:​tuto:​installation_slackware|Installation ​de Slackware sur une VM]]
-    *  ctrl-alt-fpasse en plein-écran. +
-    * ctrl-alt-1affichage graphique de l'​invité. +
-    * ctrl-alt-2passage 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-altpour 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 ===== ===== Références =====
   - ''​man qemu''​ (anglais)   - ''​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/​   - 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/​
doc/systeme/vm/qemu.txt · Dernière modification: 14/08/2023 19:45 par captnfab

Pied de page des forums

Propulsé par FluxBB