Wiki Ordunix

Linux, FreeBSD, macOS, Windows et Histoire Informatique

Outils pour utilisateurs

Outils du site


wiki:virtualisation_et_emulation:qemu

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édentesRévision précédente
Prochaine révision
Révision précédente
wiki:virtualisation_et_emulation:qemu [2025/09/16 21:01] – [Composition de de QEMU] Thibault Seguinwiki:virtualisation_et_emulation:qemu [2025/09/16 21:21] (Version actuelle) – [QEMU pour la virtualisation sous KVM] Thibault Seguin
Ligne 47: Ligne 47:
  
 ==== QEMU en tant qu'émulateur ==== ==== QEMU en tant qu'émulateur ====
-L'**émulation** consite à **simuler** un **OS** qui n'a absolument pas la même **architecture processeur** que l'**OS** **Hôte**, comme par exemple **émuler** un **OS** à **processeur** de type **ARM** sur un **OS** **Hôte** à **processeur** de type **Intel x86_64**, pour se faire, sous **QEMU** vous utiliserez **qemu-system-aarch64** et là vous **émulerez** la ''totalité'' du **matériels** (**processeur** (**CPU**), **mémoire vive** (**RAM**), **carte graphique** (**GPU**), **carte réseau**,...etc) de la **VM** (**//Virtual Machine//** et **machine virtuelle** en français) de l'**OS** invité sur votre **hôte** à **processeur** de type **x86_64**. En définitive vous pourez **émuler** toute les **VM** qui n'ont aucun lien avec le **processeur** de votre **ordinateur hôte** mais avec des ''performances'' médiocre comparées à la **virtualisation** sous **QEMU** grâce à **KVM**.+L'émulation consite à simuler un OS qui n'a absolument pas la même architecture processeur que l'OS Hôte, comme par exemple émuler un OS à processeur de type **ARM** sur un OS Hôte à processeur de type **Intel x86_64**, pour se faire, sous QEMU vous utiliserez **qemu-system-aarch64** et là vous émulerez la totalité du matériel (processeur (CPU), mémoire vive (RAM), carte graphique (GPU), carte réseau,...etc) de la **VM** (**//Virtual Machine//** et **machine virtuelle** en français) de l'OS invité sur votre hôte à processeur de type **x86_64**. En définitive vous pourrez émuler toute les VM qui n'ont aucun lien avec le processeur de votre ordinateur hôte mais avec des performances médiocre comparées à la virtualisation sous QEMU grâce à KVM.
  
-**QEMU** permet d'**émuler** les **architectures processeur** suivantes : **x86** **x86-64** (nommé aussi **AMD64**), **MIPS** (**MIPS** ''32 bits'' ou ''64 bits''), **ARMv7** (**ARM** ''32 bits'') , **ARMv8** (**ARM64** aussi appelé **AArch64**), **PowerPC** (**PowerPC** ''32 bits'' ou ''64 bits''**RISC-V** (**RISC-V** ''32 bits'' ou ''64 bits''), **SPARC** (**SPARC** ''32 bits'' ou ''64 bits''), **ETRAX CRIS****MicroBlaze****AVR** (**Atmel AVR**), **Xtensa****s390x****SH-4**(**SuperH**), **OpenRISC****M68k** (famille **Motorala 68000**), **Alpha****HPPA** (**PA-RISC**), **Z80**, et d'autres.+QEMU permet d'émuler les architectures de processeur suivantes : x86 , x86-64 (nommé aussi AMD64), MIPS (MIPS ''32 bits'' ou ''64 bits''), ARMv7 (ARM ''32 bits'') , ARMv8 (ARM64 aussi appelé AArch64), PowerPC (PowerPC ''32 bits'' ou ''64 bits'')RISC-V (RISC-V ''32 bits'' ou ''64 bits''), SPARC (SPARC ''32 bits'' ou ''64 bits''), ETRAX CRIS, MicroBlaze, AVR (Atmel AVR), Xtensa, s390x, SH-4 (SuperH), OpenRISC, M68k (famille Motorala 68000), Alpha, HPPA (PA-RISC), Z80, et d'autres.
  
-Exemple d'**exécution** de **SunOS 4.1.4** sur **processeur** de type **Sun Sparc** via **ordinateur hôte** avec **OS** sous **processeur** de type **Intel** **x86-64** : +Exemple d'exécution de **SunOS 4.1.4** sur processeur de type **Sun Sparc** via ordinateur hôte avec OS sous processeur de type **Intel** **x86-64** : 
-<code user>qemu-system-sparc -monitor tcp::4444,server,nowait -bios ss5.bin -m 32 -nographic -hda SunOS-4.1.4.qcow2 -net nic,id=tap0 -net tap,ifname=tap0,script=no,downscript=no</code>pour décortiquer la **commande****qemu-system-sparc** appelle l'**émulateur** de type **SPARC** (**Sun4m**), la **option** de **commande** ''-monitor'' permet de se **connecter** avec **telnet** via le **port réseau** ''4444'', ''-bios'' permet de spécifier le **bios** pour le **démarrage**, ''-m 32'' alloue ''32 Mo'' de **RAM**, ''-nographic'' affiche dirextement d'**OS** dans le **terminal** (ou **console**), ''-hda SunOS-4.1.4.qcow2'' spécifie l'**image disque** sur laquelle est installé l'**OS**, ''-net nic,id=tap0 -net tap,ifname=tap0,script=no,downscript=no'' permet de choisir le mode de connexion (en l'occurence avec l'**interface réseau** ''tap0'' qui est une **interface** de type **bridge** nommé aussi **pont réseau**).+<code user>qemu-system-sparc -monitor tcp::4444,server,nowait -bios ss5.bin -m 32 -nographic -hda SunOS-4.1.4.qcow2 -net nic,id=tap0 -net tap,ifname=tap0,script=no,downscript=no</code>pour décortiquer la commande, qemu-system-sparc appelle l'émulateur de type SPARC (**Sun4m**), l'option de commande ''-monitor'' permet de se connecter avec **telnet** via le port réseau ''4444'', ''-bios'' permet de spécifier le bios pour le démarrage, ''-m 32'' alloue 32 Mo de RAM, ''-nographic'' affiche directement l'OS dans le terminal (ou console), ''-hda SunOS-4.1.4.qcow2'' spécifie l'image disque sur laquelle est installé l'OS, ''-net nic,id=tap0 -net tap,ifname=tap0,script=no,downscript=no'' permet de choisir le mode de connexion (en l'occurrence avec l'interface réseau ''tap0'' qui est une interface de type bridge nommé aussi pont réseau).
  
 ==== QEMU pour la virtualisation sous KVM ==== ==== QEMU pour la virtualisation sous KVM ====
-**QEMU** a aussi le rôle de **virtualiseur** lorsque l'on l'associe avec l'**hyperviseur** nommé **KVM** (d'autres **hyperviseurs** sont compatibles avec **QEMU**) qui est directement intégré au **noyau Linux**, donc vous n'avez rien à faire sous **Linux**, pour utiliser le mode de **virtualisation** de **QEMU**, le seul prérequis est que l'**architecture processeur** ''simulée'' soit la même que celui de l'**ordinateur hôte**. Ainsi **QEMU** utilise directement le **CPU****RAM****GPU**,...,donc les **ressrouces** de l'**ordinateur hôte** ce qui n'est plus une **émulation** du **matériels** mais une **virtualisation** et de se fait les ''performances'' sont quasiment ''natives''.\\ +QEMU a aussi le rôle de virtualiseur lorsque l'on l'associe avec l'hyperviseur nommé KVM (d'autres hyperviseurs sont compatibles avec QEMU) qui est directement intégré au noyau Linux, donc vous n'avez rien à faire sous Linux, pour utiliser le mode de virtualisation de QEMU, le seul prérequis est que l'architecture de processeur virtualisée soit la même que celui de l'ordinateur hôte. Ainsi QEMU utilise directement le CPU, RAM, GPU,...,donc les ressources de l'ordinateur hôte ce qui n'est plus une émulation du matériels mais une virtualisation et de ce fait les performances sont quasiment ''natives''.\\ 
-Nous allons prendre l'exemple d'un **hôte linux** avec **processeur** de type **Intel x86_64** qui **virtualise** un **OS** pour **Intel x86_64** ou même un **Intel x86** : +Nous allons prendre l'exemple d'un hôte Linux avec processeur de type **Intel x86_64** qui virtualise un OS pour **Intel x86_64** ou même un **Intel x86** : 
-<code user>qemu-system-x86_64 -m 128 -cpu 486 -hda openserver-5.0.7-x86_2003_2G.qcow2 -cdrom SCO_OpenServer_5.0.7.iso -net nic,model=pcnet,id=br0 -net user -rtc base=localtime -boot c -k fr &</code>l'**option** ''-boot c'' permet de **booter** l'**image disque** de l'**OS** (''-boot d'' permettrait de **booter** sur le **CD**), ''-cpu 486'' spécifie le **processeur** **Intel 80486**, vous pouvez également utilisez cette **commande**:   +<code user>qemu-system-x86_64 -m 128 -cpu 486 -hda openserver-5.0.7-x86_2003_2G.qcow2 -cdrom SCO_OpenServer_5.0.7.iso -net nic,model=pcnet,id=br0 -net user -rtc base=localtime -boot c -k fr &</code>l'option ''-boot c'' permet de booter l'image disque de l'OS (''-boot d'' permettrait de booter sur le CD), ''-cpu 486'' spécifie le processeur **Intel 80486**, vous pouvez également utilisez cette commande:   
-<code user>kvm -m 128 -cpu 486 -hda openserver-5.0.7-x86_2003_2G.qcow2 -cdrom SCO_OpenServer_5.0.7.iso -net nic,model=pcnet,id=br0 -net user -rtc base=localtime -boot c -k fr &</code> qui est exactement la même **commande** car **kvm** n'est qu'un **lien symbolique** vers **qemu-system-x86_64** sur les **hôte** de type **Intel** ''64 bits''.+<code user>kvm -m 128 -cpu 486 -hda openserver-5.0.7-x86_2003_2G.qcow2 -cdrom SCO_OpenServer_5.0.7.iso -net nic,model=pcnet,id=br0 -net user -rtc base=localtime -boot c -k fr &</code> qui est exactement la même commande car kvm n'est qu'un lien symbolique vers qemu-system-x86_64 sur les hôtes de type **Intel** ''64 bits''.
  
 ==== Les interfaces graphiques sous QEMU ==== ==== Les interfaces graphiques sous QEMU ====
-**QEMU** peut également être utiliser via des **interfaces graphiques** tel que : +QEMU peut également être utiliser via des interfaces graphiques tel que : 
-  * **Virt-Manager** qui permet d'utiliser **QEMU** comme **émulateur** mais surtout comme **hyperviseur**, il fonctionne également avec les **conteneurs** nommé **LXC** mais aussi les **hyperviseurs** comme **Xen****Bhyve**,... +  * **Virt-Manager** qui permet d'utiliser QEMU comme émulateur mais surtout comme hyperviseur, il fonctionne également avec les conteneurs nommé **LXC** mais aussi les hyperviseurs comme Xen, Bhyve,... 
-  * **AQEMU** qui utilise l'**émulateur** **QEMU** et **hyperviseur** **KVM**.+  * **AQEMU** qui utilise l'émulateur QEMU et hyperviseur KVM.
   * et encore d'autres.   * et encore d'autres.
  
-<note important>Sachez que **QEMU** a servi de base et d'inspiration à **VirtualBox****Xen-HVM****KVM****Win4Lin Pro Desktop****SerialICE****WinUAE****Unicorn****Limbo x86 PC Emulator** et d'autres **projet** d'**émulation** ou **virtualisation**.</note>+<note important>Sachez que QEMU a servi de base et d'inspiration à VirtualBox, Xen-HVM, KVM, Win4Lin Pro Desktop, SerialICE, WinUAE, Unicorn, Limbo x86 PC Emulator et d'autres projets d'émulation ou virtualisation.</note>
  
 ===== Documentation Complémentaire sur QEMU ===== ===== Documentation Complémentaire sur QEMU =====
wiki/virtualisation_et_emulation/qemu.1758056514.txt.gz · Dernière modification : de Thibault Seguin