QEMU

Un article de Wikipédia, l'encyclopédie libre.

QEMU faisant tourner Knoppix (sur Mandriva Linux)
QEMU faisant tourner Knoppix (sur Mandriva Linux)

QEMU est une machine virtuelle (ou émulateur de système) libre qui permet de faire tourner un ou plusieurs systèmes d'exploitation (ou seulement des processus) sur un système d'exploitation déjà installé sur la machine.

Sommaire

[modifier] Présentation

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, x86-64, PPC, Sparc et ARM et fonctionne sous les systèmes d'exploitation Linux, FreeBSD, OpenBSD, Mac OS X, Unix et Windows.

Les OS invités partagent ainsi les ressources de la machine physique et n'ont pas « conscience » d'être virtualisés. Ils n'ont donc pas besoin d'être adaptés pour fonctionner sur QEMU.

KQEMU est un module pour le noyau Linux qui permet d'accélérer l'émulation sur les systèmes d'exploitation Linux.

[modifier] Architecture de QEMU

User-space
Linux
Drivers
User-space
Windows
Drivers
User-space
Linux
Drivers
User-space
Mac OS X
Drivers
User-space
Solaris
Drivers
QEMU x86 QEMU x86 QEMU PPC QEMU PPC QEMU SPARC
OS hôte : Linux, Mac OS X, Windows
Matériel : processeur, mémoire, stockage, réseau, etc.

[modifier] Matériel émulé par QEMU

QEMU simule le système x86 suivant :

  • 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
  • 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
  • Ports série
  • Carte son Soundblaster 16
  • BIOS du projet Bochs et le BIOS VGA des projets Plex86/Bochs


QEMU simule le système PPC suivant :

  • 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 IDE interfaces with hard disk and CD-ROM support
  • 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 le système SPARC (sun4m) suivant :

  • 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

[modifier] Modules d'accélération

Il existe à ce jour trois modules d'accélération pour le noyau Linux. L'OS 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, est le développeur unique pour l'instant mais cela ne devrait pas tarder à changer. En effet, il cherchait à sponsoriser ce travail avant de le publier sous licence libre, ce qui est désormais chose faite depuis le 6 février 2007[1].
  • qvm86 est un module noyau Linux sur hôte x86 sous licence GPL. Paul Brook est le développeur principal.
  • 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). Pour l'instant, le module Kvm requiert une version modifiée de qemu. Malgré tout, Il est prévu d'intégrer [1] ces modifications dans la version officielle de qemu.

[modifier] Comparaison avec d'autres solutions de virtualisation

QEMU est une solution d'émulation complète dite « machine virtuelle ». Le matériel vu par l'OS invité est émulé, et le processeur lui même peut être émulé.

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

QEMU se compare à d'autres machines virtuelles comme VMware, Bochs ou Virtual PC.

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 avec un noyau 2.4.x ou 2.6.x. Des versions préliminaires pour Windows ou FreeBSD sont disponibles.

On trouvera dans l'article virtualisation une comparaison plus détaillée des différentes techniques de virtualisation.

[modifier] Notes et références

  1. DLFP: kqemu devient libre, qemu 0.9.0

[modifier] Voir aussi

[modifier] Articles connexes

[modifier] Liens externes