Inhaltsverzeichnis
Prozessor-Architekturen
Als Hardware-Emulator emuliert QEMU unterschiedliche Architekturen. Bei einigen Linux-Distributionen muss dazu das Paket qemu-kvm-extras installiert sein. QEMU übersetzt nativen Assembler-Code des Gast-Prozessors, zum Beispiel SPARC, in eine Sequenz von Mikro-Operationen (micro operations). In einem zweiten Schritt werden diese Mikro-Operationen in ausführbaren Code für den Host-Prozessor, zum Beispiel x86, umgewandelt und in einen Translation-Block (TB) gepackt. Diese Translation-Blöcke werden in einen Cache gehalten und können wieder verwendet werden. Dadurch verringert sich die Ausführungszeit. Emuliert werden diese Architekturen:
- PC (x86- oder x86_64-Prozessor)
- ISA PC (alter PC ohne PCI-Bus)
- PREP (PowerPC-Prozessor)
- G3 Beige PowerMac (PowerPC-Prozessor)
- Mac99 PowerMac (PowerPC-Prozessor)
- Sun4m/Sun4c/Sun4d (32-Bit Sparc-Prozessor)
- Sun4u/Sun4v (64-Bit Sparc-Prozessor)
- Malta Board (32-Bit und 64-Bit MIPS-Prozessoren)
- MIPS Magnum (64-Bit MIPS-Prozessor)
- ARM Integrator/CP (ARM)
- ARM Versatile Baseboard (ARM)
- ARM RealView Emulation Baseboard (ARM)
- Spitz, Akita, Borzoi, Terrier und Tosa PDAs (PXA270-Prozessor)
- Luminary Micro LM3S811EVB (ARM Cortex-M3)
- Luminary Micro LM3S6965EVB (ARM Cortex-M3)
- Freescale MCF5208EVB (ColdFire V2).
- Arnewsh MCF5206 Evaluation Board (ColdFire V2).
- Palm Tungsten|E PDA (OMAP310-Prozessor)
- N800- und N810-Tabletts (OMAP2420-Prozessor)
- MusicPal (MV88W8618 ARM-Prozessor)
- Gumstix Connex und Verdex Motherboards (PXA255/270).
- Siemens SX1 Smartphone (OMAP310-Prozessor)
- Syborg SVP base model (ARM Cortex-A8)
- AXIS-Devboard88 (CRISv32 ETRAX-FS)
- Petalogix Spartan 3aDSP1800 MMU Ref Design (MicroBlaze).
x86
Die meisten PC-Betriebssysteme arbeiten mit der x86-Architektur. Die x86-Architektur baut auf einem CISC-Befehlssatz auf. Die Abkürzung CISC steht für Complex Instruction Set Computing (Rechnen mit komplexem Befehlssatz). Mit Intels erster 16-Bit-CPU, dem 8086, wurde die x86-Architektur 1978 eingeführt. Durch den enormen Erfolg des IBM-PCs und seiner Nachbauten wurde die x86-Architektur innerhalb weniger Jahre zu einer der erfolgreichsten Prozessorarchitekturen. Außer Intel produzieren auch andere Hersteller x86-kompatible CPUs, wie zum Beispiel die Firma AMD. Mit dem 80386 führte Intel 1985 die erste x86-CPU mit einer 32-Bit-Architektur ein. 2003 brach für x86 die 64-Bit-Ära an, diesmal auf Initiative von AMD. Der 64-Bit-Standard heißt AMD64 und wurde unter dem Namen EM64T auch von Intel übernommen. Für die x86-Architektur wird folgende Hardware emuliert:
- SeaBIOS (ab QEMU 0.12.0), PC-BIOS vom Bochs-Projekt (bis QEMU 0.11)
- Plex86/Bochs LGPL VGA BIOS
- Symmetrisches Multiprozessorsystem (SMP) mit bis 255 CPUs
- PC-Bus: PCI oder ISA-System (i440FX Host PCI Bridge und PIIX3 PCI zu ISA Bridge)
- zwei PCI-IDE-Schnittstellen mit Unterstützung für maximal vier (virtuelle) Festplatten beziehungsweise CD/DVD-ROMs
- zwei Diskettenlaufwerke
- CD-/DVD-Laufwerk
- Grafikkarte (Cirrus CLGD 5446 PCI VGA-Karte oder Standard-VGA-Grafikkarte mit Bochs-VESA-BIOS-Extension)
- PS/2-Maus und -Tastatur
- PCI-UHCI-USB-Controller und virtueller USB-Hub
- PCI-/ISA-Netzwerkadapter
- Netzwerk-Karten (Intel e1000 und andere)
- Parallel-Port
- Serielle Ports
- Soundkarten (Creative Soundblaster 16, ENSONIQ AudioPCI ES1370 PCI, Intel 82801AA AC97, Adlib OPL2 Yamaha YM3812, Gravis Ultrasound GF1, CS4231A)
- Supervisor-Mode Execution Prevention (SMEP) von Intel
- Funktionalitäten von VIA-CPUs.
Die 32-Bit-Version der x86-Prozessorarchitektur wird mit qemu aufgerufen. In späteren QEMU-Versionen soll qemu-system-i386 verwendet werden.
Host ~$ qemu
Die Option -machine type= beziehungsweise -M (vor QEMU 0.15) ermöglicht die Auswahl des emulierten Maschinen-Typs (PC-Bus-Architektur). Wird die Angabe zum Maschinen-Type weggelassen oder die Default-Option -machine type=pc angegeben, wird ein heutiger Standard-PC mit PCI-Bus emuliert. Die möglichen Maschinen-Typen zeigt -machine ? an. Die Maschinen-Typen xenfv und xenpv stehen nur bei aktiviertem Xen-Support zur Verfügung.
Host ~$ qemu -machine ?
Supported machines are: pc Standard PC (alias of pc-0.14) pc-0.14 Standard PC (default) pc-0.13 Standard PC pc-0.12 Standard PC pc-0.11 Standard PC, qemu 0.11 pc-0.10 Standard PC, qemu 0.10 isapc ISA-only PC xenfv Xen Fully-virtualized PC xenpv Xen Para-virtualized PC
Bei älteren QEMU-Version ist -M ? zu verwenden.
Host ~$ qemu -M ?
Mit neueren QEMU-Versionen ändert sich die emulierte Hardware. Erhält QEMU ein Update, haben einige Gast-Systemen Probleme mit der geänderten Hardware. Zum Beispiel müssen manche Microsoft Windows-Systeme dann neu aktiviert werden. Damit sich die emulierte Hardware nicht ändert, ist der Maschinen-Typ an die QEMU-Version zu binden. Im folgenden Beispiel wird der Maschinen-Typ pc der QEMU-Version 0.11.0 vorgegeben.
Host ~$ qemu -machine type=pc-0.11
Bei älteren QEMU-Version ist -M pc-0.11 zu verwenden.
Host ~$ qemu -M pc-0.11
Mit der Option -machine type=isapc wird ein PC-Modell mit dem älteren ISA-Bus (Industry Standard Architecture) emuliert. Dies kann bei älteren Betriebssystemen, bei der Emulation von Industrie-PCs und eingebetteten Systemen sinnvoll sein.
Host ~$ qemu -M isapc
Die Option -cpu ermöglicht die Auswahl des Prozessor-Typs (CPU - Central Prozessing Unit). Die möglichen Typen zeigt -cpu ? an.
Host ~$ qemu -cpu ?
x86 [n270] x86 [athlon] x86 [pentium3] x86 [pentium2] x86 [pentium] x86 [486] x86 [coreduo] x86 [kvm32] x86 [qemu32] x86 [kvm64] x86 [core2duo] x86 [phenom] x86 [qemu64]
Ein 486-Prozessor wird mit -cpu 486 emuliert.
Host ~$ qemu -cpu 486
Zur Emulation von 64-Bit-Prozessoren dient der Befehl qemu-system-x86_64. Wird unter einem 32-Bit-Host mit qemu-system-x86_64 eine 64-Bit-Architektur emuliert, stehen weder KVM noch KQEMU zur Verfügung.
Host ~$ qemu-system-x86_64
Die möglichen Maschinen-Typen zeigt -machine ? an.
Host ~$ qemu-system-x86_64 -machine ?
Supported machines are: pc Standard PC (alias of pc-0.14) pc-0.14 Standard PC (default) pc-0.13 Standard PC pc-0.12 Standard PC pc-0.11 Standard PC, qemu 0.11 pc-0.10 Standard PC, qemu 0.10 isapc ISA-only PC xenfv Xen Fully-virtualized PC xenpv Xen Para-virtualized PC
Die möglichen CPU-Typen zeigt -cpu ? an.
Host ~$ qemu-system-x86_64 -cpu ?
x86 Opteron_G3 x86 Opteron_G2 x86 Opteron_G1 x86 Nehalem x86 Penryn x86 Conroe x86 [n270] x86 [athlon] x86 [pentium3] x86 [pentium2] x86 [pentium] x86 [486] x86 [coreduo] x86 [kvm32] x86 [qemu32] x86 [kvm64] x86 [core2duo] x86 [phenom] x86 [qemu64]
Zusätzliche CPU-Definitionen werden dem CPU-Typ nach einem Komma übergeben. Mit der Default-Einstellung +svm werden Prozessoren mit Hardware-Virtualisierungstechniken emuliert. Das heißt, das Gast-System kann als Host-System für weitere KVM- beziehungsweise Xen-Instanzen dienen.
Host ~$ qemu-system-x86_64 -cpu qemu64,+svm
Soll die Emulation dieser Hardware-Virtualisierungstechnik unterdrückt werden, ist -svm vorzugeben.
Host ~$ qemu-system-x86_64 -cpu qemu64,-svm
Eine schnellere Variante gegenüber dieser Emulation ergibt sich durch die KVM hardware-unterstützte Virtualisierung (siehe unten). Dazu muss das Host-System über AMD-Prozessoren verfügen und das Kernel-Modul kvm_amd mit den Optionen nested=1 und npt=1 geladen sein (siehe http://qemu-buch.de/d/Installation). Weiterhin wird QEMU ab der Version 0.14.0 benötigt.
Host ~$ qemu-system-x86_64 -machine type=pc,accel=kvm -cpu qemu64,+svm
Im Gast-System (64-Bit-Linux) wird das SVM-Flag überprüft.
Gast ~$ grep „svm“ /proc/cpuinfo
Werden Zeilen mit svm ausgegeben, können im Gast-System die KVM-Module geladen werden.
SPARC
Die SPARC-Architektur (Scalable Processor ARChitecture) wird von der Firma Sun Microsystems (jetzt Oracle Corporation) ab 1985 entwickelt. SPARC-Prozessoren sind hauptsächlich in den Produkten von Sun zu finden. Neben SunOS beziehungsweise Solaris können auf SPARC-Systemen Linux oder BSD-Varianten eingesetzt werden. 1995 wurde die ursprüngliche 32-Bit-Architektur auf 64-Bit erweitert und unter dem Namen UltraSPARC vermarktet. Im QEMU-Paket ist das Programm qemu-system-sparc zur Emulation von 32-Bit-SPARC-Systemen enthalten. Folgende Sun4m-Architekturen werden emuliert:
- SPARCstation 4
- SPARCstation 5
- SPARCstation 10
- SPARCstation 20
- SPARCserver 600MP
- SPARCstation LX
- SPARCstation Voyager
- SPARCclassic
- SPARCbook
Die Emulationen von SPARCstation 2 (sun4c), SPARCserver 1000 und SPARCcenter 2000 (sun4d) sind auch möglich. Folgende Sun4m-, Sun4c- und Sun4d-Hardware wird emuliert:
- IOMMU oder IO-UNITs
- TCX-Frame-Buffer
- Lance (Am7990) Ethernet Netzwerk-Karte
- NVRAM M48T02/M48T08
- Slave I/O: Timers, Interrupt Controller, Zilog Serial Ports, Tastatur und Power/Reset-Logic
- ESP-SCSI-Controller mit Hard-Disk- und CD-ROM-Support
- Floppy-Laufwerk (nicht für SS-600MP)
- CS4231-Sound-Device (nur für SS-5)
Die maximale Größe des Arbeitsspeichers (RAM) ist abhängig vom Maschinentyp. Bei SS-5 kann der RAM maximal 256 MByte betragen, sonst 2047 MByte. Die Maschinen-Typen zeigt -machine ? an.
Host ~$ qemu-system-sparc -machine ?
Supported machines are: leon3_generic Leon-3 generic SS-5 Sun4m platform, SPARCstation 5 (default) SS-10 Sun4m platform, SPARCstation 10 SS-600MP Sun4m platform, SPARCserver 600MP SS-20 Sun4m platform, SPARCstation 20 Voyager Sun4m platform, SPARCstation Voyager LX Sun4m platform, SPARCstation LX SS-4 Sun4m platform, SPARCstation 4 SPARCClassic Sun4m platform, SPARCClassic SPARCbook Sun4m platform, SPARCbook SS-1000 Sun4d platform, SPARCserver 1000 SS-2000 Sun4d platform, SPARCcenter 2000 SS-2 Sun4c platform, SPARCstation 2
qemu-system-sparc emuliert bis zu 16 CPUs. Linux begrenzt aber die Anzahl auf maximal vier CPUs. Die möglichen CPU-Typen zeigt -cpu ? an.
Host ~$ qemu-system-sparc -cpu ?
Sparc Fujitsu MB86900 IU 00000000 FPU 00080000 MMU 00000000 NWINS 7 -swap -mul -div -flush -fsqrt -fmul Sparc Fujitsu MB86904 IU 04000000 FPU 00080000 MMU 04000000 NWINS 8 Sparc Fujitsu MB86907 IU 05000000 FPU 00080000 MMU 05000000 NWINS 8 Sparc LSI L64811 IU 10000000 FPU 00020000 MMU 10000000 NWINS 8 -mul -div -flush -fmul Sparc Cypress CY7C601 IU 11000000 FPU 00060000 MMU 10000000 NWINS 8 -mul -div -flush -fmul Sparc Cypress CY7C611 IU 13000000 FPU 00060000 MMU 10000000 NWINS 8 -mul -div -flush -fmul Sparc TI MicroSparc I IU 41000000 FPU 00080000 MMU 41000000 NWINS 7 -fsmuld Sparc TI MicroSparc II IU 42000000 FPU 00080000 MMU 02000000 NWINS 8 Sparc TI MicroSparc IIep IU 42000000 FPU 00080000 MMU 04000000 NWINS 8 Sparc TI SuperSparc 40 IU 41000000 FPU 00000000 MMU 00000800 NWINS 8 Sparc TI SuperSparc 50 IU 40000000 FPU 00000000 MMU 01000800 NWINS 8 Sparc TI SuperSparc 51 IU 40000000 FPU 00000000 MMU 01000000 NWINS 8 Sparc TI SuperSparc 60 IU 40000000 FPU 00000000 MMU 01000800 NWINS 8 Sparc TI SuperSparc 61 IU 44000000 FPU 00000000 MMU 01000000 NWINS 8 Sparc TI SuperSparc II IU 40000000 FPU 00000000 MMU 08000000 NWINS 8 Sparc Ross RT625 IU 1e000000 FPU 00020000 MMU 1e000000 NWINS 8 Sparc Ross RT620 IU 1f000000 FPU 00020000 MMU 1f000000 NWINS 8 Sparc BIT B5010 IU 20000000 FPU 00000000 MMU 20000000 NWINS 8 -mul -div -flush -fmul Sparc Matsushita MN10501 IU 50000000 FPU 00000000 MMU 50000000 NWINS 8 -swap -div -flush -fmul Sparc Weitek W8601 IU 90000000 FPU 00060000 MMU 10000000 NWINS 8 Sparc LEON2 IU f2000000 FPU 00080000 MMU f2000000 NWINS 8 Sparc LEON3 IU f3000000 FPU 00080000 MMU f3000000 NWINS 8
Default CPU feature flags (use '-' to remove): float swap mul div flush fsqrt fmul fsmuld
Available CPU feature flags (use '+' to add): float128 vis1 vis2 hypv cmt gl
Numerical features (use '=' to set): iu_version fpu_version mmu_version nwindows
Für den SPARC-Emulator ist das OpenBIOS (http://www.openbios.org) implementiert. Ziel von OpenBIOS ist eine vollständige Kompatibilität zum Standard EEE 1275-1994 bei der Firmware. Ab QEMU 0.15 ist es möglich neben Linux auch Solaris 8 für Sparc32 und HelenOS für Sparc64 zu booten. Der SPARC32-System-Emulator hat diese zusätzlichen Optionen:
-g WxHx[xDEPTH]
Definiert den initialen Grafik-Modus (Default = 1024x768x8). Es kann auch der Modus 1024x768x24 eingestellt werden.
-prom-env string
Mit dieser Option setzt man OpenBIOS-Variablen im NVRAM. Im folgenden Beispiel wird der automatische Boot-Vorgang unterbunden und der Prompt des OpenBIOS erscheint.
Host ~$ qemu-system-sparc -machine type=SPARCClassic \
-g 1024x768x24 -prom-env 'auto-boot?=false'
Hilfestellung zu den OpenBIOS-Befehlen erhält man mit help.
0 > help
Der Bootvorgang wird mit dem Befehl boot gestartet. Soll von CD-ROM gestartet werden, ist boot cdrom einzugeben. Beispiele virtueller Maschinen mit SPARC-Architektur werden im Abschnitt Gast-Systeme erläutert.
Das Programm qemu-system-sparc64 dient zur Emulation von folgenden 64-Bit-SPARC-Systemen: Sun4u (UltraSPARC PC-ähnlich), Sun4v (T1 PC-ähnlich), oder generische Niagara-Maschine (T1). Folgende Sun4u-Architekturen werden emuliert:
- UltraSparc IIi APB PCI Bridge
- PCI VGA kompatible Grafikkarte mit VESA Bochs Extensions
- PS/2 Maus und Tastatur
- NVRAM M48T59
- PC-kompatible serielle Ports
- zwei PCI-IDE-Interfaces mit Hard-Disk- und CD-ROM-Support
- Disketten-Laufwerk
Der SPARC64-System-Emulator besitzt die gleichen Optionen wie der SPARC32-System-Emulator. Die möglichen Maschinen-Typen zeigt -machine ? an.
Host ~$ qemu-system-sparc64 -machine ?
Supported machines are: sun4u Sun4u platform (default) sun4v Sun4v platform Niagara Sun4v platform, Niagara
Die möglichen CPU-Typen zeigt -cpu ? an.
Host ~$ qemu-system-sparc64 -cpu ?
Sparc Fujitsu Sparc64 IU 0004000200000000 FPU 00000000 MMU 00000000 NWINS 4 Sparc Fujitsu Sparc64 III IU 0004000300000000 FPU 00000000 MMU 00000000 NWINS 5 Sparc Fujitsu Sparc64 IV IU 0004000400000000 FPU 00000000 MMU 00000000 NWINS 8 Sparc Fujitsu Sparc64 V IU 0004000551000000 FPU 00000000 MMU 00000000 NWINS 8 Sparc TI UltraSparc I IU 0017001040000000 FPU 00000000 MMU 00000000 NWINS 8 Sparc TI UltraSparc II IU 0017001120000000 FPU 00000000 MMU 00000000 NWINS 8 Sparc TI UltraSparc IIi IU 0017001291000000 FPU 00000000 MMU 00000000 NWINS 8 Sparc TI UltraSparc IIe IU 0017001314000000 FPU 00000000 MMU 00000000 NWINS 8 Sparc Sun UltraSparc III IU 003e001434000000 FPU 00000000 MMU 00000000 NWINS 8 Sparc Sun UltraSparc III Cu IU 003e001541000000 FPU 00000000 MMU 00000001 NWINS 8 Sparc Sun UltraSparc IIIi IU 003e001634000000 FPU 00000000 MMU 00000000 NWINS 8 Sparc Sun UltraSparc IV IU 003e001831000000 FPU 00000000 MMU 00000002 NWINS 8 Sparc Sun UltraSparc IV+ IU 003e001922000000 FPU 00000000 MMU 00000000 NWINS 8 +cmt Sparc Sun UltraSparc IIIi+ IU 003e002200000000 FPU 00000000 MMU 00000001 NWINS 8 Sparc Sun UltraSparc T1 IU 003e002302000000 FPU 00000000 MMU 00000003 NWINS 8 +hypv +cmt +gl Sparc Sun UltraSparc T2 IU 003e002402000000 FPU 00000000 MMU 00000003 NWINS 8 +hypv +cmt +gl Sparc NEC UltraSparc I IU 0022001040000000 FPU 00000000 MMU 00000000 NWINS 8 Default CPU feature flags (use '-' to remove): float swap mul div flush fsqrt fmul vis1 vis2 fsmuld Available CPU feature flags (use '+' to add): float128 hypv cmt gl Numerical features (use '=' to set): iu_version fpu_version mmu_version nwindows
Beispiele mit qemu-system-sparc findet man unter http://qemu-buch.de/d/Gast-Systeme/_SPARC-Architektur.
ARM
Die ARM-Architektur wurde 1983 vom englischen Computerhersteller Acorn Computers Ltd. als Entwicklungsprojekt gestartet. Anstatt auf Prozessoren der Firmen Intel oder Motorola zurückzugreifen, entwickelte man einen eigenen Prozessor, den ARM (Acorn RISC Machine). Tests ergaben, dass diese Rechner bei praktisch gleicher Taktfrequenz etwa acht mal schneller waren als die Rechner der Konkurrenten Commodore Amiga und Atari ST. Nachdem 1989 der ARM2 zum ARM3 weiterentwickelt worden war und als immer mehr Firmen Interesse an diesen Prozessoren bekundet hatten, gründete Acorn im Jahre 1990 zusammen mit Apple und VLSI Technology die Firma Advanced RISC Machines Ltd. (ARM). Die ARM-Architektur folgt dem RISC-Konzept (Reduced Instruction Set Computing). Ein RISC-Befehlssatz verzichtet zugunsten eines niedrigeren Dekodierungsaufwandes konsequent auf komplexe Befehle, wodurch die Einzelbefehle einfacher auszuführen sind. Zusätzlich sind die Befehle bei RISC-Prozessoren fest verdrahtet. Jede Operation wird also durch Leiterbahnen auf dem Prozessor repräsentiert. Aufgrund ihrer geringen Leistungsaufnahme kommen ARM-Prozessoren in vielen eingebetteten Systemen, wie Mobiltelefonen, PDAs und Routern, zum Einsatz. Im QEMU-Paket ist das Programm qemu-system-arm enthalten. Die möglichen Maschinen-Typen zeigt -machine ? an.
Host ~$ qemu-system-arm -machine ?
Supported machines are: collie Collie PDA (SA-1110) vexpress-a9 ARM Versatile Express for Cortex-A9 syborg Syborg (Symbian Virtual Platform) musicpal Marvell 88w8618 / MusicPal (ARM926EJ-S) mainstone Mainstone II (PXA27x) n800 Nokia N800 tablet aka. RX-34 (OMAP2420) n810 Nokia N810 tablet aka. RX-44 (OMAP2420) cheetah Palm Tungsten|E aka. Cheetah PDA (OMAP310) sx1 Siemens SX1 (OMAP310) V2 sx1-v1 Siemens SX1 (OMAP310) V1 tosa Tosa PDA (PXA255) akita Akita PDA (PXA270) spitz Spitz PDA (PXA270) borzoi Borzoi PDA (PXA270) terrier Terrier PDA (PXA270) connex Gumstix Connex (PXA255) verdex Gumstix Verdex (PXA270) lm3s811evb Stellaris LM3S811EVB lm3s6965evb Stellaris LM3S6965EVB realview-eb ARM RealView Emulation Baseboard (ARM926EJ-S) realview-eb-mpcore ARM RealView Emulation Baseboard (ARM11MPCore) realview-pb-a8 ARM RealView Platform Baseboard for Cortex-A8 realview-pbx-a9 ARM RealView Platform Baseboard Explore for Cortex-A9 versatilepb ARM Versatile/PB (ARM926EJ-S) versatileab ARM Versatile/AB (ARM926EJ-S) integratorcp ARM Integrator/CP (ARM926EJ-S) (default)
Die ARM Integrator/CP-Emulation unterstützt folgende Hardware:
- ARM926E, ARM1026E, ARM946E, ARM1136 oder Cortex-A8 CPU
- zwei PL011 UARTs
- SMC 91c111 Ethernet-Adapter
- PL110 LCD Controller
- PL050 KMI mit PS/2 Tastatur und Maus
- PL181 MultiMedia Card Interface mit SD-Karte.
Die ARM Versatile-Baseboard-Emulation unterstützt folgende Hardware:
- ARM926E, ARM1136 oder Cortex-A8 CPU
- L190 Vectored Interrupt Controller
- vier PL011 UARTs
- SMC 91c111 Ethernet-Adapter
- PL110 LCD Controller
- PL050 KMI mit PS/2 Tastatur und Maus
- PCI Host Bridge mit Zugriff auf PCI-Memory. Da kein Zugriff auf PCI-IO möglich ist, werden einige Devices (ne2k_pci NIC) nicht unterstützt und andere Devices (rtl8139 NIC) funktionieren nur wenn diese Memory-Mapped-Control-Register anwenden.
- PCI OHCI USB Controller.
- LSI53C895A PCI SCSI Host Bus Adapter mit Harddisk und CD-ROM-Laufwerken
- PL181 MultiMedia Card Interface mit SD-Karte.
Die ARM RealView Baseboard-Emulation unterstützt folgende Hardware:
- ARM926E, ARM1136, ARM11MPCORE(x4) oder Cortex-A8 CPU
- ARM AMBA Generic/Distributed Interrupt Controller
- vier PL011 UARTs
- SMC 91c111 Ethernet-Adapter
- PL110 LCD Controller
- PL050 KMI mit PS/2 Tastatur und Maus
- PCI Host Bridge
- PCI OHCI USB Controller
- LSI53C895A PCI SCSI Host Bus Adapter mit Hard-Disk und CD-ROM-Laufwerken
- PL181 MultiMedia Card Interface mit SD-Karte.
Die Emulation der XScale-based Clamshell PDA Modelle (Spitz, Akita, Borzoi und Terrier) unterstützt folgende Hardware:
- Intel PXA270 System-on-chip (ARM V5TE Core)
- NAND Flash Memory
- IBM/Hitachi DSCM microdrive in einem PXA PCMCIA slot nicht in „Akita“
- On-Chip OHCI USB Controller
- On-Chip LCD Controller
- On-Chip Real Time Clock
- TI ADS7846 Touchscreen Controller auf SSP-Bus
- Maxim MAX1111 Analog-Digital-Konverter auf I^2C-Bus
- GPIO-verbundener Tastatur-Controller und LEDs
- Secure Digital Card verbunden mit dem PXA MMC/SD-Host
- drei On-Chip-UARTs
- WM8750 Audio-CODEC auf I^2C-Bus und I^2S-Bus.
Die Emulation Palm Tungsten|E PDA (Codename „Cheetah“) unterstützt folgende Hardware:
- Texas Instruments OMAP310 System-on-Chip (ARM 925T Core)
- ROM und RAM-Speicher. Das ROM Firmware-Image kann mit der -option-rom geladen werden.
- On-Chip LCD-Controller
- On-Chip Real Time Clock
- TI TSC2102i Touchscreen Controller / Analog-Digital-Konverter / Audio CODEC verbunden mit MicroWire und I^2S-Bus
- GPIO-verbundene Matrix-Tastatur
- Secure Digital Card verbunden mit OMAP MMC/SD-Host
- drei On-Chip UARTs
Die Emulation der Nokia N800- und N810-Internet-Tablets (RX-34, RX-44/48) unterstützt folgende Hardware:
- Texas Instruments OMAP2420 System-on-Chip (ARM 1136 Core)
- RAM und non-volatile OneNAND Flash Memories
- Display mit EPSON-Remote-Framebuffer-Chip und OMAP On-Chip Display-Controller und einem LS041y3 MIPI DBI-C-Controller
vTI TSC2301 (in N800) und TI TSC2005 (in N810) Touchscreen-Controllers mit SPI-Bus
vNational Semiconductor LM8323-gesteuerte Qwerty-Tastatur mit I^2C-Bus
vSecure Digital Card verbunden mit OMAP MMC/SD-Host
- drei OMAP On-Chip UARTs und On-Chip STI Debugging-Konsole
- einen Bluetooth(R)-Transciever und HCI-verbundener UART
- Mentor Graphics „Inventra“ dual-role USB-Controller embedded in einem TI TUSB6010-Chip - nur USB-Host-Mode wird unterstützt
- TI TMP105 Temperatur-Sensor am I^2C-Bus
- TI TWL92230C Power-Management mit einem RTC am I^2C-Bus
- Nokia RETU und TAHVO multi-purpose Chips mit einem RTC am CBUS
Die Luminary Micro Stellaris LM3S811EVB-Emulation unterstützt folgende Hardware:
- Cortex-M3 CPU Core
- 64k Flash und 8k SRAM
- Timers, UARTs, ADC und I^2C-Interface
- OSRAM Pictiva 96×16 OLED mit SSD0303-Controller am I^2C-Bus.
Die Luminary Micro Stellaris LM3S6965EVB-Emulation unterstützt folgende Hardware:
- Cortex-M3 CPU Core
- 256k Flash und 64k SRAM
- Timers, UARTs, ADC, I^2C und SSI-Interfaces
- OSRAM Pictiva 128×64 OLED mit SSD0323-Controller verbunden via SSI.
Die Freecom MusicPal Internet Radio-Emulation unterstützt folgende Hardware:
- Marvell MV88W8618 ARM Core.
- 32 MB RAM, 256 KB SRAM, 8 MB Flash.
- bis zu zwei 16550 UARTs
- MV88W8xx8 Ethernet-Controller
- MV88W8618 Audio-Controller, WM8750 CODEC und Mixer
- 128×64-Anzeige mit Helligkeits-Steuerung
- 2 Buttons, 2 Navigation-Wheels mit Button-Funktion.
Die Emulation der Siemens SX1-Modelle v1 und v2 (Default) unterstützt folgende Hardware:
- Texas Instruments OMAP310 System-on-Chip (ARM 925T Core)
- ROM und RAM Speicher (ROM-Firmware-Image kann mit der Option -pflash geladen werden) V1 1 Flash 16MB und 1 Flash 8MB V2 1 Flash 32MB
- On-Chip LCDController
- On-Chip Real Time Clock
- Secure Digital Card verbunden mit OMAP MMC/SD-Host
- drei On-Chip UARTs
Die Emulation der Syborg Symbian Virtual Platform unterstützt folgende Hardware:
- ARM Cortex-A8 CPU
- Interrupt Controller
- Timer
- Real Time Clock
- Tastatur
- Framebuffer
- Touchscreen
- UARTs
Ab QEMU 0.15 werden ARM Versatile Express („vexpress-a9“) und Sharp Zaurus SL-5500 („collie“) unterstützt. Die cp15-Performance-Counter und cp14-Debug-Register wurden als Dummy implementiert. Dadurch können Linux-Kernel booten, die diese Funktionalitäten abfragen. Die möglichen CPU-Typen der ARM-Emulation zeigt -cpu ? an.
Host ~$ qemu-system-arm -cpu ?
Available CPUs: arm926 arm946 arm1026 arm1136 arm1136-r2 arm11mpcore cortex-m3 cortex-a8 cortex-a9 ti925t pxa250 sa1100 sa1110 pxa255 pxa260 pxa261 pxa262 pxa270 pxa270-a0 pxa270-a1 pxa270-b0 pxa270-b1 pxa270-c0 pxa270-c5 any
Die ARM-Emulation unterstützt diese zusätzlichen Optionen:
-semihosting
Aktiviert die Semihosting Syscall Emulation. Bei der ARM-Architektur wird das „Angel“-Interface implementiert. Dabei wird dem Gast-System direkter Zugriff auf das Host-Dateisystem erlaubt. Es ist nur bei vertrauenswürdigen Gast-Systemen zu verwenden. Problematisch ist die Nachbildung des Boot-Vorgangs bei dieser Architektur. Zum einen gibt es erhebliche Unterschiede zu einem normalen PC. Zum anderen erschweren Lizenz-Bestimmungen eine Nachbildung der Hard- und Firmware. Das Booten von Linux ist mit den Speziellen Linux-Bootoptionen möglich. Beispiel:
Host ~$ qemu-system-arm -kernel zImage.integrator \
-initrd arm_root.img
-old-param
Für die ARM-Architektur wird ein Modus mit den alten Parametern aktiviert.
Problematisch ist die Nachbildung des Boot-Vorgangs bei dieser Architektur. Das Booten von Linux ist möglich. Ein Beispiel findet man im Abschnitt Gast-Systeme. Der im Android SDK enthaltene Android Emulator verwendet ein modifiziertes qemu-system-arm.
MIPS
Die MIPS-Architektur (Microprocessor without interlocked pipeline stages) ist eine RISC-Prozessorarchitektur, die ab 1981 an der Stanford Universität entwickelt wurde. MIPS war ursprünglich eine 32-Bit-Architektur, die 1991 mit dem R4000 auf 64 Bit erweitert wurde. MIPS-Prozessoren wurden von Silicon Graphics in Unix-Rechnern eingesetzt. Früher boten auch andere Hersteller, wie zum Beispiel Digital Equipment Corporation (DEC) und Siemens beziehungsweise SNI, Maschinen mit MIPS-Prozessoren an. MIPS-Prozessoren findet man auch häufig in embedded Systemen (Cisco-Router, Sun Cobalt Server bis RaQ/Qube2, BMW-Navigationssysteme, Fritz!Box, Satelliten-Receiver, Dreambox, Konica Minolta DSLRs und Sony- und Nintendo-Spielkonsolen). Im QEMU-Paket sind die Programme qemu-system-mips, qemu-system-mips64, qemu-system-mipsel und qemu-system-mips64el (MIPSel ist eine MIPS-Architektur mit anderer Byte-Reihenfolge) enthalten. Folgende Maschinen können emuliert werden.
- generische ISA PC-ähnliche Maschine „mips“
- MIPS-Malta-Prototyp-Board „Malta“
- ACER Pica „pica61“ (erfordert 64-Bit-Emulator)
- MIPS-Emulator-Pseudo-Board „mipssim“
- MIPS Magnum R4000-Maschine „magnum“ (erfordert 64-Bit-Emulator).
Die möglichen Maschinen-Typen zeigt jeweils die Option -machine ? an.
Host ~$ qemu-system-mips -machine ?
Supported machines are: mipssim MIPS MIPSsim platform malta MIPS Malta Core LV (default) magnum MIPS Magnum pica61 Acer Pica 61 mips mips r4k platform
Host ~$ qemu-system-mips64 -machine ?
Supported machines are: mipssim MIPS MIPSsim platform malta MIPS Malta Core LV (default) magnum MIPS Magnum pica61 Acer Pica 61 mips mips r4k platform
Host ~$ qemu-system-mipsel -machine ?
Supported machines are: mipssim MIPS MIPSsim platform malta MIPS Malta Core LV (default) magnum MIPS Magnum pica61 Acer Pica 61 mips mips r4k platform
Host ~$ qemu-system-mips64el -machine ?
Supported machines are: fulong2e Fulong 2e mini pc mipssim MIPS MIPSsim platform malta MIPS Malta Core LV (default) magnum MIPS Magnum pica61 Acer Pica 61 mips mips r4k platform
Die generische Emulation (mips) ermöglicht die Installation von Debian auf einer virtuellen Festplatte. Die generische Emulation unterstützt folgende Hardware:
- mehrere unterschiedliche MIPS CPUs (Default 24Kf)
- PC-kompatibler Serieller Port
- PC-kompatible IDE-Festplatte
- NE2000 Netzwerk-Karte
Die Malta-Emulation unterstützt die folgende Hardware:
- Core-Board mit MIPS 24Kf CPU und Galileo-System-Controller
- PIIX4 PCI/USB/SMbus-Controller
- Multi-I/O Chip's Serial Device
- PCnet32 PCI Netzwerk-Karte
- Malta FPGA serielles Device
- Cirrus (Default) und andere PCI-VGA-Grafik-Karten
Die ACER-Pica-Emulation unterstützt die folgende Hardware:
- MIPS R4000 CPU
- PC-kompatible IRQ- und DMA-Controllers
- PC-Tatstatur
- IDE-Controller
Die MIPS-Emulator-Pseudo-Board-Emulation (mipssim) unterstützt ähnliche Hardware wie die generische Emulation (mips):
- Mehrere unterschiedliche MIPS CPUs (Default 24Kf)
- PC-kompatibler Serieller Port
- MIPSnet-Netzwerk-Emulation
Die MIPS-Magnum-R4000-Emulation unterstützt die folgende Hardware:
- MIPS R4000 CPU
- PC-kompatibler IRQ-Controller
- PC-Tastatur
- SCSI-Controller
- G364-Framebuffer
Die möglichen CPU-Typen zeigt -cpu ? an.
Host ~$ qemu-system-mips -cpu ?
MIPS '4Kc' MIPS '4Km' MIPS '4KEcR1' MIPS '4KEmR1' MIPS '4KEc' MIPS '4KEm' MIPS '24Kc' MIPS '24Kf' MIPS '34Kf'
Host ~$ qemu-system-mips64 -cpu ?
MIPS '4Kc' MIPS '4Km' MIPS '4KEcR1' MIPS '4KEmR1' MIPS '4KEc' MIPS '4KEm' MIPS '24Kc' MIPS '24Kf' MIPS '34Kf' MIPS 'R4000' MIPS 'VR5432' MIPS '5Kc' MIPS '5Kf' MIPS '20Kc' MIPS 'MIPS64R2-generic' MIPS 'Loongson-2E' MIPS 'Loongson-2F' </'code> ''Host ~$ **qemu-system-mipsel -cpu ?**'' <code> MIPS '4Kc' MIPS '4Km' MIPS '4KEcR1' MIPS '4KEmR1' MIPS '4KEc' MIPS '4KEm' MIPS '24Kc' MIPS '24Kf' MIPS '34Kf'
Host ~$ qemu-system-mips64el -cpu ?
MIPS '4Kc' MIPS '4Km' MIPS '4KEcR1' MIPS '4KEmR1' MIPS '4KEc' MIPS '4KEm' MIPS '24Kc' MIPS '24Kf' MIPS '34Kf' MIPS 'R4000' MIPS 'VR5432' MIPS '5Kc' MIPS '5Kf' MIPS '20Kc' MIPS 'MIPS64R2-generic' MIPS 'Loongson-2E' MIPS 'Loongson-2F' </'code> Problematisch ist die Nachbildung des Boot-Vorgangs bei dieser Architektur. Das Booten von Linux ist möglich. Ein Beispiel findet man im Abschnitt Gast-Systeme. ==== Coldfire ==== Die Coldfire-Prozessorarchitektur ist eine CISC-Architektur basierend auf der Motorola 68000er-Familie. Diese Prozessoren sind speziell auf den Embedded-Markt ausgerichtet. Im QEMU-Paket ist das Programm qemu-system-m68k enthalten. Das Booten eines uClinux-Kernels wird unterstützt. Die möglichen Maschinen-Typen zeigt -machine ? an. ''Host ~$ **qemu-system-m68k -machine ?**'' <code> Supported machines are: dummy Dummy board mcf5208evb MCF5206EVB (default) an5206 Arnewsh 5206
Die möglichen CPUs sind:
Host ~$ qemu-system-m68k -cpu ?
m5206 m5208 cfv4e any
Die M5208EVB-Emulation unterstützt folgende Hardware:
- MCF5208 ColdFire V2 Mikroprozessor (ISA A+ mit EMAC).
- drei Zwei-on-Chip UARTs.
- Fast Ethernet Controller (FEC)
Die AN5206-Emulation unterstützt folgende Hardware:
- MCF5206 ColdFire V2 Mikroprozessor.
- Zwei-on-Chip UARTs.
Es wird diese zusätzliche Option unterstützt.
-semihosting
Aktiviert die Semihosting Syscall Emulation. Für die M68K-Architektur wird das „ColdFire GDB“-Interface implementiert. Dabei wird dem Gast-System direkter Zugriff auf das Host-Dateisystem erlaubt. Es ist nur bei vertrauenswürdigen Gast-Systemen zu verwenden. Problematisch ist die Nachbildung des Boot-Vorgangs bei dieser Architektur. Das Booten von Linux ist möglich. Beispiel:
Host ~$ qemu-system-m68k -kernel vmlinux-2.6.21-uc0 -nographic
Ein Beispiel findet man im Abschnitt Gast-Systeme.
PowerPC
Die PowerPC-Architektur (PPC) ist eine 1991 durch ein Konsortium aus Apple, IBM und Motorola (heute Freescale) spezifizierte CPU-Architektur auf RISC-Basis. PowerPC-Prozessoren sind unter anderem im Einsatz in Apple-Macintosh-Rechnern, in IBM pSeries (RS/6000) und in der IBM Blade JS20, in den Motorola PowerStack-Rechnern, im Nintendo GameCube und Wii, in Form des Cell in der Playstation 3 von Sony sowie in der Xbox 360 von Microsoft und in vielen eingebetteten Systemen. Die Betriebssysteme Apple Mac OS X, Apple Mac OS Versionen 7.5 bis 9.0, Darwin beziehungsweise OpenDarwin und Linux (LinuxPPC) sind für diese Architektur verfügbar.
QEMU emuliert die folgende PowerPC-Hardware:
- UniNorth oder Grackle PCI Bridge
- PCI VGA kompatible Grafikkarte mit VESA-Bochs-Extensions
- Zwei PMAC-IDE-Interfaces mit Hard-Disk- und CD-ROM-Support
- NE2000-PCI-Adapter
- NVRAM (Non Volatile Random Access Memory)
- VIA-CUDA mit ADB Tastatur und Maus.
QEMU emuliert die folgende PREP-Hardware:
- PCI-Bridge
- PCI VGA kompatible Grafikkarte mit VESA-Bochs-Extensions
- 2 PMAC-IDE-Interfaces mit Hard-Disk- und CD-ROM-Support
- Disketten-Laufwerk
- NE2000-PCI-Adapter
- Serielles Port
- PREP NVRAM (Non Volatile Random Access Memory)
- PC kompatible Tastatur und Maus.
QEMU verwendet das OpenBIOS für die Emulation der G3Beige- und Mac99-PowerMac-Maschinen. Im QEMU-Paket sind die Programme qemu-system-ppc, qemu-system-ppc64 und qemu-system-ppcemb enthalten. Die möglichen Maschinen-Typen zeigt -machine ? an.
Host ~$ qemu-system-ppc -machine ?
Supported machines are: virtex-ml507 Xilinx Virtex ML507 reference design mpc8544ds mpc8544ds bamboo bamboo (alias of bamboo-0.13) bamboo-0.13 bamboo bamboo-0.12 bamboo ref405ep ref405ep taihu taihu mac99 Mac99 based PowerMAC g3beige Heathrow based PowerMAC (default) prep PowerPC PREP platform
Host ~$ qemu-system-ppc64 -machine ?
Supported machines are: virtex-ml507 Xilinx Virtex ML507 reference design mpc8544ds mpc8544ds bamboo bamboo (alias of bamboo-0.13) bamboo-0.13 bamboo bamboo-0.12 bamboo ref405ep ref405ep taihu taihu mac99 Mac99 based PowerMAC (default) g3beige Heathrow based PowerMAC prep PowerPC PREP platform Host ~$ qemu-system-ppcemb -machine ? Supported machines are: virtex-ml507 Xilinx Virtex ML507 reference design mpc8544ds mpc8544ds bamboo bamboo (alias of bamboo-0.13) bamboo-0.13 bamboo bamboo-0.12 bamboo ref405ep ref405ep taihu taihu mac99 Mac99 based PowerMAC g3beige Heathrow based PowerMAC (default) prep PowerPC PREP platform
Die möglichen CPU-Typen zeigt -cpu ? an.
Host ~$ qemu-system-ppc -cpu ?
Host ~$ qemu-system-ppcemp -cpu ?
Host ~$ qemu-system-ppc64 -cpu ?
PowerPC 401 PVR 00270000 PowerPC 401A1 PVR 00210000 PowerPC 401B2 PVR 00220000 PowerPC 401C2 PVR 00230000 PowerPC 401D2 PVR 00240000 PowerPC 401E2 PVR 00250000 PowerPC 401F2 PVR 00260000 PowerPC 401G2 PVR 00270000 PowerPC IOP480 PVR 00220000 PowerPC Cobra PVR 10100000 PowerPC 403 PVR 00200200 PowerPC 403GA PVR 00200011 PowerPC 403GB PVR 00200100 PowerPC 403GC PVR 00200200 PowerPC 403GCX PVR 00201400 PowerPC 405 PVR 41810000 PowerPC 405D2 PVR 20010000 PowerPC 405D4 PVR 41810000 PowerPC 405CR PVR 40110145 PowerPC 405CRa PVR 40110041 PowerPC 405CRb PVR 401100c5 PowerPC 405CRc PVR 40110145 PowerPC 405EP PVR 51210950 PowerPC 405EZ PVR 41511460 PowerPC 405GP PVR 401100c4 PowerPC 405GPa PVR 40110000 PowerPC 405GPb PVR 40110040 PowerPC 405GPc PVR 40110082 PowerPC 405GPd PVR 401100c4 PowerPC 405GPe PVR 40110145 PowerPC 405GPR PVR 50910951 PowerPC 405LP PVR 41f10000 PowerPC Npe405H PVR 414100c0 PowerPC Npe405H2 PVR 41410140 PowerPC Npe405L PVR 416100c0 PowerPC Npe4GS3 PVR 40b10000 PowerPC STB03 PVR 40310000 PowerPC STB04 PVR 41810000 PowerPC STB25 PVR 51510950 PowerPC x2vp4 PVR 20010820 PowerPC x2vp7 PVR 20010820 PowerPC x2vp20 PVR 20010860 PowerPC x2vp50 PVR 20010860 PowerPC 440-Xilinx PVR 7ff21910 PowerPC MPC52xx PVR 80822011 PowerPC MPC82xx PVR 80822013 PowerPC PowerQUICC-II PVR 80822013 PowerPC G2 PVR 00810011 PowerPC G2H4 PVR 80811010 PowerPC G2GP PVR 80821010 PowerPC G2LS PVR 90810010 PowerPC G2HiP3 PVR 00810101 PowerPC G2HiP4 PVR 80811014 PowerPC MPC603 PVR 00810100 PowerPC G2le PVR 80820010 PowerPC G2leGP PVR 80822010 PowerPC G2leLS PVR a0822010 PowerPC G2leGP1 PVR 80822011 PowerPC G2leGP3 PVR 80822011 PowerPC MPC8240 PVR 00810100 PowerPC MPC5200 PVR 80822011 PowerPC MPC5200_v10 PVR 80822011 PowerPC MPC5200_v11 PVR 80822011 PowerPC MPC5200_v12 PVR 80822011 PowerPC MPC5200B PVR 80822011 PowerPC MPC5200B_v20 PVR 80822011 PowerPC MPC5200B_v21 PVR 80822011 PowerPC MPC8241 PVR 80811014 PowerPC MPC8245 PVR 80811014 PowerPC MPC8247 PVR 80822013 PowerPC MPC8248 PVR 80822013 PowerPC MPC8250 PVR 80811014 PowerPC MPC8250_HiP3 PVR 00810101 PowerPC MPC8250_HiP4 PVR 80811014 PowerPC MPC8255 PVR 80811014 PowerPC MPC8255_HiP3 PVR 00810101 PowerPC MPC8255_HiP4 PVR 80811014 PowerPC MPC8260 PVR 80811014 PowerPC MPC8260_HiP3 PVR 00810101 PowerPC MPC8260_HiP4 PVR 80811014 PowerPC MPC8264 PVR 80811014 PowerPC MPC8264_HiP3 PVR 00810101 PowerPC MPC8264_HiP4 PVR 80811014 PowerPC MPC8265 PVR 80811014 PowerPC MPC8265_HiP3 PVR 00810101 PowerPC MPC8265_HiP4 PVR 80811014 PowerPC MPC8266 PVR 80811014 PowerPC MPC8266_HiP3 PVR 00810101 PowerPC MPC8266_HiP4 PVR 80811014 PowerPC MPC8270 PVR 80822013 PowerPC MPC8271 PVR 80822013 PowerPC MPC8272 PVR 80822013 PowerPC MPC8275 PVR 80822013 PowerPC MPC8280 PVR 80822013 PowerPC e200 PVR 81120000 PowerPC e200z5 PVR 81000000 PowerPC e200z6 PVR 81120000 PowerPC e300 PVR 00850010 PowerPC e300c1 PVR 00830010 PowerPC e300c2 PVR 00840010 PowerPC e300c3 PVR 00850010 PowerPC e300c4 PVR 00860010 PowerPC MPC8343 PVR 00830010 PowerPC MPC8343A PVR 00830010 PowerPC MPC8343E PVR 00830010 PowerPC MPC8343EA PVR 00830010 PowerPC MPC8347 PVR 00830010 PowerPC MPC8347T PVR 00830010 PowerPC MPC8347P PVR 00830010 PowerPC MPC8347A PVR 00830010 PowerPC MPC8347AT PVR 00830010 PowerPC MPC8347AP PVR 00830010 PowerPC MPC8347E PVR 00830010 PowerPC MPC8347ET PVR 00830010 PowerPC MPC8347EP PVR 00830010 PowerPC MPC8347EA PVR 00830010 PowerPC MPC8347EAT PVR 00830010 PowerPC MPC8347EAP PVR 00830010 PowerPC MPC8349 PVR 00830010 PowerPC MPC8349A PVR 00830010 PowerPC MPC8349E PVR 00830010 PowerPC MPC8349EA PVR 00830010 PowerPC MPC8377 PVR 00860010 PowerPC MPC8377E PVR 00860010 PowerPC MPC8378 PVR 00860010 PowerPC MPC8378E PVR 00860010 PowerPC MPC8379 PVR 00860010 PowerPC MPC8379E PVR 00860010 PowerPC e500 PVR 80210022 PowerPC e500v1 PVR 80200020 PowerPC e500_v10 PVR 80200010 PowerPC e500_v20 PVR 80200020 PowerPC e500v2 PVR 80210022 PowerPC e500v2_v10 PVR 80210010 PowerPC e500v2_v20 PVR 80210020 PowerPC e500v2_v21 PVR 80210021 PowerPC e500v2_v22 PVR 80210022 PowerPC e500v2_v30 PVR 80210030 PowerPC MPC8533 PVR 80210022 PowerPC MPC8533_v10 PVR 80210021 PowerPC MPC8533_v11 PVR 80210022 PowerPC MPC8533E PVR 80210022 PowerPC MPC8533E_v10 PVR 80210021 PowerPC MPC8533E_v11 PVR 80210022 PowerPC MPC8540 PVR 80200020 PowerPC MPC8540_v10 PVR 80200010 PowerPC MPC8540_v20 PVR 80200020 PowerPC MPC8540_v21 PVR 80200020 PowerPC MPC8541 PVR 80200020 PowerPC MPC8541_v10 PVR 80200020 PowerPC MPC8541_v11 PVR 80200020 PowerPC MPC8541E PVR 80200020 PowerPC MPC8541E_v10 PVR 80200020 PowerPC MPC8541E_v11 PVR 80200020 PowerPC MPC8543 PVR 80210021 PowerPC MPC8543_v10 PVR 80210010 PowerPC MPC8543_v11 PVR 80210011 PowerPC MPC8543_v20 PVR 80210020 PowerPC MPC8543_v21 PVR 80210021 PowerPC MPC8543E PVR 80210021 PowerPC MPC8543E_v10 PVR 80210010 PowerPC MPC8543E_v11 PVR 80210011 PowerPC MPC8543E_v20 PVR 80210020 PowerPC MPC8543E_v21 PVR 80210021 PowerPC MPC8544 PVR 80210022 PowerPC MPC8544_v10 PVR 80210021 PowerPC MPC8544_v11 PVR 80210022 PowerPC MPC8544E PVR 80210022 PowerPC MPC8544E_v10 PVR 80210021 PowerPC MPC8544E_v11 PVR 80210022 PowerPC MPC8545 PVR 80210021 PowerPC MPC8545_v20 PVR 80210020 PowerPC MPC8545_v21 PVR 80210021 PowerPC MPC8545E PVR 80210021 PowerPC MPC8545E_v20 PVR 80210020 PowerPC MPC8545E_v21 PVR 80210021 PowerPC MPC8547E PVR 80210021 PowerPC MPC8547E_v20 PVR 80210020 PowerPC MPC8547E_v21 PVR 80210021 PowerPC MPC8548 PVR 80210021 PowerPC MPC8548_v10 PVR 80210010 PowerPC MPC8548_v11 PVR 80210011 PowerPC MPC8548_v20 PVR 80210020 PowerPC MPC8548_v21 PVR 80210021 PowerPC MPC8548E PVR 80210021 PowerPC MPC8548E_v10 PVR 80210010 PowerPC MPC8548E_v11 PVR 80210011 PowerPC MPC8548E_v20 PVR 80210020 PowerPC MPC8548E_v21 PVR 80210021 PowerPC MPC8555 PVR 80210011 PowerPC MPC8555_v10 PVR 80210010 PowerPC MPC8555_v11 PVR 80210011 PowerPC MPC8555E PVR 80210011 PowerPC MPC8555E_v10 PVR 80210010 PowerPC MPC8555E_v11 PVR 80210011 PowerPC MPC8560 PVR 80210021 PowerPC MPC8560_v10 PVR 80210010 PowerPC MPC8560_v20 PVR 80210020 PowerPC MPC8560_v21 PVR 80210021 PowerPC MPC8567 PVR 80210022 PowerPC MPC8567E PVR 80210022 PowerPC MPC8568 PVR 80210022 PowerPC MPC8568E PVR 80210022 PowerPC MPC8572 PVR 80210030 PowerPC MPC8572E PVR 80210030 PowerPC e600 PVR 80040010 PowerPC MPC8641 PVR 80040010 PowerPC MPC8641D PVR 80040010 PowerPC 601 PVR 00010002 PowerPC 601_v0 PVR 00010001 PowerPC 601_v1 PVR 00010001 PowerPC 601v PVR 00010002 PowerPC 601_v2 PVR 00010002 PowerPC 602 PVR 00050100 PowerPC 603 PVR 00030100 PowerPC Vanilla PVR 00030100 PowerPC 603e PVR 00060401 PowerPC Stretch PVR 00060401 PowerPC 603e_v1.1 PVR 00060101 PowerPC 603e_v1.2 PVR 00060102 PowerPC 603e_v1.3 PVR 00060103 PowerPC 603e_v1.4 PVR 00060104 PowerPC 603e_v2.2 PVR 00060202 PowerPC 603e_v3 PVR 00060300 PowerPC 603e_v4 PVR 00060400 PowerPC 603e_v4.1 PVR 00060401 PowerPC 603e7 PVR 00070200 PowerPC 603e7t PVR 00071201 PowerPC 603e7v PVR 00070100 PowerPC Vaillant PVR 00070100 PowerPC 603e7v1 PVR 00070101 PowerPC 603e7v2 PVR 00070201 PowerPC 603p PVR 00070000 PowerPC 603r PVR 00071201 PowerPC Goldeneye PVR 00071201 PowerPC 604 PVR 00040103 PowerPC 604e PVR 00090204 PowerPC Sirocco PVR 00090204 PowerPC 604e_v1.0 PVR 00090100 PowerPC 604e_v2.2 PVR 00090202 PowerPC 604e_v2.4 PVR 00090204 PowerPC 604r PVR 000a0101 PowerPC Mach5 PVR 000a0101 PowerPC 740 PVR 00080301 PowerPC Arthur PVR 00080301 PowerPC 750 PVR 00080301 PowerPC Typhoon PVR 00080301 PowerPC G3 PVR 00080301 PowerPC 740_v1.0 PVR 00080100 PowerPC 750_v1.0 PVR 00080100 PowerPC 740_v2.0 PVR 00080200 PowerPC 750_v2.0 PVR 00080200 PowerPC 740_v2.1 PVR 00080201 PowerPC 750_v2.1 PVR 00080201 PowerPC 740_v2.2 PVR 00080202 PowerPC 750_v2.2 PVR 00080202 PowerPC 740_v3.0 PVR 00080300 PowerPC 750_v3.0 PVR 00080300 PowerPC 740_v3.1 PVR 00080301 PowerPC 750_v3.1 PVR 00080301 PowerPC 740e PVR 00080100 PowerPC 750e PVR 00080200 PowerPC 740p PVR 10080000 PowerPC 750p PVR 10080000 PowerPC Conan/Doyle PVR 10080000 PowerPC 750cl PVR 00087210 PowerPC 750cl_v1.0 PVR 00087200 PowerPC 750cl_v2.0 PVR 00087210 PowerPC 750cx PVR 00082202 PowerPC 750cx_v1.0 PVR 00082100 PowerPC 750cx_v2.0 PVR 00082200 PowerPC 750cx_v2.1 PVR 00082201 PowerPC 750cx_v2.2 PVR 00082202 PowerPC 750cxe PVR 00083311 PowerPC 750cxe_v2.1 PVR 00082211 PowerPC 750cxe_v2.2 PVR 00082212 PowerPC 750cxe_v2.3 PVR 00082213 PowerPC 750cxe_v2.4 PVR 00082214 PowerPC 750cxe_v2.4b PVR 00083214 PowerPC 750cxe_v3.0 PVR 00082310 PowerPC 750cxe_v3.1 PVR 00082311 PowerPC 750cxe_v3.1b PVR 00083311 PowerPC 750cxr PVR 00083410 PowerPC 750fl PVR 70000203 PowerPC 750fx PVR 70000203 PowerPC 750fx_v1.0 PVR 70000100 PowerPC 750fx_v2.0 PVR 70000200 PowerPC 750fx_v2.1 PVR 70000201 PowerPC 750fx_v2.2 PVR 70000202 PowerPC 750fx_v2.3 PVR 70000203 PowerPC 750gl PVR 70020102 PowerPC 750gx PVR 70020102 PowerPC 750gx_v1.0 PVR 70020100 PowerPC 750gx_v1.1 PVR 70020101 PowerPC 750gx_v1.2 PVR 70020102 PowerPC 750l PVR 00088302 PowerPC LoneStar PVR 00088302 PowerPC 750l_v2.0 PVR 00088200 PowerPC 750l_v2.1 PVR 00088201 PowerPC 750l_v2.2 PVR 00088202 PowerPC 750l_v3.0 PVR 00088300 PowerPC 750l_v3.2 PVR 00088302 PowerPC 745 PVR 00083208 PowerPC 755 PVR 00083208 PowerPC Goldfinger PVR 00083208 PowerPC 745_v1.0 PVR 00083100 PowerPC 755_v1.0 PVR 00083100 PowerPC 745_v1.1 PVR 00083101 PowerPC 755_v1.1 PVR 00083101 PowerPC 745_v2.0 PVR 00083200 PowerPC 755_v2.0 PVR 00083200 PowerPC 745_v2.1 PVR 00083201 PowerPC 755_v2.1 PVR 00083201 PowerPC 745_v2.2 PVR 00083202 PowerPC 755_v2.2 PVR 00083202 PowerPC 745_v2.3 PVR 00083203 PowerPC 755_v2.3 PVR 00083203 PowerPC 745_v2.4 PVR 00083204 PowerPC 755_v2.4 PVR 00083204 PowerPC 745_v2.5 PVR 00083205 PowerPC 755_v2.5 PVR 00083205 PowerPC 745_v2.6 PVR 00083206 PowerPC 755_v2.6 PVR 00083206 PowerPC 745_v2.7 PVR 00083207 PowerPC 755_v2.7 PVR 00083207 PowerPC 745_v2.8 PVR 00083208 PowerPC 755_v2.8 PVR 00083208 PowerPC 7400 PVR 000c0209 PowerPC Max PVR 000c0209 PowerPC G4 PVR 000c0209 PowerPC 7400_v1.0 PVR 000c0100 PowerPC 7400_v1.1 PVR 000c0101 PowerPC 7400_v2.0 PVR 000c0200 PowerPC 7400_v2.1 PVR 000c0201 PowerPC 7400_v2.2 PVR 000c0202 PowerPC 7400_v2.6 PVR 000c0206 PowerPC 7400_v2.7 PVR 000c0207 PowerPC 7400_v2.8 PVR 000c0208 PowerPC 7400_v2.9 PVR 000c0209 PowerPC 7410 PVR 800c1104 PowerPC Nitro PVR 800c1104 PowerPC 7410_v1.0 PVR 800c1100 PowerPC 7410_v1.1 PVR 800c1101 PowerPC 7410_v1.2 PVR 800c1102 PowerPC 7410_v1.3 PVR 800c1103 PowerPC 7410_v1.4 PVR 800c1104 PowerPC 7448 PVR 80040201 PowerPC 7448_v1.0 PVR 80040100 PowerPC 7448_v1.1 PVR 80040101 PowerPC 7448_v2.0 PVR 80040200 PowerPC 7448_v2.1 PVR 80040201 PowerPC 7450 PVR 80000201 PowerPC Vger PVR 80000201 PowerPC 7450_v1.0 PVR 80000100 PowerPC 7450_v1.1 PVR 80000101 PowerPC 7450_v1.2 PVR 80000102 PowerPC 7450_v2.0 PVR 80000200 PowerPC 7450_v2.1 PVR 80000201 PowerPC 7441 PVR 80000203 PowerPC 7451 PVR 80000203 PowerPC 7441_v2.1 PVR 80000201 PowerPC 7441_v2.3 PVR 80000203 PowerPC 7451_v2.3 PVR 80000203 PowerPC 7441_v2.10 PVR 80000210 PowerPC 7451_v2.10 PVR 80000210 PowerPC 7445 PVR 80010302 PowerPC 7455 PVR 80010302 PowerPC Apollo6 PVR 80010302 PowerPC 7445_v1.0 PVR 80010100 PowerPC 7455_v1.0 PVR 80010100 PowerPC 7445_v2.1 PVR 80010201 PowerPC 7455_v2.1 PVR 80010201 PowerPC 7445_v3.2 PVR 80010302 PowerPC 7455_v3.2 PVR 80010302 PowerPC 7445_v3.3 PVR 80010303 PowerPC 7455_v3.3 PVR 80010303 PowerPC 7445_v3.4 PVR 80010304 PowerPC 7455_v3.4 PVR 80010304 PowerPC 7447 PVR 80020102 PowerPC 7457 PVR 80020102 PowerPC Apollo7 PVR 80020102 PowerPC 7447_v1.0 PVR 80020100 PowerPC 7457_v1.0 PVR 80020100 PowerPC 7447_v1.1 PVR 80020101 PowerPC 7457_v1.1 PVR 80020101 PowerPC 7457_v1.2 PVR 80020102 PowerPC 7447A PVR 80030102 PowerPC 7457A PVR 80030102 PowerPC 7447A_v1.0 PVR 80030100 PowerPC 7457A_v1.0 PVR 80030100 PowerPC Apollo7PM PVR 80030100 PowerPC 7447A_v1.1 PVR 80030101 PowerPC 7457A_v1.1 PVR 80030101 PowerPC 7447A_v1.2 PVR 80030102 PowerPC 7457A_v1.2 PVR 80030102 PowerPC 620 PVR 00140000 PowerPC Trident PVR 00140000 PowerPC POWER7 PVR 003f0200 PowerPC POWER7_v2.0 PVR 003f0200 PowerPC 970 PVR 00390202 PowerPC 970fx PVR 003c0301 PowerPC 970fx_v1.0 PVR 00391100 PowerPC 970fx_v2.0 PVR 003c0200 PowerPC 970fx_v2.1 PVR 003c0201 PowerPC 970fx_v3.0 PVR 003c0300 PowerPC 970fx_v3.1 PVR 003c0301 PowerPC 970gx PVR 00450000 PowerPC 970mp PVR 00440101 PowerPC 970mp_v1.0 PVR 00440100 PowerPC 970mp_v1.1 PVR 00440101 PowerPC ppc64 PVR 003c0301 PowerPC ppc32 PVR 00040103 PowerPC ppc PVR 00040103 PowerPC default PVR 00040103
Das folgende Beispiel startet eine virtuelle Maschine mit Power PC-Architektur:
Host ~$ qemu-system-ppc Platte.img -g 800×600
qemu-system-ppc besitzt folgende zusätzliche Optionen:
-g WxH[xDEPTH]
Die Startoption -g gibt die Auflösung und Farbtiefe an. Der Default-Wert ist 800x600x15.
-prom-env string
Die Option -prom-env setzt OpenBIOS-Variablen im NVRAM. Beispiel:
Host ~$ qemu-system-ppc -prom-env 'auto-boot?=false' \
-prom-env 'boot-device=hd:2,\yaboot' \
-prom-env 'boot-args=conf=hd:2,\yaboot.conf
Problematisch ist die Nachbildung des Boot-Vorgangs bei dieser Architektur. Das Booten von Linux ist möglich. Ein Beispiel findet man im Abschnitt Gast-Systeme.
SuperH
Die SuperH-Prozessorarchitektur (SH) wird von der Firma Renesas Technology entwickelt. Diese RISC-artige Prozessorarchitektur ist in Japan sehr verbreitet. Weltweit wird SuperH in vielen eingebetteten Systemen eingesetzt, da diese Architektur nur wenig Strom verbraucht und relativ kostengünstig ist. Die Jornada-Reihe von HP verwendet auch SH-Prozessoren. Im QEMU-Paket sind die Programme qemu-system-sh4 und qemu-system-sh4eb zur Emulation der 4. Generation (SH-4) enthalten. Die möglichen Maschinen-Typen zeigt -machine ? an.
Host ~$ qemu-system-sh4 -machine ?
Supported machines are: r2d r2d-plus board shix shix card (default) Host ~$ qemu-system-sh4eb -machine ? Supported machines are: r2d r2d-plus board shix shix card (default)
Die möglichen CPU-Typen zeigt -cpu ? an.
Host ~$ qemu-system-sh4 -cpu ?
SH7750R SH7751R SH7785
Host ~$ qemu-system-sh4eb -cpu ?
SH7750R
SH7751R
SH7785
</codE>
Problematisch ist die Nachbildung des Boot-Vorgangs bei dieser Architektur. Das Booten von Linux ist möglich. Beispiel:
''Host ~$ **qemu-system-sh4 -M r2d -hda sh-linux.img -kernel zImage \\\
-serial null -serial stdio -nographic**''
Ein Beispiel findet man im Abschnitt Gast-Systeme.
==== ETRAX CRIS ====
ETRAX CRIS bezeichnet eine Prozessorfamilie der Firma Axis Communications. Diese Prozessoren basieren auf dem Code Reduced Instruction Set (CRIS). Im QEMU-Paket ist das Programm qemu-system-cris enthalten. Die möglichen Maschinen-Typen zeigt -machine ? an.
''Host ~$ **qemu-system-cris -machine ?**''
<code>
Supported machines are:
axis-dev88 AXIS devboard 88
axis-dev88 AXIS devboard 88
bareetraxfs Bare ETRAX FS board (default)
Die möglichen CPU-Typen zeigt -cpu ? an.
Host ~$ qemu-system-cris -cpu ?
Available CPUs: crisv8 crisv9 crisv10 crisv11 crisv32
MicroBlaze
Der Mikrocontroller MicroBlaze wird als Soft-Core in Hardware-Beschreibungssprachen, wie VHDL (Very High Speed Integrated Circuit Hardware Description Language) oder Verilog HDL, definiert. Dieser 32-Bit RISC Mikrocontroller wird durch FPGAs (Field Programmable Gate Array) der Firma Xilinx realisiert. Neben der kostenpflichtigen Variante des Microblaze gibt es quelloffene Nachbauten, die auch auf FPGAs anderer Hersteller eingesetzt werden dürfen. Beispielsweise steht der aeMB-MicroBlaze-Clone unter der LGPL-Lizenz. MicroBlaze wird von den Betriebssystemen µClinux, Linux und FreeRTOS unterstützt. Im QEMU-Paket ist das Programm qemu-system-microblaze enthalten. Die möglichen Maschinen-Typen zeigt -machine ? an.
Host ~$ qemu-system-microblaze -M ?
Supported machines are: petalogix-ml605 PetaLogix linux refdesign for xilinx ml605 little endian petalogix-s3adsp1800 PetaLogix linux refdesign for xilinx Spartan 3ADSP1800 (default) <code> ''Host ~$ **qemu-system-microblazeel -M ?**'' <code> Supported machines are: petalogix-ml605 PetaLogix linux refdesign for xilinx ml605 little endian petalogix-s3adsp1800 PetaLogix linux refdesign for xilinx Spartan 3ADSP1800 (default)
Die möglichen CPU-Typen zeigt -cpu ? an.
Host ~$ qemu-system-microblaze -cpu ?
Host ~$ qemu-system-microblazeel -cpu ?
Lattice Mico32
Lattice Mico32 ist ein auf einer Harvard-Architektur basierender 32-Bit-Soft-Core-Prozessor der Firma Lattice Semiconductor Corporation. Ein Soft-Core-Prozessor besteht aus reiner Anwenderlogik in einem Field Programmable Gate Array (FPGA). Im QEMU-Paket ist das Programm qemu-system-lm32 enthalten. Die möglichen Maschinen-Typen zeigt -machine ? an.
Host ~$ qemu-system-lm32 -machine ?
Supported machines are: lm32-uclinux lm32 platform for uClinux and u-boot by Theobroma Systems lm32-evr LatticeMico32 EVR32 eval system (default) milkymist Milkymist One
Die möglichen CPU-Typen zeigt -cpu ? an.
Host ~$ qemu-system-lm32 -cpu ?
Available CPUs: lm32-basic lm32-standard lm32-full
Eingesetzt wird dieser Architektur Prozessor im SoC Milkymist. Dieses wird von QEMU vollständig, inklusive Video-Rendering, unterstützt. Problematisch ist die Nachbildung des Boot-Vorgangs bei dieser Architektur. Das Booten von Linux ist möglich.
IBM System z (s390x)
System/390 ist eine Großrechner-Familie (Mainframe) der Firma IBM. Im QEMU-Paket ist das Programm qemu-system-s390x enthalten. Die möglichen Maschinen-Typen zeigt -machine ? an.
Host ~$ qemu-system-s390x -machine ?
Supported machines are: s390 VirtIO based S390 machine (alias of s390-virtio) s390-virtio VirtIO based S390 machine (default)
Host ~$ qemu-system-s390x -cpu ?
Problematisch ist die Nachbildung des Boot-Vorgangs bei dieser Architektur. Das Booten von Linux ist möglich.
Multiprozessorsysteme
SMP
Ein symmetrisches Multiprozessorsystem (SMP) verfügt über eine Multiprozessor-Architektur, bei der die laufenden Prozesse auf alle verfügbaren Prozessoren verteilt werden können. Beim asymmetrischen Multiprozessing werden dagegen jeder CPU Aufgaben fest zugewiesen. QEMU und KVM können SMP mit bis zu 255 CPUs emulieren. Konfiguriert wird dies mit der Option -smp gefolgt von einer Zahl (1 bis 255).
Host ~$ qemu -hda Platte.img -smp 2
Im QEMU-Monitor informiert der Befehl info cpus über die CPUs.
(qemu) info cpus
* CPU #0: pc=0xc0127365 (halted)
CPU #1: pc=0xc0127365 (halted)
Die mit dem Stern gekennzeichnete CPU ist die Default-CPU. Mit dem folgenden Befehl wird CPU #1 zur Default-CPU.
(qemu) cpu 1
(qemu) info cpus
CPU #0: pc=0xc0127365 (halted)
* CPU #1: pc=0xc0127365 (halted)
Mit dem Befehl cpu_set lässt sich eine CPU offline schalten.
(qemu) cpu_set 0 offline
Mit dem folgenden Befehl wird die CPU #0 online geschaltet.
(qemu) cpu_set 0 online
Für x86-Architekturen lassen sich die Anzahl der Cores pro Socket, der Threads pro Core und die Anzahl der Sockets vorgeben. Die Gesamtzahl der CPUs kann dann weggelassen werden.
Host ~$ qemu -hda Platte.img -smp cores=2,threads=1,sockets=2
(qemu) info cpus
* CPU #0: pc=0x00008bdb (halted) CPU #1: pc=0x000ff0a2 (halted) CPU #2: pc=0x000ff0a2 (halted) CPU #3: pc=0x000ff0a2 (halted)
Weiterhin kann die maximale Anzahl von Hot-Plug-CPUs definiert werden.
Host ~$ qemu -hda Platte.img \
-smp cores=2,threads=1,sockets=2,maxcpus=8
NUMA
NUMA (Non-Uniform Memory Architecture) ist eine Speicher-Architektur für Multiprozessorsysteme. Jeder Prozessor besitzt einen separaten, lokalen Speicher. Anderen Prozessoren des Systems wird über einen gemeinsamen Adressraum ein direkter Zugriff auf diesen Speicher ermöglicht (Distributed Shared Memory). NUMA-Architekturen sind beispielsweise in AMD-Mehrprozessorsystemen auf Opteron-Basis implementiert. Vereinfacht gesagt ist ein NUMA-Node ein Speicherbereich, in welchem jedes Byte den gleichen Abstand (Hops) zu jeder CPU hat. Zur Konfiguration eines NUMA-Nodes dient die Option -numa node. Im folgenden Beispiel wird ein Multi-Node-NUMA-System simuliert.
Host ~$ qemu-system-x86_64 Platte \
-numa node,cpus=0 -numa node,cpus=1 -smp 2
Im QEMU-Monitor informiert der Befehl info numa über den NUMA-Node.
(qemu) info numa
2 nodes node 0 cpus: 0 node 0 size: 64 MB node 1 cpus: 1 node 1 size: 64 MB
Die vollständinge Syntax lautet:
-numa node[,mem=size][,cpus=cpu[-cpu]][,nodeid=node]
Die Option mem=size definiert die Größe des Speichers. Der Default-Wert ist 128 MByte. Wird diese Option nicht angegeben, werden die Ressourcen gleichmäßig aufgeteilt. Die Option cpus=cpu[-cpu] adressiert die CPU(s) für die Konfiguration. Wird diese Option nicht angegeben, werden die Ressourcen gleichmäßig aufgeteilt. Die Option nodeid=node definiert die Node-ID.
x86-Virtualisierungen/-Emulationen
Konfiguriert werden die Beschleuniger mit dem Parameter accel der Option -machine. In Abhängikeit von der Architektur stehen kvm, xen, oder tcg. Werden mehrere Beschleuniger vorgegeben, werden diese nacheinander auf Verwendbarkeit geprüft. Per Default wird tcg verwendet.
Tiny Code Generator (TCG)
Nach der QEMU Version 0.9.1 wird als neue Methode der Tiny Code Generator (TCG) zur Code-Generierung für die Emulation verwendet. Der Tiny Code Generator ist performanter als andere Emulatoren, ist aber kein Beschleuniger und Virtualisierer. TCG benötigt also weder Kernel-Module noch Hyperviser. Der Tiny Code Generator ist unabhängiger von der Compiler-Version. Die Grundidee ist, jede Zielanweisung in mehrere RISC-ähnliche Operationen aufzuteilen. Dabei werden einige Optimierungen, zum Beispiel EFLAGS, durchgeführt. Die TCG-Operationen werden als TCG target implementiert. Aktiviert wird der Tiny Code Generator mit dem Parameter accel=tcg der Option -machine.
Host ~$ qemu Platte.img -machine type=pc,accel=tcg
Da tcg die Default-Einstellung ist, kann diese Angabe entfallen.
Host ~$ qemu Platte.img
Die KVM hardware-unterstützte Virtualisierung
Wie bereits beschrieben, ist die Kernel-based Virtual Machine ein Typ-2-Hypervisor, der die Full Virtualization unterstützt. Statt dem Befehl qemu wird bei der Kernel-based Virtual Machine oft der Befehl kvm angewendet. Dies ist verwirrend, da das Native Linux KVM Tool ebenso aufgerufen wird. Bei einigen Distributionen erfolgt der Aufruf mit qemu-system-x86_32, qemu-system-x86_64 oder qemu-kvm. Aktiviert wird die KVM hardware-unterstützte Virtualisierung mit dem Parameter accel=kvm der Option -machine.
Host ~$ qemu Platte.img -machine type=pc,accel=kvm
Bis QEMU 0.15 ist die alte Syntax -enable-kvm möglich.
Host ~$ qemu Platte.img -enable-kvm
Wenn die Verwendung der KVM hardware-unterstützten Virtualisierung unterbunden werden soll, ist der Parameter accel=kvm wegzulassen oder der Defaul-Wert accel=tcg zu verwenden.
Host ~$ qemu Platte.img -machine type=pc,accel=tcg
Bei älteren QEMU-Versionen wird KVM mit -no-kvm deaktiviert.
Host ~$ qemu Platte.img -no-kvm
Bei der Installation von Microsoft Windows als Gast-System sollte die KVM hardware-unterstützte Virtualisierung deaktiviert werden. Nach der Installation kann die KVM hardware-unterstützte Virtualisierung bei allen Windows-Versionen aktiviert sein. Im QEMU-Monitor zeigt der Befehl info kvm an, ob die KVM hardware-unterstützte Virtualisierung aktiv ist. In diesem Fall wurde sie deaktiviert.
(qemu) info kvm
kvm support: disabled
Sind im Host-System die KVM-Kernel-Module geladen, gibt der Befehl info kvm die Meldung kvm support: enabled aus.
Host ~$ qemu -monitor stdio
(qemu) info kvm
kvm support: enabled
Wird eine Virtualisierungslösung innerhalb einer anderen Virtualisierungslösung betrieben, so nennt man dies Nesting. Die Option -enable-nesting (bis QEMU 0.14) ermöglicht das Betreiben von KVM in einer KVM-Instanz. Dazu muss entweder das Host-System über AMD-Prozessoren verfügen oder es muss ein Linux-Kernel ab Version 3.1 installiert sein. Notwendig ist die Emulation einer entsprechenden 64-Bit-CPU. Beispiel:
Host ~$ qemu-system-x86_64 Platte.img \
-cpu qemu64,+svm -enable-nesting
Mit der Option -kvm-shadow-memory wird dem KVM MMU-Shadowing die vorgegebene Speichergröße zugewiesen. Mit der Option -no-kvm-irqchip deaktiviert man den KVM-Kernel-Mode PIC/IOAPIC/LAPIC. Die Option -no-kvm-pit deaktiviert den KVM-Kernel-Mode PIT. Die Option -no-kvm-pit-reinjection deaktiviert den KVM-Kernel-Mode PIT-Interrupt-Reinjection.
Der Hypervisor Xen (HVM)
Wird von den x86-Prozessoren die Hardware-Virtualisierungstechnik unterstützt, kann der Xen Virtual Machine Monitor im HVM-Modus (Hardware Virtual Machine) laufen. Das Xen-Projekt nutzt für den HVM-Modus Source-Code vom QEMU-Projekt zur Emulation gängiger PC-Komponenten (Device Model). Ab QEMU 0.15 wurde die Xen-Unterstützung integriert. Aktiviert wird die Xen-Unterstützung mit dem Parameter accel=xen der Option -machine.
Host ~$ qemu Platte.img -machine type=pc,accel=xen
Der Accelator KQEMU
Ab QEMU 0.12 wird KQEMU nicht mehr unterstützt. Eine Anleitung zur Installation von QEMU mit KQEMU-Support findet man unter der URL http://qemu-buch.de/d/QEMU+KQEMU_unter_Linux. Die folgenden Beispiele gelten bis zur QEMU-Version 0.11. Wenn Host- und Gast-System in x86-Prozessorarchitektur vorliegen, kann QEMU mit dem optionalen Beschleuniger KQEMU auch die Native Virtualization anwenden. Dabei reicht KQEMU die meisten Befehle direkt an die reelle CPU weiter. Nur die CPU-Befehle, die direkt die Hardware ansprechen, werden abgefangen und durch angepasste Routinen ersetzt. Bei Linux-Gast-Systemen wird die beste Beschleunigung mit dem 2.4er Kernel erreicht. Die 2.6er Versionen funktionieren, sind aber langsamer. Zur Aktivierung der vollen KQEMU-Virtualisierung ist die Option -kernel-kqemu anzuwenden.
Host ~$ qemu Platte.img -kernel-kqemu
Im QEMU-Monitor zeigt der Befehl info kqemu die Verwendung von KQEMU an.
(qemu) info kqemu
kqemu support: enabled for user and kernel code
Eine weitere Option ist -enable-kqemu. Dabei wird KQEMU nur im User-Code aktiviert.
Host ~$ qemu Platte.img -enable-kqemu
Im QEMU-Monitor zeigt der Befehl info kqemu die Verwendung von KQEMU an.
(qemu) info kqemu
kqemu support: enabled for user code
Wenn die Verwendung von KQEMU unterbunden werden soll, ist die Option -no-kqemu anzugeben. Bei der Installation von Microsoft Windows als Gast-System sollte KQEMU deaktiviert werden. Nach der Installation kann KQEMU bei allen Windows-Versionen aktiviert sein.
Host ~$ qemu Platte.img -no-kqemu
Im QEMU-Monitor zeigt der Befehl info kqemu, ob der Beschleuniger KQEMU aktiv ist.
(qemu) info kqemu
kqemu support: disabled
In diesem Fall wurde KQEMU deaktiviert. Im nachfolgenden Beispiel wurde QEMU ohne KQEMU-Support kompiliert. Die Optionen -kernel-kqemu und -no-kqemu stehen nicht zur Verfügung.
(qemu) info kqemu
kqemu support: not compiled
Erkennen der Virtualisierung im Gast-System
Mitunter ist es nötig, die verwendete Virtualisierungslösung im Gast-System festzustellen. Unter Linux dienen dazu die Skripte imvirt (http://sourceforge.net/projects/imvirt/) und virt-what (http://people.redhat.com/~rjones/virt-what/). In diesem Beispiel werden diese Pakete unter Ubuntu als Gast-System installiert.
Gast $ sudo apt-get install imvirt virt-what
Läuft das Gast-System unter QEMU mit KVM-Unterstützung, gibt imvirt den die Zeile KVM aus.
Gast $ imvirt
KVM
Wird QEMU ohne KVM-Unterstützung verwendet, wird die Zeile Unknown ausgegeben. Bei einem realen System ist die Ausgabe Physical. Das Skript virt-what gibt bei QEMU mit KVM-Unterstützung kvm aus.
Gast $ sudo virt-what
kvm
Wird QEMU ohne KVM-Unterstützung verwendet, wird die Zeile qemu ausgegeben.
