Accueil🇫🇷Chercher

QEMU

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

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

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é

QEMU émule les systèmes ARM suivants :

  • diffĂ©rentes versions de pxa 25X, 26X, 27X, d'arm9, d'Arm11, ainsi qu'arm11 MPCore
  • ARMv7 (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[3]
  • Plus de 210 contrĂ´leurs de pĂ©riphĂ©riques ARM divers (UART, USB, ethernet, i2c, PCI, ISA, SCSI, IRQ, GPIO...)[4].

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

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

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

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

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.

  • 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 [5]. 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 [6]
  • 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 [7].
  • 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

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.

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. Des versions préliminaires pour Windows ou FreeBSD sont disponibles.

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

Notes et références

  1. Michael Roth, « [ANNOUNCE] QEMU 8.0.2 Stable released », (consulté le )
  2. (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. Pierre Palatin, « kqemu devient libre, qemu 0.9.0 », Linuxfr,
  6. Brice Maron, « Qemu 0.12.1 mais sans kqemu », Linuxfr,
  7. Paul Brook, « qvm86 is obsolete »,

Voir aussi

Articles connexes

Liens externes

Cet article est issu de wikipedia. Text licence: CC BY-SA 4.0, Des conditions supplémentaires peuvent s’appliquer aux fichiers multimédias.