Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente |
wiki:virtualisation_et_emulation:qemu [2025/01/13 00:45] – [QEMU pour la virtualisation sous KVM] Thibault Seguin | wiki:virtualisation_et_emulation:qemu [2025/01/13 11:00] (Version actuelle) – [Composition de de QEMU] Thibault Seguin |
---|
**QEMU** n'est pas seulement un **émulateur** mais permet d'agir comme un **logiciel** de **virtualisation** (**back-end**), par exemple avec l'**hyperviseur** par défaut de **Linux** nommé **KVM** (**//Kernel-based Virtual Machine//**) mais il peut aussi servir de **back-end** pour les **hyperviseurs** comme **Xen**, **HVF** d'**Apple**, **WHPX** de **Windows** ou **NVMM** de **NetBSD**. Niveau **virtualisation**, **QEMU** peut **virtualiser** des **environnements invités** (**machines virtuelles**) **x86**, **ARM**, **PowerPC**, **MIPS** (''32 bits'' seulement), **Sparc**, **ColdFire** (**Motorola M68K**), **S3903**,... Par contre, pour permettre de **virtualiser** un **OS** invité, il faut qu'il soit de la même **architecture processeur** que l'**OS** de l'**ordinateur hôte**, par exemple pour virtualiser un **OS** pour **processeur** de type **AMD64**, il faut que votre **OS Hôte** soit aussi un **OS** de type **AMD64**. | **QEMU** n'est pas seulement un **émulateur** mais permet d'agir comme un **logiciel** de **virtualisation** (**back-end**), par exemple avec l'**hyperviseur** par défaut de **Linux** nommé **KVM** (**//Kernel-based Virtual Machine//**) mais il peut aussi servir de **back-end** pour les **hyperviseurs** comme **Xen**, **HVF** d'**Apple**, **WHPX** de **Windows** ou **NVMM** de **NetBSD**. Niveau **virtualisation**, **QEMU** peut **virtualiser** des **environnements invités** (**machines virtuelles**) **x86**, **ARM**, **PowerPC**, **MIPS** (''32 bits'' seulement), **Sparc**, **ColdFire** (**Motorola M68K**), **S3903**,... Par contre, pour permettre de **virtualiser** un **OS** invité, il faut qu'il soit de la même **architecture processeur** que l'**OS** de l'**ordinateur hôte**, par exemple pour virtualiser un **OS** pour **processeur** de type **AMD64**, il faut que votre **OS Hôte** soit aussi un **OS** de type **AMD64**. |
| |
À l'origine **QEMU** a été **développé** par **Fabrice Bellard** en 2003, puis en 2006, la **fondation QEMU** a été créée pour pousuivre le **développement** avec de nombreux **contributeurs** externes. C'est dans les années 2008 que **QEMU** a été adopté par l'**hyperviseur** de **Linux**, **KVM**. La dernière version **stable** de **QEMU** est **QEMU 9.2.0**, sortie le 10 décembre 2024. | À l'origine **QEMU** a été **développé** par **Fabrice Bellard** en 2003, puis en 2006, la **fondation QEMU** a été créée pour pousuivre le **développement** avec de nombreux **contributeurs** externes. C'est dans les années 2008 que **QEMU** a été adopté par l'**hyperviseur** de **Linux**, **KVM**. La dernière version **stable** de **QEMU** est **QEMU 9.2.0**, sortie le 10 décembre 2024, **QEMU** est sous **licence** **GNU GPLv2**. |
| |
===== Caractéristiques de QEMU ===== | ===== Caractéristiques de QEMU ===== |
extended l2: false</file> | extended l2: false</file> |
| |
<note>Avec les **images disque** de type ''.qcow2'' vous pouvez, tout comme les ''.vdi'' de **VirtualBox**, avoir une **image disque** de ''32 Go'' qui n'est pas ''fixe'', c'est à dire, qui ne prenne que ''2 Go'' (la taille de l'**OS** après installation) sur le **média de stockage** de votre **ordinateur** et qui ne grossisse qu'au fur et à mesure que vous installez des **logiciels** ou **ajouter** des **fichiers** à votre **image disque**.</note> | <note>Avec les **images disque** de type ''.qcow2'' vous pouvez, tout comme les ''.vdi'' de **VirtualBox**, avoir une **image disque** de ''32 Go'' qui n'est pas ''fixe'', c'est à dire, qui ne prenne que ''2 Go'' (la taille de l'**OS** après installation) sur le **média de stockage** de votre **ordinateur** et qui ne grossisse qu'au fur et à mesure que vous installez des **logiciels** ou ajouter des **fichiers** à votre **image disque**.</note> |
| |
==== QEMU en tant qu'émulateur ==== | ==== QEMU en tant qu'émulateur ==== |
**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 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''.\\ |
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ôte** de type **Intel** ''64 bits''. |
| |
| ==== Les interfaces graphiques sous QEMU ==== |
| **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**,... |
| * **AQEMU** qui utilise l'**émulateur** **QEMU** et **hyperviseur** **KVM**. |
| * 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> |
| |
===== Documentation Complémentaire sur QEMU ===== | ===== Documentation Complémentaire sur QEMU ===== |
Vous trouverez une large **documentation** sur l'**émulateur**, dans les [[wiki:virtualisation_et_emulation:qemu:tutoriels sur QEMU]] | Vous trouverez une large **documentation** sur l'**émulateur**, dans les [[wiki:virtualisation_et_emulation:qemu:tutoriels sur QEMU]] |