« QEMU » : différence entre les versions

Un article de Wikipédia, l'encyclopédie libre.
Contenu supprimé Contenu ajouté
Popolon (discuter | contributions)
→‎Matériel émulé : +support émulation ARM
Shymix (discuter | contributions)
Fonctionnalité de suggestions de liens : 3 liens ajoutés.
 
(47 versions intermédiaires par 30 utilisateurs non affichées)
Ligne 1 : Ligne 1 :
{{Infobox Logiciel
{{Infobox Logiciel
| couleur boîte =
| nom = QEMU
| nom = QEMU
| logo =
| image = QEMU-Mdk-Knpx.png
| image = QEMU-Mdk-Knpx.png
| description = QEMU faisant tourner [[Knoppix]] (sur [[Mandriva Linux]])
| légende = QEMU faisant tourner [[Knoppix]] (sur [[Mandriva Linux]])
| développeur = [[Fabrice Bellard]]
| taille image =
| exécutable =
| développeur = [[Fabrice Bellard]]
| date de première version =
| environnement = [[Multiplate-forme]]
| dépôt =
| langue =
| assurance qualité =
| type =
| état =
| licence = [[GNU GPL]]
| langage de programmation =
| site web = [http://www.qemu.org qemu.org]
| langages supportés =
| environnement = [[Multiplate-forme]]
| langues =
| type =
| politique de prix =
| wikidata =
| alternative =
| créateur =
| version précédente =
| version suivante =
}}
}}
'''QEMU''' est un [[logiciel libre]] de [[Virtualisation|machine virtuelle]], pouvant [[émulation|émuler]] un processeur différent si besoin<ref>{{en}} [http://wiki.qemu.org/Main_Page QEMU - Main Page]</ref> et permettant d'exécuter un ou plusieurs systèmes d'exploitation via les [[hyperviseur]]s [[Kernel-based Virtual Machine|KVM]] et [[Xen]], ou seulement des binaires, dans l'environnement d'un [[système d'exploitation]] déjà installé sur la machine.
'''QEMU''' est un [[logiciel libre]] de [[Virtualisation|machine virtuelle]], pouvant [[émulation|émuler]] un [[processeur]] et, plus généralement, une architecture différente si besoin. Il permet d'exécuter un ou plusieurs systèmes d'exploitation via les [[hyperviseur]]s [[Kernel-based Virtual Machine|KVM]] et [[Xen]], ou seulement des binaires, dans l'environnement d'un [[système d'exploitation]] déjà installé sur la machine.


== Présentation ==
== Présentation ==
QEMU permet la virtualisation sans émulation, si le système invité utilise le même processeur que le système hôte, ou bien d'émuler les architectures des processeurs [[x86]], [[ARM Architecture|ARM]], [[PowerPC]], [[Sparc]], [[Architecture MIPS|MIPS]]<ref name="features">{{en}} [http://qemu.weilnetz.de/qemu-doc.html#intro_005ffeatures QEMU Emulator User Documentation 1.1 Features]</ref>
QEMU permet la virtualisation sans émulation, si le système invité utilise le même processeur que le système hôte, ou bien d'émuler les architectures des processeurs [[x86]], [[Architecture ARM|ARM]], [[Atmel AVR|AVR]], [[ColdFire]] [[PowerPC]], [[Sparc]] (32/64), [[Architecture MIPS|MIPS]], [[RISC-V]], [[IBM System/390|S/390]], [[ESP32|Xtensa]]<ref name="features">{{lien web|lang=en|url=hhttps://qemu.readthedocs.io/en/latest/system/index.html|titre=QEMU System Emulation User’s Guide|editeur=qemu|Consulté le=31 janvier 2021}}</ref>


Sous Linux, il peut virtualiser, à l'aide de KVM, les environnements invités x86, ARM, PowerPC pour serveur ou embarqué, ainsi que S390.
Sous Linux, il peut virtualiser, à l'aide de KVM, les environnements invités [[x86]], [[Architecture ARM|ARM]], [[PowerPC]], [[Architecture MIPS|MIPS]] (32 bits seulement), [[Sparc]], ColdFire (motorola 68K) et quelques autres types de processeurs pour serveur, poste de travail ou embarqué, ainsi que S390<ref name="features" />.


QEMU permet d'exécuter un ou plusieurs systèmes d'exploitation (et leurs applications) de manière isolée sur une même machine physique. QEMU fonctionne sur les plateformes [[x86]], [[x64]], [[PowerPC|PPC]], [[Sparc]] et [[Architecture ARM|ARM]] et fonctionne sous les systèmes d'exploitation [[Linux]], [[FreeBSD]], [[NetBSD]], [[OpenBSD]], [[Mac OS X]], [[Unix]] et [[Microsoft Windows]].
QEMU fonctionne sur les plates-formes [[x86]], [[x64]], [[PowerPC|PPC]], [[Sparc]], [[Architecture MIPS|MIPS]], [[Architecture ARM|ARM]]. Il fonctionne sous les systèmes d'exploitation [[Linux]], [[FreeBSD]], [[NetBSD]], [[OpenBSD]], [[Mac OS X]], [[Unix]] et [[Microsoft Windows]]<ref name="features" />.


QEMU permet d'exécuter un ou plusieurs systèmes d'exploitation (et leurs applications) de manière isolée sur une même machine physique. Il permet de simuler les périphériques PCI, son, USB.
Les systèmes d'exploitation invités partagent ainsi les ressources de la machine physique de façon invisible. Il n'y a donc pas besoin d'adapter le système pour fonctionner sur QEMU.

Les systèmes d'exploitation invités partagent ainsi les ressources de la machine physique de façon relativement invisible. Il n'y a donc, dans de nombreux cas, pas besoin d'adapter le système pour fonctionner sur QEMU.


KQEMU est un [[Loadable Kernel Module|module]] pour le [[noyau Linux]] et pour [[FreeBSD]] qui permet d'accélérer l'émulation.
KQEMU est un [[Loadable Kernel Module|module]] pour le [[noyau Linux]] et pour [[FreeBSD]] qui permet d'accélérer l'émulation.
Ligne 82 : Ligne 94 :


== Matériel émulé ==
== Matériel émulé ==
=== ARM ===
QEMU émule les systèmes '''ARM''' suivants :
QEMU émule les systèmes '''[[Architecture ARM|ARM]]''' suivants :
* différentes versions de pxa 25X, 26X, 27X, d'arm9 , d'Arm11, ainsi qu'arm11 MPCore
* différentes versions de pxa 25X, 26X, 27X, d'arm9, d'Arm11, ainsi qu'arm11 MPCore
* [[ARM Cortex-A|ARMv7]] ([[ARM Cortex-M3]], [[ARM Cortex-A8]], [[ARM Cortex-A9 MPCore]], [[ARM Cortex-A15 MPCore]])
* Les instructions 32 bits d'[[ARM Cortex-A50|ARMv8]] (aarm64, 64 bits) dans Qemu 1.6, les versions ultérieures devraient voir le support des instructions 64 bits<ref>{{en}} [http://wiki.qemu.org/ChangeLog/1.6#ARM ChangeLog/1.6] sur le wiki de qemu.org</ref>
* [[ARM Cortex-A|ARMv7]] ([[ARM Cortex-M|ARM Cortex-M3]], [[ARM Cortex-A8]], [[ARM Cortex-A9 MPCore]], [[ARM Cortex-A15 MPCore]])
* Les instructions 32 bits d'[[ARMv8]] (aarm64, 64 bits) dans QEMU 1.6, les versions ultérieures devraient voir le support des instructions 64 bits<ref>{{en}} [http://wiki.qemu.org/ChangeLog/1.6#ARM ChangeLog/1.6] sur le wiki de qemu.org</ref>
* Plus de 210 contrôleurs de périphériques ARM divers ([[UART]], USB, ethernet, i2c, PCI, ISA, SCSI, IRQ, GPIO,...).
* Plus de 210 contrôleurs de périphériques ARM divers ([[UART]], USB, [[ethernet]], i2c, PCI, ISA, SCSI, IRQ, GPIO...)<ref>Taper « qemu-system-arm -device help » pour la liste</ref>.


QEMU simule les systèmes '''x86''' suivants :
=== x86 ===
QEMU simule les systèmes '''[[x86]]''' suivants :
* i440FX host PCI bridge et PIIX3 PCI to ISA bridge
* i440FX host PCI bridge et PIIX3 PCI to ISA bridge
* Cirrus CLGD 5446 PCI VGA card ou une simple carte VGA avec les extensions VESA de Bochs VESA
* Cirrus CLGD 5446 PCI VGA card ou une simple carte VGA avec les extensions VESA de Bochs VESA, émulation avec accès de bas niveau.
* Clavier et souris PS/2
* Clavier et souris PS/2
* 2 interfaces IDE PCI avec support des disques durs et CD-ROM
* 2 interfaces IDE PCI avec support des disques durs et CD-ROM
* Lecteur de disquette
* Lecteur de disquette
* Carte réseau NE2000 PCI
* Carte réseau NE2000 PCI et ISA
* Ports série
* Ports série
* [[Carte son]] Creative Soundblaster 16, ENSONIQ AudioPCI ES1370, Intel 82801AA AC97 Audio compatible, contrôleur audio Intel HD et codecs HDA, Adlib (OPL2, compatible Yamaha YM3812), [[Gravis Ultrasound]] GF1 sound, compatible CS4231A.
* Carte son Soundblaster 16
* Contrôleur USB UHCI en PCI et hub USB virtuel
* BIOS du projet Bochs et le BIOS VGA des projets Plex86/Bochs
* BIOS du projet Bochs et le BIOS VGA des projets Plex86/Bochs


=== PowerPC ===
QEMU simule les systèmes '''PPC''' suivants :
QEMU simule les systèmes '''[[PowerPC]]''' suivants :
* UniNorth PCI Bridge
* UniNorth PCI Bridge
* Carte compatible PCI VGA avec extensions Bochs VESA
* Carte compatible PCI VGA avec extensions Bochs VESA
Ligne 107 : Ligne 123 :
* VIA-CUDA avec clavier et souris ADB
* VIA-CUDA avec clavier et souris ADB


QEMU émule les '''périphériques PREP''' suivants :
=== PREP ===
QEMU émule les '''périphériques [[PREP]]''' suivants :
* PCI Bridge
* PCI Bridge
* Carte compatible PCI VGA avec extensions Bochs VESA
* Carte compatible PCI VGA avec extensions Bochs VESA
Ligne 119 : Ligne 136 :
QEMU utilise le BIOS Open Hack'Ware Open Firmware Compatible
QEMU utilise le BIOS Open Hack'Ware Open Firmware Compatible


QEMU simule les systèmes '''SPARC (sun4m)''' suivants :
=== SPARC ===
QEMU simule les systèmes '''[[Architecture SPARC|SPARC]] (sun4m)''' suivants :
* IOMMU
* IOMMU
* TCX Frame buffer
* TCX Frame buffer
Ligne 126 : Ligne 144 :
* Slave I/O: timers, interrupt controllers, Zilog serial ports
* Slave I/O: timers, interrupt controllers, Zilog serial ports
* QEMU uses the Proll, a PROM replacement
* QEMU uses the Proll, a PROM replacement

=== RISC−V ===
QEMU simule les systèmes [[RISC-V]] suivants :
* Microchip PolarFire SoC Icicle Kit (microchip-icicle-kit), Shakti C Reference Platform (shakti_c), SiFive HiFive Unleashed (sifive_u), ‘virt’ Generic Virtual Platform (virt)
* RV32E, RV32 et RV64
* extension RISC-V de processeur vectoriel
* Extensions zc* (8.1<ref name="8.1">{{lien web|lang=en| url=https://wiki.qemu.org/ChangeLog/8.1#RISC-V| titre=ChangeLog/8.1 — RISC-V| en ligne le=15 août 2023}}</ref>)
* Instructions THead (8.1<ref name="8.1"/>)
* Sous-ensemble de l'extentions de réduction de taille de code (8.1<ref name="8.1"/>)
* Extensions BF16 et Zfa (8.1<ref name="8.1"/>)


== Modules d'accélération ==
== Modules d'accélération ==
Il existe à ce jour trois modules d'accélération pour le noyau Linux. Le système d'exploitation invité est autorisé à être exécuté directement sur le processeur hôte en utilisant ses mécanismes de protection pour intercepter et émuler les événements privilégiés.
Il existe à ce jour trois modules d'accélération pour le noyau Linux. Le système d'exploitation invité est autorisé à être exécuté directement sur le processeur hôte en utilisant ses mécanismes de protection pour intercepter et émuler les événements privilégiés.


* KQEMU est un module noyau Linux 2.4 et 2.6 pour invités x86 sur hôte x86, ou invité x86_64 sur hôte x86_64. Fabrice Bellard, l'auteur de QEMU, avait initialement développé KQEMU sous licence propriétaire, puis libéré le {{Date|6|février|2007}}<ref>{{Lien web|url=http://linuxfr.org/2007/02/06/22028.html|titre=kqemu devient libre, qemu 0.9.0|date=6 février 2007|éditeur=Linuxfr|auteur=Pierre Palatin}}</ref>. Malheureusement, ce module n'a pas trouvé de [[mainteneur]] après sa libération, et il a donc été supprimé du [[code source]] de QEMU le {{Date|8|janvier|2010}}<ref>{{Lien web|url=http://linuxfr.org//2010/01/08/26327.html|titre=Qemu 0.12.1 mais sans kqemu|date=8 janvier 2010|éditeur=Linuxfr|auteur=Brice Maron}}</ref>
* KQEMU était un module noyau Linux 2.4 et 2.6 pour invités x86 sur hôte x86, ou invité x86_64 sur hôte x86_64. Fabrice Bellard, l'auteur de QEMU, avait initialement développé KQEMU sous licence propriétaire, puis libéré le {{Date|6|février|2007}}<ref>{{Lien web|url=http://linuxfr.org/2007/02/06/22028.html|titre=kqemu devient libre, qemu 0.9.0|date=6 février 2007|éditeur=Linuxfr|auteur=Pierre Palatin}}</ref>. Ce module n'a pas trouvé de [[mainteneur]] après sa libération, et il a donc été supprimé du [[code source]] de QEMU le {{Date|8|janvier|2010}}<ref>{{Lien web|url=http://linuxfr.org//2010/01/08/26327.html|titre=Qemu 0.12.1 mais sans kqemu|date=8 janvier 2010|éditeur=Linuxfr|auteur=Brice Maron}}</ref>

* qvm86 est un module noyau Linux sur hôte x86 sous licence GPL. Paul Brook en est le développeur principal, mais il a annoncé l'abandon du projet le {{Date|27|janvier|2007}}<ref>{{Lien web|url=http://savannah.nongnu.org/forum/forum.php?forum_id=4748|titre=qvm86 is obsolete|auteur=Paul Brook|date=21 janvier 2007}}</ref>.
* qvm86 est un module noyau Linux sur hôte x86 sous licence GPL. Paul Brook en est le développeur principal, mais il a annoncé l'abandon du projet le {{Date|27|janvier|2007}}<ref>{{Lien web|url=http://savannah.nongnu.org/forum/forum.php?forum_id=4748|titre=qvm86 is obsolete|auteur=Paul Brook|date=21 janvier 2007}}</ref>.
* En plus d'offrir une accélération substantielle à QEMU, le module [[Kernel-based Virtual Machine|KVM]] est une solution de virtualisation complète pour les systèmes à base de processeur x86 supportant les extensions de virtualisation ([[Intel VT]] et [[AMD Pacifica]]). Jusqu'en {{date-|mars 2009}}, le module KVM nécessitait une version modifiée de QEMU. Depuis lors (version 0.10) les modifications sont directement intégrées dans la version officielle de QEMU.

* En plus d'offrir une accélération substantielle à QEMU, le module [[Kernel-based Virtual Machine|KVM]] est une solution de virtualisation complète pour les systèmes à base de processeur x86 supportant les extensions de virtualisation ([[Intel VT]] et [[AMD Pacifica]]). Jusqu'en mars 2009, le module KVM nécessitait une version modifiée de QEMU. Depuis lors (version 0.10) les modifications sont directement intégrées dans la version officielle de QEMU.


== Comparaison avec d'autres solutions de virtualisation ==
== Comparaison avec d'autres solutions de virtualisation ==
QEMU est une solution d'émulation complète dite « machine virtuelle ». Le matériel vu par le système d'exploitation invité est émulé, et le processeur lui-même peut être émulé.
QEMU est une solution d'émulation complète dite « hyperviseur de type 2 ». Le matériel vu par le système d'exploitation invité est émulé, et le processeur lui-même peut être émulé.


Cette technique de virtualisation a l'avantage de bien isoler les systèmes d'exploitation invités et permet de faire tourner des systèmes d'exploitation non modifiés, au prix d'une forte dégradation de la performance.
Cette technique de virtualisation a l'avantage de bien isoler les systèmes d'exploitation invités et permet de faire tourner des systèmes d'exploitation non modifiés, au prix d'une forte dégradation de la performance.


QEMU se compare à d'autres machines virtuelles comme [[VMware]], [[Bochs]], [[VirtualPC]] ou [[VirtualBox]].
QEMU se compare à d'autres hyperviseurs de type 2, comme [[VMware Workstation]], [[Bochs]], [[VirtualPC]] ou [[VirtualBox]].


Ce qui différencie QEMU de ses concurrents est qu'il est libre et universel : il tourne sur et héberge tous les principaux systèmes d'exploitation, sur architecture x86, PPC ou Sparc.
Ce qui différencie QEMU de ses concurrents est qu'il est libre et universel : il tourne sur et héberge tous les principaux systèmes d'exploitation, sur architecture x86, PPC ou Sparc.


Il est à la fois possible d'utiliser des commandes d'un système d'ISA différente, au sein d'un environnement d'ISA identique, plutôt que d'avoir à émuler l'ensemble du système, grâce à <code>qemu-*arch*-static</code>, ou bien d'émuler l'ensemble d'un système, à l'aide de <code>qemu-system-*arch*</code>
Toutefois, QEMU émule en permanence le processeur et cela peut réduire la performance d'un facteur cinq à dix. Pour pouvoir obtenir des performances plus comparables à un système non virtualisé ou à VMware (réduction de performance d'un facteur 1 à 2 seulement), il faut utiliser un module d'accélération, ce qui nécessite un système Linux sur architecture x86 ou x86_64 avec un noyau 2.4.x ou 2.6.x. Des versions préliminaires pour Windows ou FreeBSD sont disponibles.

Toutefois, QEMU, lorsqu'une architecture différente est présente entre l'hôte et l'invité, émule en permanence le processeur et cela peut réduire la performance d'un facteur cinq à dix. Pour pouvoir obtenir des performances plus comparables à un système non virtualisé ou à VMware (réduction de performance d'un facteur 1 à 2 seulement), il faut utiliser un module d'accélération, ce qui nécessite un système Linux sur architecture x86 ou x86_64. Des versions préliminaires pour Windows ou FreeBSD sont disponibles{{Référence souhaitée}}.


L'article « [[virtualisation]] » présente une comparaison détaillée des différentes techniques de virtualisation.
L'article « [[virtualisation]] » présente une comparaison détaillée des différentes techniques de virtualisation.
Ligne 155 : Ligne 183 :
=== Articles connexes ===
=== Articles connexes ===
*[[Bochs]]
*[[Bochs]]
*[[Box64]]
*[[Machine virtuelle]]
*[[Machine virtuelle]]
*[[PearPC]]
*[[PearPC]]
*[[Plex86]]
*[[Plex86]]
*[[Qcow2]]
*[[VirtualBox]]
*[[VirtualBox]]


=== Liens externes ===
=== Liens externes ===
{{Autres projets|Commons=QEMU}}
* {{en}} [http://wiki.qemu.org/Index.html Site Officiel de QEMU]
* {{en}} [http://wiki.qemu.org/Index.html Site officiel de QEMU]
* {{en}} [http://savannah.nongnu.org/projects/qemu/ Projet QEMU sur Savannah]
* {{en}} [http://savannah.nongnu.org/projects/qemu/ Projet QEMU sur Savannah]
* {{fr}} [http://free.oszoo.org Images prêtes pour QEMU, site officiel de FreeOsZoo]
* {{de}} [http://qemu-buch.de Livre ''QEMU'']
* {{de}} [http://qemu-buch.de Livre "QEMU"]


{{Palette|Virtualisation}}
{{Palette|Virtualisation}}
{{Portail|logiciels libres|informatique|sécurité informatique}}
{{Portail|logiciels libres|informatique}}


{{DEFAULTSORT:Qemu}}
[[Catégorie:Émulateur]]
[[Catégorie:Émulateur]]
[[Catégorie:Logiciel libre sous licence GPL]]
[[Catégorie:Logiciel libre sous licence GPL]]

Dernière version du 9 décembre 2023 à 20:53

QEMU
Description de l'image Qemu logo.svg.
Description de cette image, également commentée ci-après
QEMU faisant tourner Knoppix (sur Mandriva Linux)
Informations
Développé par Fabrice Bellard
Dernière version 9.0.0 ()[1]Voir et modifier les données sur Wikidata
Dépôt gitlab.com/qemu-project/qemuVoir et modifier les données sur Wikidata
Écrit en CVoir et modifier les données sur Wikidata
Interface GTK et Simple DirectMedia LayerVoir et modifier les données sur Wikidata
Système d'exploitation GNU/Linux, BSD, Microsoft Windows et macOSVoir et modifier les données sur Wikidata
Environnement Multiplate-forme
Formats lus Qcow, Virtual Machine Disk et qcow2 (d)Voir et modifier les données sur Wikidata
Formats écrits Qcow et qcow2 (d)Voir et modifier les données sur Wikidata
Type Machine virtuelleVoir et modifier les données sur Wikidata
Licence Licence publique générale GNU version 2Voir et modifier les données sur Wikidata
Documentation qemu-project.gitlab.io/qemu/index.htmlVoir et modifier les données sur Wikidata
Site web www.qemu.orgVoir et modifier les données sur Wikidata

QEMU est un logiciel libre de machine virtuelle, pouvant émuler un processeur et, plus généralement, une architecture différente si besoin. Il permet d'exécuter un ou plusieurs systèmes d'exploitation via les hyperviseurs KVM et Xen, ou seulement des binaires, dans l'environnement d'un système d'exploitation déjà installé sur la machine.

Présentation[modifier | modifier le code]

QEMU permet la virtualisation sans émulation, si le système invité utilise le même processeur que le système hôte, ou bien d'émuler les architectures des processeurs x86, ARM, AVR, ColdFire PowerPC, Sparc (32/64), MIPS, RISC-V, S/390, Xtensa[2]

Sous Linux, il peut virtualiser, à l'aide de KVM, les environnements invités x86, ARM, PowerPC, MIPS (32 bits seulement), Sparc, ColdFire (motorola 68K) et quelques autres types de processeurs pour serveur, poste de travail ou embarqué, ainsi que S390[2].

QEMU fonctionne sur les plates-formes x86, x64, PPC, Sparc, MIPS, ARM. Il fonctionne sous les systèmes d'exploitation Linux, FreeBSD, NetBSD, OpenBSD, Mac OS X, Unix et Microsoft Windows[2].

QEMU permet d'exécuter un ou plusieurs systèmes d'exploitation (et leurs applications) de manière isolée sur une même machine physique. Il permet de simuler les périphériques PCI, son, USB.

Les systèmes d'exploitation invités partagent ainsi les ressources de la machine physique de façon relativement invisible. Il n'y a donc, dans de nombreux cas, pas besoin d'adapter le système pour fonctionner sur QEMU.

KQEMU est un module pour le noyau Linux et pour FreeBSD qui permet d'accélérer l'émulation.

QEMU a été, à ses débuts, développé par Fabrice Bellard.

Architecture[modifier | modifier le code]

Espace utilisateur
Linux
Pilotes
Espace utilisateur
Windows
Pilotes
Espace utilisateur
Linux
Pilotes
Espace utilisateur
Mac OS X
Pilotes
Espace utilisateur
Solaris
Pilotes
QEMU x86 QEMU x86 QEMU PPC QEMU PPC QEMU SPARC
Système hôte : Linux, Mac OS X, Windows
Matériel : processeur, mémoire, stockage, réseau, etc.

Matériel émulé[modifier | modifier le code]

ARM[modifier | modifier le code]

QEMU émule les systèmes ARM suivants :

x86[modifier | modifier le code]

QEMU simule les systèmes x86 suivants :

  • i440FX host PCI bridge et PIIX3 PCI to ISA bridge
  • Cirrus CLGD 5446 PCI VGA card ou une simple carte VGA avec les extensions VESA de Bochs VESA, émulation avec accès de bas niveau.
  • Clavier et souris PS/2
  • 2 interfaces IDE PCI avec support des disques durs et CD-ROM
  • Lecteur de disquette
  • Carte réseau NE2000 PCI et ISA
  • Ports série
  • Carte son Creative Soundblaster 16, ENSONIQ AudioPCI ES1370, Intel 82801AA AC97 Audio compatible, contrôleur audio Intel HD et codecs HDA, Adlib (OPL2, compatible Yamaha YM3812), Gravis Ultrasound GF1 sound, compatible CS4231A.
  • Contrôleur USB UHCI en PCI et hub USB virtuel
  • BIOS du projet Bochs et le BIOS VGA des projets Plex86/Bochs

PowerPC[modifier | modifier le code]

QEMU simule les systèmes PowerPC suivants :

  • UniNorth PCI Bridge
  • Carte compatible PCI VGA avec extensions Bochs VESA
  • 2 interfaces PMAC IDE avec support des disques durs et CD-ROM
  • Carte réseau NE2000 PCI
  • Non Volatile RAM
  • VIA-CUDA avec clavier et souris ADB

PREP[modifier | modifier le code]

QEMU émule les périphériques PREP suivants :

  • PCI Bridge
  • Carte compatible PCI VGA avec extensions Bochs VESA
  • 2 interfaces IDE avec support des disques durs et CD-ROM
  • Lecteur de disquette
  • Carte réseau NE2000 PCI
  • Ports série
  • PREP Non Volatile RAM
  • Clavier et souris compatible PC

QEMU utilise le BIOS Open Hack'Ware Open Firmware Compatible

SPARC[modifier | modifier le code]

QEMU simule les systèmes SPARC (sun4m) suivants :

  • IOMMU
  • TCX Frame buffer
  • Lance (Am7990) Ethernet
  • Non Volatile RAM M48T08
  • Slave I/O: timers, interrupt controllers, Zilog serial ports
  • QEMU uses the Proll, a PROM replacement

RISC−V[modifier | modifier le code]

QEMU simule les systèmes RISC-V suivants :

  • Microchip PolarFire SoC Icicle Kit (microchip-icicle-kit), Shakti C Reference Platform (shakti_c), SiFive HiFive Unleashed (sifive_u), ‘virt’ Generic Virtual Platform (virt)
  • RV32E, RV32 et RV64
  • extension RISC-V de processeur vectoriel
  • Extensions zc* (8.1[5])
  • Instructions THead (8.1[5])
  • Sous-ensemble de l'extentions de réduction de taille de code (8.1[5])
  • Extensions BF16 et Zfa (8.1[5])

Modules d'accélération[modifier | modifier le code]

Il existe à ce jour trois modules d'accélération pour le noyau Linux. Le système d'exploitation invité est autorisé à être exécuté directement sur le processeur hôte en utilisant ses mécanismes de protection pour intercepter et émuler les événements privilégiés.

  • KQEMU était un module noyau Linux 2.4 et 2.6 pour invités x86 sur hôte x86, ou invité x86_64 sur hôte x86_64. Fabrice Bellard, l'auteur de QEMU, avait initialement développé KQEMU sous licence propriétaire, puis libéré le [6]. Ce module n'a pas trouvé de mainteneur après sa libération, et il a donc été supprimé du code source de QEMU le [7]
  • qvm86 est un module noyau Linux sur hôte x86 sous licence GPL. Paul Brook en est le développeur principal, mais il a annoncé l'abandon du projet le [8].
  • En plus d'offrir une accélération substantielle à QEMU, le module KVM est une solution de virtualisation complète pour les systèmes à base de processeur x86 supportant les extensions de virtualisation (Intel VT et AMD Pacifica). Jusqu'en , le module KVM nécessitait une version modifiée de QEMU. Depuis lors (version 0.10) les modifications sont directement intégrées dans la version officielle de QEMU.

Comparaison avec d'autres solutions de virtualisation[modifier | modifier le code]

QEMU est une solution d'émulation complète dite « hyperviseur de type 2 ». Le matériel vu par le système d'exploitation invité est émulé, et le processeur lui-même peut être émulé.

Cette technique de virtualisation a l'avantage de bien isoler les systèmes d'exploitation invités et permet de faire tourner des systèmes d'exploitation non modifiés, au prix d'une forte dégradation de la performance.

QEMU se compare à d'autres hyperviseurs de type 2, comme VMware Workstation, Bochs, VirtualPC ou VirtualBox.

Ce qui différencie QEMU de ses concurrents est qu'il est libre et universel : il tourne sur et héberge tous les principaux systèmes d'exploitation, sur architecture x86, PPC ou Sparc.

Il est à la fois possible d'utiliser des commandes d'un système d'ISA différente, au sein d'un environnement d'ISA identique, plutôt que d'avoir à émuler l'ensemble du système, grâce à qemu-*arch*-static, ou bien d'émuler l'ensemble d'un système, à l'aide de qemu-system-*arch*

Toutefois, QEMU, lorsqu'une architecture différente est présente entre l'hôte et l'invité, émule en permanence le processeur et cela peut réduire la performance d'un facteur cinq à dix. Pour pouvoir obtenir des performances plus comparables à un système non virtualisé ou à VMware (réduction de performance d'un facteur 1 à 2 seulement), il faut utiliser un module d'accélération, ce qui nécessite un système Linux sur architecture x86 ou x86_64. Des versions préliminaires pour Windows ou FreeBSD sont disponibles[réf. souhaitée].

L'article « virtualisation » présente une comparaison détaillée des différentes techniques de virtualisation.

Notes et références[modifier | modifier le code]

  1. Michael Roth, « [ANNOUNCE] QEMU 9.0.0 is now available », (consulté le )
  2. a b et c (en) « QEMU System Emulation User’s Guide », qemu (consulté le )
  3. (en) ChangeLog/1.6 sur le wiki de qemu.org
  4. Taper « qemu-system-arm -device help » pour la liste
  5. a b c et d (en) « ChangeLog/8.1 — RISC-V »,
  6. Pierre Palatin, « kqemu devient libre, qemu 0.9.0 », Linuxfr,
  7. Brice Maron, « Qemu 0.12.1 mais sans kqemu », Linuxfr,
  8. Paul Brook, « qvm86 is obsolete »,

Voir aussi[modifier | modifier le code]

Articles connexes[modifier | modifier le code]

Liens externes[modifier | modifier le code]

Sur les autres projets Wikimedia :