qemu, kvm, xen & libvirtHauptseite | Über | Hilfe | FAQ | Spezialseiten | Anmelden

Druckversion | Impressum | Datenschutz

Hardware SMBIOS RAM ACPI BIOS Clock localtime utc Graphic Keyb USB Sound System-Uhr USB lsusb PCI lspci

(Link zu dieser Seite als [[QEMU-KVM-Buch/ Virtuelle Hardware/ Bus RAM ACPI Clock Graphic Keyb USB Sound]])

<<<|###| >>> | English


Die Option -rtc base=2006-01-01 stellt die Systemzeit auf den 1. Januar 2006.
Die Option -rtc base=2006-01-01 stellt die Systemzeit auf den 1. Januar 2006.

Inhaltsverzeichnis

[bearbeiten] Hardware-Komponenten

In Abhängigkeit von der verwendeten Prozessor-Architektur werden unterschiedliche Hardware-Komponenten emuliert. Per Default werden Standard-Komponenten eingestellt. Sollen keine Default-Devices generiert werden, ist die Option -nodefaults anzuwenden. Im QEMU-Monitor zeigt dann der Befehl info network keine Netzwerk-Devices an.

Host ~$ qemu-system-x86_64 Platte.img -nodefaults

Im QEMU-Monitor zeigt der Befehl info qtree den Device-Tree an.

(qemu) info qtree 
bus: main-system-bus
 type System
 dev: i440FX-pcihost, id ""
   bus: pci.0
     type PCI
     dev: piix3-ide, id ""
       bus-prop: addr = 01.1
       class IDE controller, addr 00:01.1, pci id 8086:7010 (sub 1af4:1100)
       bar 4: i/o at 0xc000 [0xc00f]
       bus: ide.1
         type IDE
       bus: ide.0
         type IDE
         dev: ide-drive, id ""
           dev-prop: unit = 0
           dev-prop: drive = ide0-hd0
     dev: PIIX3, id ""
       bus-prop: addr = 01.0
       class ISA bridge, addr 00:01.0, pci id 8086:7000 (sub 1af4:1100)
       bus: isa.0
         type ISA
         dev: isa-fdc, id ""
           dev-prop: driveA = <null>
           dev-prop: driveB = <null>
           isa irq 6
         dev: i8042, id ""
           isa irqs 1,12
         dev: mc146818rtc, id ""
           dev-prop: base_year = 2000
           isa irq 8
     dev: i440FX, id ""
       bus-prop: addr = 00.0
       class Host bridge, addr 00:00.0, pci id 8086:1237 (sub 1af4:1100)

[bearbeiten] SMBIOS

