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 [31/12/2016 07:47]
smolski doc:systeme:qemu renommé en doc:systeme:vm:qemu (mis en conformité de lien)
doc:systeme:vm:qemu [14/08/2023 00:00]
captnfab [Références]
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 !) +
- +
- +
-===== 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 ===== ===== Installation =====
Ligne 32: Ligne 22:
 <code root>​apt-get update</​code>​ <code root>​apt-get update</​code>​
 puis on installe qemu : puis on installe qemu :
-<code root>​apt-get install qemu</​code>​ +<code root>​apt-get install qemu-system qemu-utils qemu-system-gui</​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 root> +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 root> +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</​code>​ +</note>
-<code root>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) +Il est important ​de choisir ​un support ​de stockage dont la taille et la vitesse correspondent à ce que l'​on ​veut faire. 
-<code root> +On n'​utilisera pas une clef USB pour installer une VM destinée aux jeux vidéo.
-qemu-img create -f qcow2 base.qcow2 20G +
-</​code>​+
  
-==== Les périphériques ====+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.
  
-Ils sont choisis au lancement de qemu, par le biais d'​options données en ligne de commande+Exemple: 
 +<code user>qemu-system-x86_64 -hda /​srv/​VM/​archlinux/​hdd.qcow2 -cdrom /​home/​captnfab/​Téléchargements/​archlinux.iso</​code>​
  
-=== Pour choisir la carte son === +==== Mémoire vive ====
-   -soundhw bla+
  
-Où bla peut prendre une des valeurs renvoyées par ''​qemu -soundhw ?''​+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').
  
 +Exemple:
 +<code user>​qemu-system-x86_64 -hda /​srv/​VM/​archlinux/​hdd.qcow2 -cdrom /​home/​captnfab/​Téléchargements/​archlinux.iso -m 2G</​code>​
  
-=== Pour changer de carte graphique ​=== +==== Les périphériques USB ====
-   -vga bla+
  
-Où bla peut prendre une valeur parmi « cirrusstd, vmware, none » +Pour rajouter un contrôleur USB virtuelon rajoute ​l'option ''-usb'',​ ensuite on peut rajouter 
- +  * des ports USB via un paramètre du type ''​-usbdevice host:​bus.addr''​ 
-=== Pour l'usb === +  ​* ou des périphériques USB via un paramètre du type ''​-usbdevice ​host:​vendor_id:​product_id''​ pour un périphérique.
-  * Active le support de l'usb +
- +
-<code root>-usb</​code>​ +
- +
-  * 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 : Exemple :
  
-Si la commande : +Si la commande ​''​[[:​doc:​systeme:​lsusb|lsusb]]''​ retourne la ligne suivante ​
-<code user>lsusb</code>+<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
-<file config retour de la commande>Bus 007 Device 003ID 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</file>+
  
-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é: 
-<​code ​root>​-usbdevice "host:007.003"</​code>​+<​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 ====
-<code root>​-usbdevice "​host:​0b97:​7772"</​code>​+
  
 +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 ​root>+<​code ​user>
 touch "​launch_vm.sh"​ touch "​launch_vm.sh"​
 </​code>​ </​code>​
Ligne 147: Ligne 111:
 <file fichier launch_vm.sh>​ <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"​ "$@"
 </​file>​ </​file>​
  
 On le rend exécutable : On le rend exécutable :
-<​code ​root>+<​code ​user>
 chmod a+x "​launch_vm.sh"​ chmod a+x "​launch_vm.sh"​
 </​code>​ </​code>​
Ligne 160: Ligne 124:
  
 <code root> <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 : faire des tests sans pourrir sa config =====
  
-Si vous utilisez votre vm pour tester des logiciels non stable ou des virusvous 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.+Si on utilise sa vm pour tester des logiciels non stableson n'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.
  
-Faire une copie de sauvegarde de l'​image prendrait beaucoup de place.+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.
  
-Heureusement,​ il y mieux !+Exemple: Une image disque ''​hdd.qcow2''​ contient un système fragile que l'​on ​peur de casser. On va renommer ce disque en ''​hdd-base.qcow2'',​ le passer en lecture seule, puis créer une image ''​hdd.qcow2''​ qui sera basée sur la première ne n'​enregistrera que les modifications par rapport à celle-ci.
  
-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...  +<code user> 
-Et vous estimez que cette configuration est le point de départ idéal pour tous vos tests futurs+mv hdd.qcow2 hdd-base.qcow2 
- +chmod a-w hdd-base.qcow2 
-On s'​assure d'​être dans le dossier de la vm : +qemu-img create -b hdd-base.qcow2 -f qcow2 hdd.qcow2
-<code root> +
-cd ~/​vm/​fenetresXP+
 </​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 root> +
-chmod 444 base.qcow2 +
-</​code>​ +
- +
-Et on crée une image test1.qcow2 qui ne contiendra que les modifications faîtes à base.qcow2 +
-<code root> +
-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''​ : +
- +
-<file config script launch_vm2.sh>​ +
-#​!/​bin/​bash +
-IMG=$1 +
-shift; +
-qemu -m 256 -soundhw all -vga cirrus -hda ~/​vm/​fenetresXP/​$IMG.qcow2 $* +
-</​file>​ +
- +
-Vous lancez la machine de base (attention, en lecture seule) avec : +
-<code root>​./​launch_vm2.sh base</​code>​ +
- +
-La machine de test 1 : +
-<code root>​./​launch_vm2.sh test1</​code>​ +
  
-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 ===== ===== Quelques raccourcis indispensables =====
  
Ligne 229: Ligne 162:
 http://​lea-linux.org/​documentations/​index.php/​Software-soft_emul-qemu http://​lea-linux.org/​documentations/​index.php/​Software-soft_emul-qemu
  
-Lien : + 
-Voir : [[:​doc:​systeme:​kvm|KVM - Fork de Qemu]]+===== Tutos ==== 
 + 
 +  - [[:​doc:​systeme:​vm:​qemu:​tuto:​installation_windows|Installation ​de Fenêtre XP sur une VM]]
  
 ===== 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