Prozessor-Architekturen SMP QEMU PPC pentium3 x86 x86_64 SPARC MIPS ARM PowerPC SuperH Coldfire
(Link zu dieser Seite als [[QEMU-KVM-Buch/ Virtuelle Hardware/ Prozessoren]])
Inhaltsverzeichnis |
[bearbeiten] Prozessor-Architekturen
Als Hardware-Emulator kann QEMU unterschiedliche Architekturen emulieren.
- 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).
Wird QEMU mit dem Beschleuniger KQEMU verwendet (Native Virtualization), steht nur die x86-Architektur zur Verfügung. Die Kernel-based Virtual Machine basiert auf der Full Virtualization und kann daher auch nur Gast-Systeme mit x86-Architektur betreiben.
[bearbeiten] 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)
Die 32-Bit-Version der x86-Prozessorarchitektur wird von QEMU per Default verwendet.
Host ~$ qemu Platte.img
Die Option -M ermöglicht die Auswahl des emulierten Maschinen-Typs (PC-Bus-Architektur). Wird sie weggelassen oder die Default-Option -M pc angegeben, wird ein heutiger Standard-PC mit PCI-Bus emuliert. Die möglichen Maschinen-Typen zeigt -M ? an.
Host ~$ qemu -M ? Supported machines are: pc Standard PC (alias of pc-0.11) pc-0.11 Standard PC (default) pc-0.10 Standard PC, qemu 0.10 isapc ISA-only PC xenpv Xen Para-virtualized PC
Mit neueren QEMU/KVM-Versionen ändert sich die emulierte Hardware. Erhält QEMU oder die Kernel-based Virtual Machine 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 Platte.img -M pc-0.11
Mit der Option -M 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 Platte.img -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 qemu32 x86 coreduo x86 486 x86 pentium x86 pentium2 x86 pentium3 x86 athlon x86 n270
Ein 486-Prozessor wird mit -cpu 486 emuliert.
Host ~$ qemu Platte.img -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 nicht zur Verfügung.
Host ~$ qemu-system-x86_64 Platte.img
Die möglichen Maschinen-Typen zeigt -M ? an.
Host ~$ qemu-system-x86_64 -M ? Supported machines are: pc Standard PC (alias of pc-0.11) pc-0.11 Standard PC (default) pc-0.10 Standard PC, qemu 0.10 isapc ISA-only PC xenpv Xen Para-virtualized
Die möglichen CPU-Typen zeigt -cpu ? an.
Host ~$ qemu-system-x86_64 -cpu ? x86 qemu64 x86 phenom x86 core2duo x86 kvm64 x86 qemu32 x86 coreduo x86 486 x86 pentium x86 pentium2 x86 pentium3 x86 athlon x86 n270
Zusätzliche CPU-Definitionen können dem CPU-Typ nach einem Komma übergeben werden. In diesem Beispiel wird die hardwareunterstützter Virtualisierung aktiviert. Damit kann zum Beispiel KVM in einer virtuellen Maschine installiert werden.
Host ~$ qemu-system-x86_64 Platte.img -cpu qemu64,+svm
[bearbeiten] 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 -M ? an.
Host ~$ qemu-system-sparc -M ? Supported machines are: 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 xenpv Xen Para-virtualized PC
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. Unter QEMU ist es zur Zeit nicht möglich Solaris, NetBSD oder OpenBSD 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 -M SPARCClassic Platte.img \
-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). qemu-system-sparc64 ist noch in der Entwicklung und kann zur Zeit nur einige Kernel booten. 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
Die möglichen Maschinen-Typen zeigt -M ? an.
Host ~$ qemu-system-sparc64 -M ? Supported machines are: sun4u Sun4u platform (default) sun4v Sun4v platform Niagara Sun4v platform, Niagara xenpv Xen Para-virtualized PC
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
Der SPARC64-System-Emulator besitzt die gleichen Optionen wie der SPARC32-System-Emulator.
[bearbeiten] 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 -M ? an.
Host ~$ qemu-system-arm -M ?
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
- TI TSC2301 (in N800) und TI TSC2005 (in N810) Touchscreen-Controllers mit SPI-Bus
- National Semiconductor LM8323-gesteuerte Qwerty-Tastatur mit I^2C-Bus
- Secure 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 96x16 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 128x64 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
Die möglichen CPU-Typen zeigt -cpu ? an.
Host ~$ qemu-system-arm -cpu ?
Die ARM-Emulation unterstützt diese zusätzliche Option:
-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-Filesystem erlaubt und sollte nur bei vertrauenswürdigen Gast-Systemen verwendet werden. Problematisch ist die Nachbildung des Boot-Vorgangs bei dieser Architektur. Zum einen gibt es erhebliche Unterschiede zu einem normalen PC. Zum anderen erschweren Lizenzen-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
[bearbeiten] 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 -M ? an.
Host ~$ qemu-system-mips -M ?
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 ? Host ~$ qemu-system-mips64 -cpu ?
Problematisch ist die Nachbildung des Boot-Vorgangs bei dieser Architektur. Das Booten von Linux ist möglich. Ein Beispiel einer virtuellen Maschine mit MIPS-Architektur wird im Abschnitt Gast-Systeme erläutert.
[bearbeiten] 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 -M ? an.
Host ~$ qemu-system-m68k -M ?
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-Filesystem erlaubt und sollte nur bei vertrauenswürdigen Gast-Systemen verwendet werden. 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
[bearbeiten] 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 (http://www.openbios.org) 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 -M ? an.
Host ~$ qemu-system-ppc -M ?
Die möglichen CPU-Typen zeigt -cpu ? an.
Host ~$ qemu-system-ppc -cpu ?
Das folgende Beispiel startet eine virtuelle Maschine mit Power PC-Architektur:
Host ~$ qemu-system-ppc Platte.img -g 800x600
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.
[bearbeiten] 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 -M ? an.
Host ~$ qemu-system-sh4 -M ?
Die möglichen CPU-Typen zeigt -cpu ? an.
Host ~$ qemu-system-sh4 -cpu ?
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
[bearbeiten] 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 -M ? an.
Host ~$ qemu-system-cris -M ?
Die möglichen CPU-Typen zeigt -cpu ? an.
Host ~$ qemu-system-cris -cpu ?
[bearbeiten] MicroBlaze
Der Mikrocontroller MicroBlaze wird als Softcore in Hardware-Beschreibungssprachen, wie VHDL (Very High Speed Integrated Circuit Hardware Description Language) oder Verilog HDL, definiert. Dieser 32-Bit RISC Mikrocontroller wird durch ein 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. Die möglichen Maschinen-Typen zeigt -M ? an.
Host ~$ qemu-system-microblaze -M ? Supported machines are: petalogix-s3adsp1800 Petalogix linux refdesign for xilinx Spartan 3ADSP1800 (default)
Die möglichen CPU-Typen zeigt -cpu ? an.
Host ~$ qemu-system-microblaze -cpu ?
[bearbeiten] Multiprozessorsysteme
[bearbeiten] 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
[bearbeiten] 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 (siehe http://lse.sourceforge.net/numa/faq/). 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 Resssourcen 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.
[bearbeiten] x86-Virtualisierungen
[bearbeiten] 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 der Befehl kvm angewendet. Bei einigen Distributionen erfolgt der Aufruf mit qemu-system-x86_32, qemu-system-x86_64 oder qemu-kvm.
Host ~$ kvm Platte.img
Wenn die Verwendung der KVM Hardware-unterstützten Virtualisierung unterbunden werden soll, ist die Option -no-kvm anzugeben. 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.
Host ~$ kvm Platte.img -no-kvm
Im QEMU-Monitor zeigt der Befehl info kvm, ob die KVM Hardware-unterstützte Virtualisierung aktiv ist. In diesem Fall wurde sie mit der Option -no-kvm deaktiviert.
(qemu) info kvm kvm support: disabled
Sind 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 ermöglicht das Betreiben von KVM in einer KVM-Instanz. Dazu muss das Host-System über einen AMD-Prozessor verfügen. 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.
[bearbeiten] Der Accelator KQEMU
Ab QEMU 0.12.0 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.
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 nur KQEMU 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