Hardware 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]])
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 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] 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 und KVM unterstützen 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 Platte.img -m 16
Im folgenden Beispiel wird dem Gast-System ein GByte RAM zur Verfügung gestellt.
Host ~$ qemu 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 oder KVM beschweren 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. Der Befehl info tlb listet das Mapping von virtuellen zu physischen Speicher auf.
[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 in QEMU und KVM 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 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 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 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 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 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 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 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 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 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 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 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 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 und KVM 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 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 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.
- Im Host-System wird ein Linux-Kernel ab Version 2.6.28 benötigt.
- Im Host-System darf kein Treiber auf das PCI-Device zugreifen.
- Das PCI-Device darf sich keinen IRQ mit einem anderen Device teilen.
- Das Kernel-Modul raw_io ist notwendig.
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 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] Grafikausgabe, 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.
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 Platte.img -vga std
Erfolgt die Bildschirmausgabe des Gast-System im Textmodus, kann die Option -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.
Host ~$ qemu Platte.img -curses
Die Option -sdl aktiviert den Simple DirectMedia Layer (SDL) für die Grafik-Ausgabe.
Host ~$ qemu Platte.img -vnc :1 -sdl
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 Platte.img -full-screen
Die Option -nographic deaktiviert die grafische Ausgabe und QEMU oder KVM werden Kommandozeilentools. Der emulierte serielle Port wird dabei zur Konsole umgeleitet. Die Steuerung kann über spezielle Tastaturkürzel erfolgen. Eine Übersicht über die Tastaturkürzel zeigt die Tastenkombination [Strg]+[A] und [H] an. Die Instanz wird zum Beispiel mit [Strg]+[A] und [X] beendet. 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 Platte.img -snapshot -nographic
Die Option -no-frame deaktiviert den Fenster-Rahmen der Instanz. Mit -no-quit deaktiviert man den Fenster-Button zum Schließen (rechts oben). Ein Beenden der Instanz ist mit dem Befehl quit im QEMU-Monitor weiterhin möglich. Mit der Option -alt-grab wird die Tastenkombination [Strg]+[Alt]+[Shift] statt [Strg]+[Alt] zur Freigabe der Maus verwendet. Mit der Option -ctrl-grab wird die rechte [Strg]-Taste statt [Strg]+[Alt] zur Freigabe der Maus verwendet.
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 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 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 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 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 -soundhw ? pcspk PC speaker sb16 Creative Sound Blaster 16 ac97 Intel 82801AA AC97 Audio es1370 ENSONIQ AudioPCI ES1370
Es können mehrere Soundkarten getrennt durch Kommas angegeben werden.
Host ~$ qemu 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 Platte.img -soundhw all
Informationen zum Audio-Subsystem zeigt die Option -audio-help.
Host ~$ qemu -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
[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[,options]
Eine Liste der möglichen Devices wird durch -device ? ausgegeben. Dieser Befehl listet die Devices für die x86-Architektur (32-Bit) auf.
Host ~$ qemu -device ?
name "pci-bridge", bus PCI name "virtio-balloon-pci", bus PCI name "virtio-console-pci", bus PCI name "virtio-net-pci", bus PCI name "virtio-blk-pci", bus PCI name "i82562", bus PCI name "i82559er", bus PCI name "i82559c", bus PCI name "i82559b", bus PCI name "i82559a", bus PCI name "i82558b", bus PCI name "i82558a", bus PCI name "i82557c", bus PCI name "i82557b", bus PCI name "i82557a", bus PCI name "i82551", bus PCI name "i82550", bus PCI name "pcnet", bus PCI name "rtl8139", bus PCI name "e1000", bus PCI, desc "Intel Gigabit Ethernet" name "ide-drive", bus IDE name "isa-ide", bus ISA name "piix4-ide", bus PCI, no-user name "piix3-ide", bus PCI, no-user name "i8042", bus ISA, no-user name "sb16", bus ISA, desc "Creative Sound Blaster 16" name "ES1370", bus PCI, desc "ENSONIQ AudioPCI ES1370" name "AC97", bus PCI, desc "Intel 82801AA AC97 Audio" name "VGA", bus PCI name "SUNW,fdtwo", bus System name "sysbus-fdc", bus System name "isa-fdc", bus ISA, no-user name "mc146818rtc", bus ISA, no-user name "isa-serial", bus ISA name "cirrus-vga", bus PCI, desc "Cirrus CLGD 54xx VGA" name "isa-parallel", bus ISA name "PIIX3", bus PCI, desc "ISA bridge", no-user name "i440FX", bus PCI, desc "Host bridge", no-user name "i440FX-pcihost", bus System, no-user name "piix4-usb-uhci", bus PCI name "piix3-usb-uhci", bus PCI name "vmware-svga", bus PCI name "ib700", bus ISA name "ne2k_isa", bus ISA name "max7310", bus I2C name "wm8750", bus I2C name "twl92230", bus I2C name "lm8323", bus I2C name "tmp105", bus I2C name "ads7846", bus SSI name "max1111", bus SSI name "max1110", bus SSI name "ds1338", bus I2C name "sb16", bus ISA, desc "Creative Sound Blaster 16" name "ES1370", bus PCI, desc "ENSONIQ AudioPCI ES1370" name "AC97", bus PCI, desc "Intel 82801AA AC97 Audio" name "VGA", bus PCI name "SUNW,fdtwo", bus System name "sysbus-fdc", bus System name "isa-fdc", bus ISA, no-user name "mc146818rtc", bus ISA, no-user name "isa-serial", bus ISA name "cirrus-vga", bus PCI, desc "Cirrus CLGD 54xx VGA" name "isa-parallel", bus ISA name "PIIX3", bus PCI, desc "ISA bridge", no-user name "i440FX", bus PCI, desc "Host bridge", no-user name "i440FX-pcihost", bus System, no-user name "piix4-usb-uhci", bus PCI name "piix3-usb-uhci", bus PCI name "vmware-svga", bus PCI name "ib700", bus ISA name "ne2k_isa", bus ISA name "max7310", bus I2C name "wm8750", bus I2C name "twl92230", bus I2C name "lm8323", bus I2C name "tmp105", bus I2C name "ads7846", bus SSI name "max1111", bus SSI name "max1110", bus SSI name "ds1338", bus I2C name "smbus-eeprom", bus I2C name "scsi-disk", bus SCSI, desc "virtual scsi disk or cdrom" name "scsi-generic", bus SCSI, desc "pass through generic scsi device (/dev/sg*)" name "usb-hub", bus USB name "usb-host", bus USB name "usb-kbd", bus USB name "usb-mouse", bus USB name "usb-tablet", bus USB name "usb-storage", bus USB name "usb-wacom-tablet", bus USB, desc "QEMU PenPartner Tablet" name "usb-braille", bus USB name "usb-serial", bus USB name "usb-net", bus USB name "ssi-sd", bus SSI name "usb-bt-dongle", bus USB name "m48t59_isa", bus ISA, no-user name "m48t59", bus System name "escc", bus System name "i6300esb", bus PCI name "ne2k_pci", bus PCI name "smc91c111", bus System name "lan9118", bus System name "lsi53c895a", bus PCI, alias "lsi" name "esp", bus System name "isabus-bridge", bus System, no-user
Eine Standard-VGA-Karte wird zum Beispiel mit -device VGA emuliert. Dies entspricht der Option -vga std.
Host ~$ qemu Platte.img -device VGA
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 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 (backend) sind bestimmte Optionen anzuwenden. Jedem Device muss mit id eine Zeichenkette zugeordnet werden. Diese dient zur eindeutigen Identifizierung. Die allgemeine Syntax ist:
-chardev backend,id=id [,options]
Mit dem Device null wird ein leeres Device angelegt. Es sendet keine Daten und verwirft empfangene Daten.
Host ~$ qemu 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
Das Device stdio stellt eine Verbindung zum Standard-Input und -Output der QEMU-Instanz her. Nach dem Start der Instanz wechselt man mit der Tastenkombination [Strg]+[Alt]+[3] zum Standard-Input und -Output. Diese Option steht nicht unter Host-Systemen mit Microsoft Windows zur Verfügung.
Host ~$ qemu Platte.img -chardev stdio,id=hans
Das Device vc stellt eine Verbindung zur Text-Konsole von QEMU her. Zu dieser Textkonsole wird mit der Tastenkombination [Strg]+[Alt]+[2] umgeschaltet.
Host ~$ qemu Platte.img -snapshot -chardev vc,id=knut
Weitere Möglichkeiten der Option -chardev werden im Anhang aufgelistet.