Cet article abordera le sujet de QEMU, qui est d'une grande pertinence et d'un grand intérêt aujourd'hui. QEMU est un sujet qui a retenu l'attention d'un large spectre du public, car son impact s'étend à divers domaines de la société. Au fil des prochaines lignes, différents aspects liés à QEMU seront analysés, de son origine à son influence aujourd'hui. Les recherches et études pertinentes sur QEMU seront passées en revue, ainsi que les témoignages d'experts dans le domaine. L'intention est de fournir au lecteur une vue complète et mise à jour sur QEMU, permettant ainsi une compréhension approfondie et globale de ce sujet.
Développé par | Fabrice Bellard |
---|---|
Dernière version | 9.2.0 (), |
Dépôt | gitlab.com/qemu-project/qemu |
Écrit en | C |
Interface | GTK et Simple DirectMedia Layer |
Système d'exploitation | GNU/Linux, BSD, Microsoft Windows et macOS |
Environnement | Multiplate-forme |
Formats lus | Qcow, Virtual Machine Disk et qcow2 (d) |
Formats écrits | Qcow et qcow2 (d) |
Type | Machine virtuelle |
Licence | Licence publique générale GNU version 2 |
Documentation | qemu-project.gitlab.io/qemu/index.html |
Site web | www.qemu.org |
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.
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
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.
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.
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.
|
|
|
|
| |||||||||||||||
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. |
QEMU émule les systèmes ARM suivants :
QEMU simule les systèmes x86 suivants :
QEMU simule les systèmes PowerPC suivants :
QEMU émule les périphériques PREP (en) suivants :
QEMU utilise le BIOS Open Hack'Ware Open Firmware Compatible
QEMU simule les systèmes SPARC (sun4m) suivants :
QEMU simule les systèmes RISC-V suivants :
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.
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.
L'article « virtualisation » présente une comparaison détaillée des différentes techniques de virtualisation.