Die SMBIOS-Spezifikationen (System Management BIOS) sind Standards zum Darstellen von Hardware-Informationen für x86-Architekturen. Diese Standards werden von der Distributed Management Task Force (DMTF) festgelegt (siehe http://www.dmtf.org/standards/smbios/). Diese Informationen dienen dem Betriebssystem bei der Ermittlung der Hardware und bei der Auswahl der entsprechenden Treiber. Weiterhin helfen diese Informationen bei der Fehlererkennung.

Unter MS-Windows speichert der Treiber mssmbios.sys die Daten in der Registry unter HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Mssmbios\Data ab. Bei korrekten SMBIOS-Einträgen werden bei aktuellen Windows-Versionen die ermittelten Informationen unter HKLM\Hardware\Description\BIOS dargestellt und dienen der System-Identifikation (Designed for Windows).

Unter unixartigen Betriebssystemen ermittelt man die SMBIOS-Informationen mit dem Tool dmidecode (http://www.nongnu.org/dmidecode/). Unter Ubuntu wird das gleichnamige Paket installiert.

Host ~$ sudo apt-get install dmidecode

Das Tool dmidecode benötigt Lese-Rechte für /dev/mem. Deshalb muss es mit root-Rechten aufgerufen werden.

Host ~$ sudo dmidecode

Die Ausgabe ist sehr umfangreich und wird mit Optionen eingeschränkt. Mit der Option -s lässt sich ein Schlüsselwort vorgeben (siehe Man-Page).

Host ~$ sudo dmidecode -s baseboard-manufacturer

Laut Spezifikation müssen die SMBIOS-Informationen in Tabellen unterteilt sein. Die Tabelle 0 enthält Angaben zum BIOS. Tabelle 1 zeigt System-Informationen und Tabelle 2 informiert über das Motherboard. In diesem Beispiel wird die Tabelle 0 (type 0) angezeigt.

Host ~$ sudo dmidecode --type 0

Mit den QEMU-Optionen -smbios type=0 und -smbios type=1 werden SMBIOS-Felder der Tabellen 0 und 1 vorgegeben. In diesem Beispiel wird das Feld Serial Number in der Tabelle 1 definiert.

Host ~$ qemu-system-x86_64 Platte.img -smbios type=1,serial=0123456789

Hier ein komplexeres Beispiel:

Host ~$ qemu-system-x86_64 Platte.img \ 
-smbios type=0,vendor="Apple Inc.",version="MP21.88Z.005C.B01.0608221120",date=04/01/2008, \
-smbios type=1[,manufacturer="Apple Inc.",product="MacBookAir1,1",version="1.0", \ 
serial=W88033AKY51,uuid=00020003-0004-0005-0006-000700080009,sku=470065-200

Im Gast-System, in diesem Beispiel Linux, werden die Einstellungen überprüft.

Gast ~$ sudo dmidecode --type 0
Handle 0x0000, DMI type 0, 24 bytes
BIOS Information
       Vendor: Apple Inc.
       Version: MP21.88Z.005C.B01.0608221120  
       Release Date: 04/01/2008
Gast ~$ sudo dmidecode --type 1
Handle 0x0100, DMI type 1, 27 bytes
System Information
       Manufacturer: Apple Computer, Inc.
       Product Name: MacBookAir1,1
       Version: 1.0
       Serial Number: W88033AKY51
       UUID: 00020003-0004-0005-0006-000700080009
       Wake-up Type: Power Switch
       SKU Number: 470065-200
       Family: Not Specified

Die SMBIOS-Daten lassen sich auch aus einer Binary-Datei laden.

Host ~$ qemu-system-x86_64 Platte.img -smbios file=smbios.bin

Hier die vollständige Syntax der Option -smbios.

-smbios type=0[,vendor=str][,version=str][,date=str][,release=%d.%d]

Definiert SMBIOS-Felder vom Typ 0.

-smbios type=1[,manufacturer=str][,product=str][,version=str]   \
       [,serial=str][,uuid=uuid][,sku=str][,family=str] 

Definiert SMBIOS-Felder vom Typ 1.

-smbios file=binary

Lädt ein SMBIOS-Eintrag aus einer Binäry-Datei.

[bearbeiten] RAM

Die Größe des Arbeitsspeichers (Random Access Memory) definiert die Option -m gefolgt von einer Zahl. Dabei gibt die Zahl die Größe des Arbeitsspeichers in MByte an. Der Defaultwert ist 128. Optional kann mit M oder G die Größe in MByte bzw. GByte angegeben werden. QEMU unterstützt bis 2047 MByte. Bei älteren Betriebssystemen ist dieser Wert zu reduzieren. Neuere Systeme verlangen meist mehr Arbeitsspeicher. Hier ein Beispiel mit 16 MByte RAM:

Host ~$ qemu-system-x86_64 Platte.img -m 16

Im folgenden Beispiel wird dem Gast-System ein GByte RAM zur Verfügung gestellt.

Host ~$ qemu-system-x86_64 Platte.img -m 1G

Wird unter Linux als Host-System dem Gast-System ein großer Arbeitsspeicher zugeteilt, kann es Probleme bei zu geringem Shared Memory geben. QEMU beschwert sich dann über unzureichenden Platz in /dev/shm. Besser ist es dieses Dateisystem zu erweitern. Für eine dauerhafte Konfiguration ist die Datei /etc/default/tmpfs (Ubuntu) anzupassen.

Host ~# umount /dev/shm
Host ~# mount -t tmpfs -o remount,size=144m none /dev/shm

Das Anpassen des Arbeitsspeichers zur Laufzeit ist für Linux als Gast-System mit dem Memory Ballooning möglich (siehe Abschnitt Paravirtualisierte Gerätetreiber).

Informationen über die Speicherverwaltung erhält man im QEMU-Monitor. Der Befehl info mem zeigt das aktive, virtuelle Speicher-Mapping an.

(qemu) info mem

Der Befehl info tlb listet das Mapping von virtuellen zu physischen Speicher auf.

(qemu) info tlb

Der Befehl info mtree (nur i386) zeigt den Memory-Tree an.

(qemu) info mtree

[bearbeiten] ACPI

Das Advanced Configuration and Power Interface (ACPI) ist ein offener Industriestandard für die Energieverwaltung in Computern. Die Kontrolle über das Energiemanagement liegt dabei komplett beim Betriebssystem. ACPI ist notwendig, um eine virtuelle Maschine korrekt herunterzufahren. Dabei wird ein entsprechendes ACPI-Signal dem Gast-System übermittelt. Das Gast-System muss in der Lage sein, ACPI-Befehle zu verstehen. In einem Linux-Gast-System ist dazu das Paket acpid zu installieren.

ACPI ist in QEMU voreingestellt. Sollte es Probleme mit dem Gast-Betriebssystem geben, deaktiviert man ACPI mit der Option -no-acpi. Alle Windows-Versionen ab 2000 installieren unterschiedliche Kernelversionen in Abhängigkeit davon, ob ACPI verfügbar ist. Deshalb darf ACPI nicht nachträglich deaktiviert werden, wenn es bei der Installation aktiviert war.

Host ~$ qemu-system-x86_64 Platte.img -no-acpi

Eine spezielle ACPI-Konfiguration ermöglicht die Option -acpitable. Die ACPI-Tabelle wird dabei mit den vorgegebenen Header-Feldern und Inhalten aus den Dateien aufgefüllt.

-acpitable [sig=str][,rev=n][,oem_id=str]              \
[,oem_table_id=str][,oem_rev=n] [,asl_compiler_id=str] \
[,asl_compiler_rev=n][,data=file1[:file2]...]

[bearbeiten] System-Uhr

Die System-Uhr (Real Time Clock) wird mit der Option -rtc definiert. Hier die Syntax.

-rtc [base=utc|localtime|date][,clock=host|vm][,driftfix=none|slew]

Für die Konfiguration der System-Uhr gilt per Default die Koordinierte Weltzeit (UTC). Einige Betriebssysteme, wie DOS- und Microsoft Windows-Versionen, setzen die lokale Zeit als Einstellung für die Systemzeit voraus. In Mitteleuropa würde dies eine Abweichung von einer Stunde im Winter (UTC+1 entspricht der MEZ) und zwei Stunden im Sommer (UTC+2 entspricht der MESZ) ergeben. Die Einstellung der lokalen Zeit ermöglicht die Option -rtc base=localtime. In älteren QEMU-Versionen wurde die lokale Zeit mit der Option -localtime vorgegeben.

Host ~$ qemu-system-x86_64 Platte.img -rtc base=localtime

Die Option -rtc base=date stellt die System-Uhr beim Start der virtuellen Maschine. In älteren QEMU-Versionen wurde die Startzeit mit der Option -startdate vorgegeben. Mögliche Werte sind 2008-04-17T16:01:21 oder 2008-04-17. Nachfolgend wird die Uhr auf den 31.12.1999 gesetzt.

Host ~$ qemu-system-x86_64 Platte.img -rtc base=1999-12-31

Per Default wird die Systemuhr der Instanz nach der Systemuhr des Host-Systems gestellt. Mit der Option clock=vm läuft die Systemuhr der Instanz isoliert vom Host.

Host ~$ qemu-system-x86_64 Platte.img -rtc base=utc,clock=vm

Bei Problemen mit der Zeit-Drift bei Microsoft Windows mit ACPI HAL ist die Option driftfix=slew anzuwenden (nur bei x86-Architekturen). Dabei wird ermittelt wie viele Timer-Interrupt nicht vom Windows-Gast-System verarbeitet werden und es wird versucht diese nochmals anzuwenden. In älteren QEMU-Versionen wurde dafür die Option -rtc-td-hack angewendet.

Host ~$ qemu-system-x86_64 Platte.img -rtc base=localtime,driftfix=slew

Im BIOS bei Mainboards, die für Mehrkern-Prozessoren geeignet sind, wird oft der High Precision Event Timer (HPET) implementiert. Dieser sehr präzise Zeitgeber löst Interrupts mit einer sehr hohen zeitlichen Auflösung (Quantelung) aus. Vor allem Multimedia-Programme profitieren von HPET. Neue Betriebssysteme unterstützen den High Precision Event Timer. Im QEMU-Monitor zeigt der Befehl info hpet die Verwendung von HPET an.

(qemu) info hpet
HPET is enabled by QEMU

Mit der Option -no-hpet wird die Unterstützung für HPET deaktiviert.

Host ~$ qemu-system-x86_64 Platte.img -no-hpet
(qemu) info hpet
HPET is disabled by QEMU

[bearbeiten] USB

Der Universal Serial Bus (USB) ist ein Bussystem zur Verbindung eines Computers mit Zusatzgeräten. Mit USB ausgestattete Geräte können im laufenden Betrieb miteinander verbunden werden (Hot-Plugging). Die angeschlossenen Geräte und deren Eigenschaften werden automatisch erkannt. Aktiviert wird die USB-Emulation mit der Option -usb. Emuliert wird ein PCI UHCI USB-Controller. USB-Devices werden mit der Option -usbdevice device konfiguriert. Verfügt das Gast-System über USB-Unterstützung, kann auf das USB-Device zugegriffen werden. Mit dem USB-Device tablet wird der Maus-Zeiger sowohl im Gast- als auch im Host-System genutzt. Verlässt der Maus-Zeiger das Fenster der Instanz, wird automatisch auf den Zeiger des Host-Systems umgeschaltet. Man verlässt damit dieses Fenster, ohne die Tastenkombination [Strg]+[Alt] eingeben zu müssen. Diese Option überschreibt die PS/2-Maus-Emulation.

Host ~$ qemu-system-x86_64 Platte.img -usb -usbdevice tablet

Im QEMU-Monitor zeigt der Befehl info usb dieses USB-Device an.

(qemu) info usb
  Device 0.2, Speed 12 Mb/s, Product USB Tablet

Bei älteren Betriebssystemen, zum Beispiel Microsoft Windows 98, wird zwar ein neuer Treiber für das USB-Device Tablet von der Installations-CD installiert, aber die rechte Maus-Taste funktioniert nicht. Es ist das virtuelle USB-Device Mouse hinzuzufügen.

(qemu) usb_add mouse

Zusätzlich zu den Möglichkeiten der Option -usbdevice tablet wird der Druck auf das Zeigegerät ausgewertet, wenn stattdessen die Option -usbdevice wacom-tablet verwendet wird. Dabei wird ein virtuelles Wacom-PenPartner-Tablet emuliert. Voraussetzung dafür ist die TSLIB-Bibliothek.

Host ~$ qemu-system-x86_64 Platte.img -usbdevice wacom-tablet

Einen virtuellen USB-Memory-Stick bindet man mit der Option -usbdevice disk:file ein. file ist ein Image einer formatierten virtuellen Festplatte. Hier ein Beispiel mit einem Image (usb-stick.img) als virtuellen USB-Memory-Stick.

Host ~$ qemu-system-x86_64 Platte.img -usbdevice disk:usb-stick.img

Im QEMU-Monitor kontrolliert man mit dem Befehl info usb, ob das Device hinzugefügt wurde.

(qemu) info usb
  Device 0.2, Speed 12 Mb/s, Product USB MSD (usb-stick.img)

Entfernt wird dieses USB-Device mit dem Befehl usb_del device, wobei in diesem Beispiel für device die Zahlenkombination 0.2 steht. Zuvor ist das USB-Device im Gast-System abzumelden.

(qemu) usb_del 0.2

Mit folgender Option wird ein USB-Seriell-Konverter emuliert.

-usbdevice serial:[vendorid=vendor_id][,product_id=product_id]:dev 

Die Default-Werte für die Vendor- und Produkt-ID sind 0403 und 6001. Es wird ein FTDI-FT232BM-Chip emuliert und mit dem Host-Device dev verbunden. Die verfügbaren Character-Devices entsprechen denen der Option -serial. Im folgenden Beispiel wird die Ausgabe in die Datei /tmp/my.log umgeleitet.

Host ~$ qemu-system-x86_64 Platte-01.img -usbdevice serial::file:/tmp/my.log

Im QEMU-Manager gibt der Befehl info usb folgende Informationen aus.

(qemu) info usb
Device 0.2, Speed 12 Mb/s, Product QEMU USB Serial(file:/tmp/my.log)

Mit der Option -usbdevice bt[:hci-type] wird ein Bluetooth-Dongle emuliert. Die möglichen Werte für hci-type werden im Abschnitt Bluetooth beschrieben.

Host ~$ qemu-system-x86_64 Platte.img -usbdevice bt

Im QEMU-Manager gibt der Befehl info usb folgende Informationen aus.

(qemu) info usb
  Device 0.2, Speed 480 Mb/s, Product QEMU BT Dongle

Mit der Option -usbdevice net:options lässt sich ein USB-Netzwerk-Adapter emulieren, der die CDC- und RNDIS-Protokolle unterstützt. Für options lassen sich die Parameter der Option -net nic anwenden. Zur Zeit kann diese Option nicht zusammen mit PCI-Netzwerk-Karten verwendet werden. Zum Beispiel wird der User-Mode Network Stack mit folgenden Optionen definiert.

Host ~$ qemu-system-x86_64 Platte.img -net user,vlan=0 -usbdevice net:vlan=0

Im QEMU-Manager gibt der Befehl info usb folgende Informationen aus.

(qemu) info usb
  Device 0.2, Speed 12 Mb/s, Product QEMU USB Network Interface

Der direkte Zugriff auf ein USB-Device des Host-Systems befindet sich noch im experimentellen Stadium und bremst QEMU aus. Unter Linux als Host-System listet der Befehl lsusb die verfügbaren USB-Devices auf.

Host ~$ lsusb

Im QEMU-Monitor ist mit dem Befehl info usbhost die Verfügbarkeit des entsprechenden Host-Device zu überprüfen.

(qemu) info usbhost
Device 0.1, speed 480 Mb/s
Class 00: USB device 090c:1000, USB DISK

In diesem Beispiel soll auf das Host-Device mit der Vender-ID 090c und der Produkt-ID 1000 zugegriffen werden. Dies ermöglicht im QEMU-Monitor der Befehl usb_add.

(qemu) usb_add host:090c:1000   

Falls die Zugriffsrechte im Host-System einen Zugriff verbieten, erscheint eine Fehlermeldung.

Warning: could not add USB device host:090c:1000
/dev/bus/usb/000/001: Permission denied

Die Zugriffsrechte können unter Linux wie folgt angepasst werden.

Host ~$ sudo chmod -R 777 /dev/bus/usb
Host ~$ sudo chmod -R 777 /proc/bus/usb

Jetzt kann im QEMU-Monitor der Befehl usb_add erfolgreich angewendet werden. Den Zugriff auf das USB-Device des Host-Systems kann auch die Option -usbdevice ermöglichen.

Host ~$ qemu-system-x86_64 Platte.img -usbdevice host:090c:1000

Zum Entfernen des USB-Device dient im QEMU-Monitor der Befehl usb_del. Zuvor ist das USB-Device im Gast-System abzumelden.

(qemu) usb_del host:090c:1000

[bearbeiten] PCI

PCI (Peripheral Component Interconnect) ist ein Bus-Standard zur Verbindung von Peripheriegeräten mit den Prozessoren. Im Unterschied zu dem ISA-Bus unterstützt PCI die dynamische Konfiguration eines Gerätes ohne Eingriff des Benutzers. Fast alle ab 1994 gebauten IBM-kompatiblen PCs verfügen über zwei bis sieben Steckplätzen für PCI-Karten. Auch neuere Computer von Apple und Workstations von Sun besitzen einen PCI-Bus. In die PCI-Steckplätze können Karten diverser Hersteller eingesetzt werden, zum Beispiel Netzwerkkarten, Modems, Soundkarten und (ältere oder Zweit-) Grafikkarten. Im QEMU-Monitor zeigt der Befehl info pci die angeschlossenen virtuellen PCI-Devices an.

(qemu) info pci

Im QEMU-Monitor fügt der Befehl pci_add Hotplug-Geräte dem gestarteten Gast-System (Linux) hinzu. Dazu müssen im Gast-System die Kernel-Module acpiphp und pci_hotplug geladen sein. In diesem Beispiel wird eine virtuelle PCI-Netzwerkkarte (nic) vom Typ e1000 am Slot 0 angeschlossen.

(qemu) pci_add auto nic model=e1000,id=nic1
OK domain 0, bus 0, slot 4, function 0

Der folgende Befehl fügt die Datei daten.img als eine virtuelle SCSI-Festplatte hinzu.

(qemu) pci_add auto storage file=daten.img,if=scsi
OK domain 0, bus 0, slot 5, function 0

Die Syntax des Befehls pci_add ist:

(qemu) pci_add auto|[[<domain>:]<bus>:]<slot> nic|storage \
[[vlan=n][,macaddr=addr][,model=type]]  \
[file=file][,if=type][,bus=nr] 

Angeschlossene virtuelle PCI-Geräte werden mit dem Befehl pci_del entfernt. Es ist dazu zumindest die Slot-Nummer anzugeben. Mit diesem Befehl wird das PCI-Device im Slot 4 entfernt.

(qemu) pci_del 0:0:4

Die Syntax des Befehls pci_del ist:

(qemu) pci_del [[<domain>:]<bus>:]<slot>

Noch in der Entwicklung ist der Zugriff auf PCI-Devices des Host-Systems. Es gibt noch zahlreiche Einschränkungen.

Die Option -pcidevice host=busaddresse bindet ein PCI-Device des Host-Systems ein. Die möglichen PCI-Busadressen listet der Befehl lspci auf.

Host ~$ lspci
06:00.0 ...

Folgender Befehl stellt das Gerät mit der PCI-Busadresse 06:00.0 dem Gast zur Verfügung.

Host ~$ qemu-system-x86_64 Platte.img -pcidevice host=06:00.0

Die Syntax der Option -pcidevice ist:

-pcidevice host=bus:dev.func[,dma=none][,name=string]

Wird dma=none vorgegeben, erfolgt keine DMA-Translation. Ansonsten wird der Default-Wert IOMMU angewendet. Der Parameter string wird für die Log-Ausgabe verwendet.

[bearbeiten] Bildschirmausgabe, Tastatur und Maus

Der Typ der Grafikkarte wird ab QEMU 0.10.1 mit der Option -vga type definiert. Es stehen folgende Typen zur Auswahl:

     std
Simuliert eine Standard-VGA-Karte mit VESA-Bochs-Extensions. Unterstützt das Gast-System die VESA 2.0 VBE-Extensions, kann diese Option für höhere Auflösungen (>= 1280x1024x16) gewählt werden.
     cirrus
Es wird eine CL-GD5446-PCI-VGA-Karte emuliert. Diese Option ist als Default voreingestellt. Alle Versionen ab Microsoft Windows 95 erkennen diese Grafik-Karte. Für optimale Performance ist im Host- und Gast-System jeweils eine Farbtiefe von 16 Bit einzustellen.
     vmware
Simuliert einen VMware SVGA-II kompatiblen Adapter. Diese Option kann für Gast-Systeme mit installierten Grafik-Treibern der VMware-Tools verwendet werden.
     qxl
Simuliert ein QXL-Device. Diese paravirtualisierte Grafikkarte ist VGA-kompatibel mit VESA 2.0 VBE-Support. Dieses Device ist zusammen mit der Option -spice anzuwenden (siehe http://qemu-buch.de/d/Netzwerkoptionen/_Netzwerkdienste#SPICE). Zu empfehlen ist die Installation eines QXL-Treibers im Gast-System.
     xenfb
Simuliert einen Xen-Frame-Buffer. Bei einem Linux-Gast-System wird das entsprechende Modul mit dem Befehl modprobe xenfb geladen.
     none
Deaktiviert die VGA-Karte.

Das folgende Beispiel aktiviert die Standard-VGA-Karte mit VESA 2.0 BIOS Extensions.

Host ~$ qemu-system-x86_64 Platte.img -vga std

Wohin die Bildschirmausgabe geleitet werden soll, definiert die Option -display (ab QEMU 0.15). In der Default-Einstellung erfolgt die VGA-Ausgabe per Simple DirectMedia Layer (SDL). Diese beiden Befehle haben daher die gleiche Wirkung.

Host ~$ qemu-system-x86_64 Platte.img
Host ~$ qemu-system-x86_64 Platte.img -display sdl

Bei älteren QEMU-Versionen aktiviert die Option -sdl den Simple DirectMedia Layer. Der Option -display sdl können weitere Parameter angehangen werden. frame=off deaktiviert den Fenster-Rahmen der Instanz und stellt damit den vollen Bildschirmbereich für das Gast-System zur Verfügung. Bei alt_grab=on wird die Tastenkombination [Strg]+[Alt]+[Shift] statt [Strg]+[Alt] zur Freigabe der Maus verwendet. Bei ctrl_grab=on wird die rechte [Strg]-Taste statt [Strg]+[Alt] zur Freigabe der Maus verwendet. Bei älteren QEMU-Versionen sind dazu die Optionen -no-frame, -alt-grab und -ctrl-grab anzuwenden.

Host ~$ qemu-system-x86_64 Platte.img -display sdl,frame=off,alt_grab=on,ctrl_grab=on

window_close=off deaktiviert den Button zum Schließen des Fensters der Instanz. Bei älteren QEMU-Versionen ist dazu die Option -no-quit anzuwenden.

Host ~$ qemu-system-x86_64 Platte.img -display sdl,window_close=off

Erfolgt die Bildschirmausgabe des Gast-System im Textmodus, kann die Option -display curses angewendet werden. Statt der VGA-Ausgabe mit dem DirectMedia Layer (SDL) erfolgt die VGA-Ausgabe über das Curses/Ncurses-Interface. Im grafischen Modus erfolgt bei dieser Option keine Ausgabe. Es stehen weder der QEMU-Monitor noch weitere Konsolen zur Verfügung. Bei älteren QEMU-Versionen ist dafür die Option -curses anzuwenden.

Host ~$ qemu-system-x86_64 Platte.img -curses

Die Option -display none deaktiviert die grafische Ausgabe. Für das Gast-System wird aber weiterhin eine Grafik-Karte emuliert. Im Unterschied zur älteren Option -nographic werden dabei die serielle und parallele Ein- und Ausgabe nicht umgeleitet. Was für einen Arbeitsplatzcomputer wenig sinnvoll erscheint, kann bei Server-Anwendungen und für Kernel-Entwickler interessant sein. Die fehlende Interaktion der grafischen Ausgabe kann durch eine andere Kommunikation ersetzt werden. Bei ersten Tests ist die Option -snapshot empfehlenswert. Ist keine Kommunikation mit dem Gast-System möglich, kann die Instanz mit [Strg]+[A] und [X] beendet werden, ohne das Gast-System zu schädigen.

Host ~$ qemu-system-x86_64 Platte.img -snapshot -display none

Eine Instanz im Vollbild-Modus startet die Option -full-screen. Zur Umschaltung zwischen Vollbild- und Fenster-Modus dient die Tastenkombination [Strg]+[Alt]+[F].

Host ~$ qemu-system-x86_64 Platte.img -full-screen

Normalerweise muss das Tastaturlayout nicht vorgegeben werden. Die Option -k wird nur benötigt, wenn es Probleme bei der Erkennung des PC-Tastaturlayouts gibt. Die verfügbaren Layouts sind ar, de-ch, es, fo. fr-ca, hu, ja, mk, no, pt-br, sv, da, en-gb, et, fr, fr-ch, is, lt, nl, pl, ru, th, de, en-us, fi, fr-be, hr, it, lv, nl-be, pt, sl, tr. Default ist en-us.

Host ~$ qemu-system-x86_64 Platte.img -vnc 1 -k de

Per Default wird für die x86-Architektur eine PS/2-Tastatur emuliert. Mit der Option -usbdevice keyboard wird eine USB-Tastatur emuliert.

Host ~$ qemu-system-x86_64 Platte.img -usb -usbdevice keyboard

Per Default wird für die x86-Architektur eine PS/2-Maus emuliert. Im QEMU-Monitor informiert der Befehl info mice über die Mäuse.

(qemu) info mice
 * Mouse #0: QEMU PS/2 Mouse

Soll eine USB-Maus emuliert werden, ist die Option -usbdevice mouse anzuwenden.

Host ~$ qemu-system-x86_64 Platte.img -usb -usbdevice keyboard -usbdevice mouse

Im QEMU-Monitor listet der Befehl info usb die USB-Devices auf.

(qemu) info usb
  Device 0.1, Speed 12 Mb/s, Product QEMU USB Keyboard
  Device 0.0, Speed 12 Mb/s, Product QEMU USB Hub
  Device 0.0, Speed 12 Mb/s, Product QEMU USB Mouse

Mit der Option -chardev msmouse,id=id werden für das Gast-System die Events einer Microsoft-Maus emuliert.

Host ~$ qemu-system-x86_64 Platte.img -chardev msmouse,id=Speedy-Gonzalez

Im QEMU-Monitor informiert der Befehl info mice über die Mäuse.

(qemu) info mice
  Mouse #0: QEMU Microsoft Mouse
* Mouse #1: QEMU PS/2 Mouse

[bearbeiten] Sound

Zur Aktivierung der Emulation von einer oder mehreren Soundkarten beziehungsweise dem PC-Lautsprecher dient die Option -soundhw. Die Emulationen der Soundkarten Adlib, Gus und cs4231a stehen nur zur Verfügung, wenn beim Kompilieren die Option –audio-card-list mit den gewünschten Soundkarten angegeben wurde. Folgender Befehl listet die verfügbare Sound-Hardware auf:

Host ~$ qemu-system-x86_64 -soundhw ?
pcspk       PC speaker
sb16        Creative Sound Blaster 16
cs4231a     CS4231A
adlib       Yamaha YM3812 (OPL2)
gus         Gravis Ultrasound GF1
ac97        Intel 82801AA AC97 Audio
es1370      ENSONIQ AudioPCI ES1370

Es können mehrere Soundkarten getrennt durch Kommas angegeben werden.

Host ~$ qemu-system-x86_64 Platte.img -soundhw pcspk,sb16

Bei der Emulation der Soundkarte Intel 82801AA AC97 Audio unter Linux als Gast-System erfordert das Kernel-Modul i810_audio die folgende Option: modprobe i810_audio clocking=48000. Der Parameter all aktiviert alle unterstützten Soundkarten.

Host ~$ qemu-system-x86_64 Platte.img -soundhw all

Informationen zum Audio-Subsystem zeigt die Option -audio-help.

Host ~$ qemu-system-x86_64 -audio-help

Mit Befehlen des QEMU-Monitors lassen sich die Sound-Ausgaben des Gast-Systems mitschneiden. Der folgende Befehl startet die Aufnahme und schreibt sie in die angegebene Datei:

(qemu) wavcapture mitschnitt01.wav

Weitere Parameter steuern die Samplerate, Samplebits und die Anzahl der Kanäle. Informationen zu aktiven Mitschnitten zeigt der Befehl info capture.

(qemu) info capture

Die erste Spalte zeigt die Indexnummer. Der erste aktive Mitschnitt erhält die Nummer 0. Um die Aufnahme zu beenden, wird der Befehl stopcapture gefolgt von der Indexnummer eingegeben.

(qemu) stopcapture 0

Wurde QEMU mit der Option --audio-card-list=adlib,gus,cs4231a kompiliert, werden Sound-Karten Yamaha YM3812, Gravis Ultrasound GF1 und Crystal CS4231A emuliert. Für die Emulation der Soundkarte Gravis Ultrasound (GUS) wird GUSemu (http://www.deinmeister.de/gusemu/) verwendet. Per Default nutzt GUS den IRQ7. Dieser IRQ wird auch von parallelen Ports beansprucht. Zur Vermeidung von Konflikten deaktiviert man die parallelen Ports.

Host ~$ qemu-system-x86_64 Platte.img -soundhw gus -parallel none

Alternativ stellt man den GUS-IRQ um.

Host ~$ qemu-system-x86_64 Platte.img -device gus,irq=5

[bearbeiten] Netzwerkkarten

Zu emulierende Netzwerkkarten (Network Interface Card - NIC) werden mit der Option -net nic konfiguriert. Die genaue Beschreibung erfolgt im Abschnitt Netzwerkoptionen.

[bearbeiten] Die Option -device

Eine flexiblere Konfiguration von Hardware-Komponenten ermöglicht die Option -device. Die Syntax ist:

-device driver[,prop[=value][,...]]

Fügt das Device driver hinzu.

     prop=value
Definiert die Eigenschaften des Devices.

Eine Liste der möglichen Devices wird durch -device ? ausgegeben. Dieser Befehl listet die Devices für die x86-Architektur (64-Bit) auf.

Host ~$ qemu-system-x86_64 -device ?
name "AC97", bus PCI, desc "Intel 82801AA AC97 Audio"
name "ccid-card-passthru", bus ccid-bus, desc "passthrough smartcard"
name "cirrus-vga", bus PCI, desc "Cirrus CLGD 54xx VGA"
name "cs4231a", bus ISA, desc "Crystal Semiconductor CS4231A"
name "e1000", bus PCI, desc "Intel Gigabit Ethernet"
name "ES1370", bus PCI, desc "ENSONIQ AudioPCI ES1370"
name "gus", bus ISA, desc "Gravis Ultrasound GF1"
name "hda-duplex", bus HDA, desc "HDA Audio Codec, duplex"
name "hda-output", bus HDA, desc "HDA Audio Codec, output-only"
name "i6300esb", bus PCI
name "i82550", bus PCI, desc "Intel i82550 Ethernet"
name "i82551", bus PCI, desc "Intel i82551 Ethernet"
name "i82557a", bus PCI, desc "Intel i82557A Ethernet"
name "i82557b", bus PCI, desc "Intel i82557B Ethernet"
name "i82557c", bus PCI, desc "Intel i82557C Ethernet"
name "i82558a", bus PCI, desc "Intel i82558A Ethernet"
name "i82558b", bus PCI, desc "Intel i82558B Ethernet"
name "i82559a", bus PCI, desc "Intel i82559A Ethernet"
name "i82559b", bus PCI, desc "Intel i82559B Ethernet"
name "i82559c", bus PCI, desc "Intel i82559C Ethernet"
name "i82559er", bus PCI, desc "Intel i82559ER Ethernet"
name "i82562", bus PCI, desc "Intel i82562 Ethernet"
name "i82801", bus PCI, desc "Intel i82801 Ethernet"
name "ib700", bus ISA
name "ich9-ahci", bus PCI, alias "ahci"
name "ich9-usb-ehci1", bus PCI
name "ich9-usb-uhci1", bus PCI
name "ich9-usb-uhci2", bus PCI
name "ich9-usb-uhci3", bus PCI
name "ide-cd", bus IDE, desc "virtual IDE CD-ROM"
name "ide-drive", bus IDE, desc "virtual IDE disk or CD-ROM (legacy)"
name "ide-hd", bus IDE, desc "virtual IDE disk"
name "intel-hda", bus PCI, desc "Intel HD Audio Controller"
name "ioh3420", bus PCI, desc "Intel IOH device id 3420 PCIE Root Port"
name "isa-applesmc", bus ISA
name "isa-debugcon", bus ISA
name "isa-ide", bus ISA
name "isa-parallel", bus ISA
name "isa-serial", bus ISA
name "isa-vga", bus ISA
name "ivshmem", bus PCI
name "lsi53c895a", bus PCI, alias "lsi"
name "ne2k_isa", bus ISA
name "ne2k_pci", bus PCI
name "pci-ohci", bus PCI, desc "Apple USB Controller"
name "pcnet", bus PCI
name "piix3-usb-uhci", bus PCI
name "piix4-usb-uhci", bus PCI
name "qxl", bus PCI, desc "Spice QXL GPU (secondary)"
name "qxl-vga", bus PCI, desc "Spice QXL GPU (primary, vga compatible)"
name "rtl8139", bus PCI
name "sb16", bus ISA, desc "Creative Sound Blaster 16"
name "scsi-cd", bus SCSI, desc "virtual SCSI CD-ROM"
name "scsi-disk", bus SCSI, desc "virtual SCSI disk or CD-ROM (legacy)"
name "scsi-generic", bus SCSI, desc "pass through generic scsi device (/dev/sg*)"
name "scsi-hd", bus SCSI, desc "virtual SCSI disk"
name "sga", bus ISA, desc "Serial Graphics Adapter"
name "smbus-eeprom", bus I2C
name "SUNW,fdtwo", bus System
name "sysbus-fdc", bus System
name "sysbus-ohci", bus System, desc "OHCI USB Controller"
name "testdev", bus ISA
name "usb-braille", bus USB
name "usb-bt-dongle", bus USB
name "usb-ccid", bus USB, desc "CCID Rev 1.1 smartcard reader"
name "usb-ehci", bus PCI
name "usb-host", bus USB
name "usb-hub", bus USB
name "usb-kbd", bus USB
name "usb-mouse", bus USB
name "usb-net", bus USB
name "usb-redir", bus USB
name "usb-serial", bus USB
name "usb-storage", bus USB
name "usb-tablet", bus USB
name "usb-wacom-tablet", bus USB, desc "QEMU PenPartner Tablet"
name "VGA", bus PCI
name "virtconsole", bus virtio-serial-bus
name "virtio-9p-pci", bus PCI
name "virtio-balloon-pci", bus PCI, alias "virtio-balloon"
name "virtio-blk-pci", bus PCI, alias "virtio-blk"
name "virtio-net-pci", bus PCI, alias "virtio-net"
name "virtio-serial-pci", bus PCI, alias "virtio-serial"
name "virtserialport", bus virtio-serial-bus
name "vmware-svga", bus PCI
name "vt82c686b-usb-uhci", bus PCI
name "x3130-upstream", bus PCI, desc "TI X3130 Upstream Port of PCI Express Switch"
name "xen-platform", bus PCI, desc "XEN platform pci device"
name "xio3130-downstream", bus PCI, desc "TI X3130 Downstream Port of PCI Express Switch"

Eine Standard-VGA-Karte wird zum Beispiel mit -device VGA emuliert. Dies entspricht der Option -vga std.

Host ~$ qemu-system-x86_64 Platte.img -device VGA

Mit -device driver,? erhält man eine Liste möglicher Eigenschaften für das angegebene Device.

Host ~$ qemu-system-x86_64 Platte.img -device VGA,?
VGA.bios-offset=hex32
VGA.bios-size=hex32

Im QEMU-Monitor fügt der Befehl device_add ein Device zur Laufzeit der virtuellen Maschine hinzu. Die Optionen entsprechen denen von -device. Es sollten nur Hot-Plug-Geräte im laufenden Betrieb hinzufügt werden, sonst droht ein Absturz des Gast-Systems. Im folgenden Beispiel wird das Image daten.img als USB-Storage hinzugefügt. Dazu ist USB zu aktivieren.

Host ~$ qemu-system-x86_64 Platte.img -usb

Im QEMU-Monitor werden folgende Befehle aufgerufen:

(qemu) drive_add 0 id=mein_usb_drive,if=none,file=daten.img
(qemu) device_add usb-storage,id=mein_usb_storage,drive=mein_usb_drive

Der Befehl info usb zeigt dieses USB-Device an.

(qemu) info usb
  Device 0.2, Speed 12 Mb/s, Product QEMU USB MSD

Entfernt wird dieses USB-Device mit dem Befehl device_del.

(qemu) device_del mein_usb_storage

[bearbeiten] Character Devices

Character-Device (zeichenorientierte Geräte) übertragen nur ein Zeichen beziehungsweise ein Byte zur selben Zeit (serielle Datenübertragung). Die Daten werden meist ungepuffert, also sofort übertragen. Dies unterscheidet sie von den blockorientierten Geräten. Diese übertragen die Daten in Datenblöcken. Mit der Option -chardev werden Character-Devices definiert. Je nach Art des Devices sind bestimmte Optionen anzuwenden. Jedem Device muss mit id eine Zeichenkette zugeordnet werden. Diese dient zur eindeutigen Identifizierung. Die jeweilige Syntax ist:

-chardev null,id=id[,mux=on|off]
-chardev socket,id=id[,host=host],port=host[,to=to][,ipv4][,ipv6][,nodelay]
        [,server][,nowait][,telnet][,mux=on|off] (tcp)
-chardev socket,id=id,path=path[,server][,nowait][,telnet],[mux=on|off] (unix)
-chardev udp,id=id[,host=host],port=port[,localaddr=localaddr]
        [,localport=localport][,ipv4][,ipv6][,mux=on|off]
-chardev msmouse,id=id[,mux=on|off]
-chardev vc,id=id[[,width=width][,height=height]][[,cols=cols][,rows=rows]]
        [,mux=on|off]
-chardev file,id=id,path=path[,mux=on|off]
-chardev pipe,id=id,path=path[,mux=on|off]
-chardev pty,id=id[,mux=on|off]
-chardev stdio,id=id[,mux=on|off][,signal=on|off]
-chardev braille,id=id[,mux=on|off]
-chardev tty,id=id,path=path[,mux=on|off]
-chardev parport,id=id,path=path[,mux=on|off]
-chardev spicevmc,id=id,debug=debug,name=name[,mux=on|off]

Mit dem Device null wird ein leeres Device angelegt. Es sendet keine Daten und verwirft empfangene Daten.

Host ~$ qemu-system-x86_64 Platte.img -chardev null,id=nichts

Im QEMU-Monitor listet der Befehl info chardev die Character Devices auf.

(qemu) info chardev
nichts: filename=null
monitor: filename=vc
serial0: filename=vc
parallel0: filename=vc

In diesem Beispiel wird mit der Option -device die Hardware usb-mouse mit dem Namen meine_maus definiert (siehe oben). Mit der Option -chardev wird diese Hardware als Character-Device definiert.

Host ~$ qemu-system-x86_64 Platte.img -usb -device usb-mouse,id=meine_maus -chardev msmouse,id=meine_maus

Im QEMU-Monitor zeigen die Befehle info chardev, info usb und info mice dieses Character-Device.

(qemu) info chardev
meine_maus: filename=msmouse
compat_monitor0: filename=stdio
serial0: filename=vc
parallel0: filename=vc
(qemu) info usb
Device 0.2, Port 1, Speed 12 Mb/s, Product QEMU USB Mouse
(qemu) info mice
* Mouse #2: QEMU USB Mouse
  Mouse #0: QEMU Microsoft Mouse
  Mouse #1: QEMU PS/2 Mouse

Weitere Möglichkeiten der Option -chardev werden im Anhang aufgelistet.


<<<|###| >>>

Von „http://qemu-buch.de/de/index.php?title=QEMU-KVM-Buch/_Virtuelle_Hardware/_Bus_RAM_ACPI_Clock_Graphic_Keyb_USB_Sound

Diese Seite wurde bisher 61.355 mal abgerufen. Diese Seite wurde zuletzt am 29. März 2012 um 15:59 Uhr geändert. Inhalt ist verfügbar unter der GNU Free Documentation License 1.2.


Finden

Blättern

News

Deutsch
Weitersagen
Tipps für Autoren
Autoren
Impressum


English
Recommendation
The Authors
Contact



Letzte Änderungen


Ändern
Seite bearbeiten
Bearbeitungshilfe
Seitenoptionen
Diskussion
Kommentar hinzufügen
Druckversion
Seitendaten
Versionen
Links auf diese Seite
Änderungen an verlinkten Seiten
Meine Seiten
Anmelden
Spezialseiten
Neue Seiten
Dateiliste
Statistik
Kontakt
Mehr …