QEMU-Monitor QEMU KVM Howto, Manual, documentation readme
(Link zu dieser Seite als [[QEMU-KVM-Buch/ Anhang/ QEMU-Monitor]])
[bearbeiten] QEMU-Monitor
Der QEMU-Monitor unterstützt Manipulationen einer gestarteten Instanz. Mit der Tastenkombination [Strg]+[Alt]+[2] gelangt man in den QEMU-Monitor.
[bearbeiten] Standard-Befehle
(qemu) help [cmd] (qemu) ? [cmd]
Gibt eine Hilfestellung für alle Befehle beziehungsweise dem angegebenen Befehl cmd.
(qemu) commit device | all
Sichern der Änderungen auf das angegebene Device beziehungsweise auf alle Devices. Voraussetzung ist die Verwendung der Option -snapshot.
(qemu) info
Dieser Befehl informiert über den Zustand der Instanz.
(qemu) info version
- Zeigt die QEMU-Version an.
(qemu) info network
- Zeigt Informationen über VLANs und die zugehörigen Devices an.
(qemu) info chardev
- Zeigt Informationen zu den Character-Devices an.
(qemu) info block
- Zeigt Informationen zu den Block-Devices (Disketten, Festplatten, CD-/DVD-ROMs) an.
(qemu) info blockstats
- Zeigt Statistik-Informationen zu den Block-Devices an.
(qemu) info registers
- Zeigt die CPU-Register an.
(qemu) info cpus
- Zeigt Informationen zu jeder CPU an.
(qemu) info history
- Zeigt die Befehlszeilen-Historie an.
(qemu) info irq
- Zeigt, wenn vorhanden, Statistiken zu den Interrupts an.
(qemu) info pic
- Zeigt die Zustände der i8259-Chips (PIC) an.
(qemu) info pci
- Zeigt die emulierten PCI-Devices an.
(qemu) info tlb
- Zeigt das Mapping von virtuellen zu physischen Speicher an (nur i386).
(qemu) info mem
- Zeigt das aktive, virtuelle Speicher-Mapping an (nur i386).
(qemu) info hpet
- Zeigt an, ob der High Precision Event Timer (HPET) aktiviert ist oder nicht (nur i386).
(qemu) info jit
- Zeigt dynamische Compiler-Informationen an.
(qemu) info kqemu (bis QEMU 0.11.*)
- Zeigt Informationen über KQEMU an.
(qemu) info kvm
- Zeigt Informationen über die Kernel-based Virtual Machine an.
(qemu) info numa
- Zeigt Informationen über NUMA (Non-Uniform Memory Architecture) an.
(qemu) info usb
- Zeigt die am virtuellen USB-Hub des Gastes angeschlossenen USB-Devices an.
(qemu) info usbhost
- Anzeige der USB-Geräte des Host-Systems.
(qemu) info profile
- Zeigt Informationen zum internen Profiler an.
(qemu) info capture
- Zeigt Informationen über aktive Sound-Mitschnitte (siehe wavcapture) an.
(qemu) info snapshots
- Zeigt eine Liste der VM-Snapshots an.
(qemu) info status
- Zeigt den Zustand der Instanz an (laufend, pausierend, Single Step Mode).
(qemu) info pcmcia
- Zeigt den Zustand der PCMCIA-Erweiterungen (Personal Computer Memory Card International Association) im Gast-System an.
(qemu) info mice
- Zeigt die aktive Maus des Gast-Systems an.
(qemu) info vnc
- Zeigt den Zustand des VNC-Servers an.
(qemu) info name
- Zeigt den Namen der Instanz an.
(qemu) info uuid
- Zeigt den UUID (Universally Unique Identifier) der Instanz an.
(qemu) info cpustats
- Zeigt Statistik-Informationen zu den CPUs an.
(qemu) info usernet
- Zeigt den Status des User-Network-Stack-Verbindungen an (siehe -net user,hostfwd=rule).
(qemu) info slirp (bis QEMU 0.10.6)
- Zeigt, wenn vorhanden, SLIRP-Statistiken an.
(qemu) info migrate
- Zeigt den Status der Migration an.
(qemu) info balloon
- Zeigt Informationen zum Ballooning an.
(qemu) info qtree
- Zeigt den Device-Tree an.
(qemu) info qdm
- Zeigt die Liste der QDEV-Device-Models.
(qemu) info roms
- Zeigt Informationen über die verwendeten ROM-Dateien (zum Beispiel vgabios-cirrus.bin","pxe-e1000.bin", "bios.bin) an.
(qemu) q (qemu) quit
Beendet die Instanz.
(qemu) eject [-f] device
Wirft ein Wechselmedium (CD/DVD, Floppy) aus. Die Option -f forciert den Auswurf.
(qemu) change device setting
Ändert die Konfiguration eines Devices.
(qemu) change device filename [format]
- Tauscht ein Wechselmedium (CD/DVD, Diskette) aus.
(qemu) change vnc display,options
- Ändert die Konfiguration des VNC-Servers. Die Syntax für display und options entsprechen denen der QEMU-Startoption -vnc.
(qemu) change vnc password
- Ändert das Passwort des VNC-Servers. Das Passwort ist signifikant bis zu 8 Zeichen.
(qemu) screendump filename
Sichert ein Bildschirmfoto als Grafikdatei im PPM-Format.
(qemu) logfile filename
Die Ausgaben werden in die Datei filename geschrieben.
(qemu) log item1[,...]
Schreibt Log-Daten in die Log-Datei /tmp/qemu.log.
(qemu) savevm tag | id
Erzeugt einen VM-Snapshot der gesamten virtuellen Maschine. Voraussetzung ist zumindest ein Image im qcow2-Format. Dieser VM-Snapshot wird mit einem Namen (tag) oder einer aufsteigenden Nummer (id) für jeden VM-Snapshot bezeichnet. Gibt es bereits einen VM-Snapshot mit dem gleichen tag oder mit der gleichen id, wird dieser überschrieben. Informationen zu den vorhandenen VM-Snapshots gibt im QEMU-Monitor der Befehl info snapshots. Bei Verwendung der Option -snapshot können zwar VM-Snapshots angelegt werden, diese gehen aber nach dem Beenden der virtuellen Maschine verloren.
(qemu) loadvm tag | id
Versetzt die gesamte virtuelle Maschine in den Zustand des zuvor gespeicherten VM-Snapshots. Dies entspricht der Startoption -loadvm.
(qemu) delvm tag | id
Löscht einen VM-Snapshot.
(qemu) singlestep [on|off]
Schaltet den Singlestep-Mode an oder aus.
(qemu) stop
Lässt die Instanz pausieren (siehe auch -S).
(qemu) c (qemu) cont
Lässt die durch stop pausierende Instanz weiterlaufen.
(qemu) gdbserver [device]
Startet den GDB-Server auf dem angegebenen Device (Default = tcp::1234). Gestoppt wird der GDB-Server mit gdbserver none.
(qemu) x/fmt addr
Erzeugt einen Dump des virtuellen Speichers ab Adresse addr.
(qemu) xp /fmt addr
Erzeugt einen Dump des physikalischen Speichers ab Adresse addr. Der Parameter fmt definiert, wie die Daten formatiert werden sollen. Die Syntax ist /{count}{format}{size}
count
- Definiert die Anzahl der Einträge, die zu dumpen sind.
format
- Das Format wird wie folgt definiert:
x (hexadezimal)
d (dezimal mit Vorzeichen)
u (dezimal ohne Vorzeichen)
o (oktal)
c (Zeichen)
i (Assemblerbefehl).
size
- Die Größe wird wie folgt definiert:
b (8 Bit)
h (16 Bit)
w (32 Bit)
g (64 Bit).
- Bei der x86-CPU kann h oder w mit dem i-Format definiert werden, um die Größe des Assemblerbefehls (16 oder 32 Bit) festzulegen. Das folgende Beispiel erzeugt einen Dump und stellt das Ergebnis in Form von Assemblerbefehlen von zehn Anweisungen ab der aktuellen Ausführungsposition (der Adresse im EIP-Register) dar:
(qemu) x/10i $eip
- Das folgende Beispiel erzeugt einen Hexdump von 80 16-Bit-Werten ab dem Anfang des Videospeichers (im Textmodus):
(qemu) xp/80hx 0xb8000
(qemu) p/fmt expr (qemu) print/fmt expr
Gibt den Wert des Ausdrucks expr aus. Dabei wird fmt zur Formatierung des Ergebnisses verwendet.
(qemu) i /fmt addr
Liest einen I/O-Port aus.
(qemu) o /fmt addr value
Gibt den Wert value auf einen I/O-Port aus.
(qemu) sendkey keys [hold_ms]
Der Befehl sendkey sendet die Tasten-Codes keys. Dadurch können auch Tastenkombinationen gesendet werden, die vom Host-System abgefangen werden. Mehrere Tasten-Codes für Tastenkombinationen werden mit dem Minuszeichen verbunden. Beispiel: sendkey ctrl-alt-f1 Die Tasten-Codes der Buchstabentasten werden mit den entsprechenden Kleinbuchstaben dargestellt. Die Tasten-Codes der Zahlentasten werden mit den entsprechenden Zahlen codiert. Weitere Tasten-Codes sind: shift, shift_r (rechte Shift-Taste), alt, alt_r, ctrl, ctrl_r, menu (Windows-Taste), esc, minus (Bindestrich), equal (Gleichheitszeichen), backspace, tab, ret (Return), spc (Leertaste) und caps_lock. Die Funktionstasten ergeben sich durch die Tasten-Codes f1 bis f12. Die Tasten-Codes der Zehnertastatur sind num_lock, scroll_lock, kp_divide (geteilt durch), kp_multiply, kp_substract, kp_add, kp_enter, kp_decimal. Die Zahlen auf der Zehner-Tastatur werden wie folgt codiert: kp_0, kp_1, kp_2, kp_3, kp_4, kp_5, kp_6, kp_7, kp_8 und kp_9. Die Kursortasten und die Tasten darüber werden mit folgenden Tasten-Codes dargestellt: print, home, pgup, pgdn, end, left, up, down, right, insert und delete. Die Länge des Tastendrucks wird mit hold_ms vorgegeben (Default 100 ms).
(qemu) system_reset
Bewirkt ein System-Reset.
(qemu) system_powerdown
Sendet ein System-Power-Down-Event.
(qemu) sum addr size
Berechnet die Check-Summe eines Speicherbereichs.
(qemu) usb_add device
Fügt ein USB-Device hinzu. Beispiele: usb_add host:bus.addr und usb_add host:vendor_id:product_id
(qemu) usb_del device
Entfernt das USB-Device device vom virtuellen USB-Hub. device hat die Syntax bus.addr. Der QEMU-Monitor-Befehl info usb zeigt die USB-Devices an.
(qemu) device_add driver[,prop=value][,...]
Fügt ein Device hinzu. Die Optionen entsprechen denen der Option -device.
(qemu) device_del device
Entfernt ein Device.
(qemu) mouse_move dx dy [dz]
Verschiebt den Maus-Kursor des Gast-Systems um die angegebenen Koordinaten dx und dy. Optional wird die Scroll-Achse mit dz gedreht.
(qemu) mouse_button val
Ändert den Zustand einer Maus-Taste (1 = links, 2 = Mitte, 4 = rechts) im Gast-System.
(qemu) mouse_set index
Ändert das aktive Maus-Device auf die angegebene Nummer index. Informationen über verfügbare Maus-Devices und ihre Indexnummern gibt der Befehl info mice.
(qemu) wavcapture file [frequency [bits [channels]]]
Nimmt die Sound-Ausgabe des Gast-Systems auf und speichert sie in die angegebene Datei. Weitere Angaben definieren die Frequenz der Sample-Rate, die Sample-Bits und die Anzahl der Kanäle (Channels). Die Defaultwerte sind Sample-Rate = 44100 Hz (CD-Qualität), Bits = 16 und Anzahl der Channels = 2 (Stereo).
(qemu) stopcapture index
Beendet die Aufnahme des vorgegebenen Index. Der Index kann mit info capture ermittelt werden.
(qemu) memsave addr size file
Speichert einen Dump des virtuellen Arbeitsspeichers mit einer Größe von size ab Adresse addr in die Datei file.
(qemu) pmemsave addr size file
Speichert einen Dump des physikalischen Arbeitsspeichers mit einer Größe von size ab Adresse addr in die Datei file.
(qemu) boot_set bootdevicelist
Legt eine neue Bootreihenfolge fest und überschreibt damit die Werte von -boot. Die Werte entsprechen den Parametern von -boot, können sich aber nach Maschinentyp unterscheiden.
(qemu) nmi cpu
Injiziert einen Non-Maskable Interrupt (NMI) zu der angegebenen CPU.
(qemu) migrate [-d] [-b] [-i] uri
Bewirkt eine Migration zu uri. Die virtuelle Maschine wird dabei von einem Host-System auf ein anderes Host-System übertragen. Bei Angabe von -d wird nicht auf die Vollständigkeit der Migration gewartet. Die Option -b aktiviert das Kopieren der virtuellen Festplatten zu dem Ziel-Host. Dies ist sinnvoll, wenn das Image nicht auf einen gemeinsamen Storage (Shared Storage) liegt. Mit der Option -i erfolgt nur ein Kopieren der Overlay-Dateien. Dies ist sinnvoll, wenn gleiche Basis-Images auf Quell- und Ziel-Host zur Verfügung stehen.
(qemu) migrate_cancel
Bricht die aktuelle Migration ab.
(qemu) migrate_set_speed value
Begrenzt die maximale Geschwindigkeit der Migration in Byte.
(qemu) migrate_set_downtime second
Definiert die maximal zu tolerierende Downtime bei der Migration in Sekunden.
(qemu) drive_add [[<domain>:]<bus>:]<slot> \
[file=file][,if=type][,bus=n] \
[,unit=m][,media=d][index=i] \
[,cyls=c,heads=h,secs=s[,trans=t]] \
[snapshot=on|off][,cache=on|off]
Fügt ein virtuelles PCI-Laufwerk dem PCI-Storage-Controller hinzu (siehe Option -drive).
(qemu) pci_add auto|[[<domain>:]<bus>:]<slot> nic|storage|host \
[[vlan=n][,macaddr=addr][,model=type]] \
[file=file][,if=type][,bus=nr] ... \
[host=02:00.0[,name=string][,dma=none]
Der Befehl pci_add ermöglicht das Hinzufügen von Hotplug-Geräten im gestarteten Gast-System (Linux). Dazu müssen im Gast-System die Kernel-Module acpiphp und pci_hotplug geladen sein. Beispiele:
(qemu) pci_add 0 nic model=e1000
- Fügt eine virtuelle Netzwerkkarte hinzu.
(qemu) pci_add 0 storage file=Platte.img,if=scsi
- Fügt eine virtuelle Festplatte hinzu.
(qemu) pci_del [[<domain>:]<bus>:]<slot>
Entfernt das angegebene PCI-Device im laufenden Betrieb.
(qemu) host_net_add tap|user|socket|vde|dump [options]
Fügt einen VLAN-Client hinzu (siehe Option -net user).
(qemu) host_net_remove vlan_id name
Entfernt einen VLAN-Client.
(qemu) host_net_redir (wird ersetzt durch hostfwd_add)
Leitet TCP- oder UDP-Verbindungen vom Host- zum Gast-System um. Dazu wird die Option -net user benötigt.
(qemu) hostfwd_add [vlan_id name] \ [tcp|udp]:[hostaddr]:hostport-[guestaddr]:guestport
Leitet eine TCP- oder UDP-Verbindung vom Host- zum Gast-System weiter. Voraussetzung dazu ist die Option -net user. Zusätzlich zu den Parametern von -net user,hostfw kann die VLAN-ID angegeben werden. Dies ist bei mehreren virtuellen Netzwerkkarten notwendig (siehe -net nic,vlan=n).
(qemu) hostfwd_remove [vlan_id name] [tcp|udp]:[hostaddr]:hostport
Entfernt ein Port-Redirect (siehe -net user,hostfwd=rule).
(qemu) balloon value
Fordert die virtuelle Maschine auf deren Speicher-Zuordnung zu ändern (in MByte).
(qemu) set_link name [on|off]
Verbindet das virtuelle Netzwerkkabel mit dem Netzwerk-Adapter name.
(qemu) watchdog_action [reset|shutdown|poweroff|pause|debug|none]
Ändert die Watchdog-Aktion (siehe Option -watchdog-action).
(qemu) acl_show aclname
Wurde QEMU/KVM mit der Unterstützung für SASL und ACL kompiliert, listet dieser Befehl alle passenden Regeln der Zugriffssteuerungsliste (Access Control List) und der Default-Policy auf. Es gibt zwei benannte Zugriffssteuerungslisten: Während vnc.x509dname auf den Distinguished Name testet, überprüft vnc.username auf den SASL-Benutzernamen (siehe -vnc).
(qemu) acl_policy aclname allow|deny
Wurde QEMU/KVM mit der Unterstützung für SASL und ACL kompiliert, setzt dieser Befehl die Default-Policy der Zugriffssteuerungsliste. Diese Default-Policy greift, wenn keine der definierten Regeln greifen. Die Default-Policy ist beim Start immer auf deny gesetzt.
(qemu) acl_add aclname match allow|deny [index]
Wurde QEMU/KVM mit der Unterstützung für SASL und ACL kompiliert, fügt dieser Befehl eine Übereinstimmungsregel zur Zugriffssteuerungsliste hinzu. Diese erlaubt oder verbietet den Zugriff. Dazu muss entweder der Benutzername oder der x509 Distinguished Name übereinstimmen. Optional sind auch Wildcards möglich. Zum Beispiel erlaubt *@EXAMPLE.COM allen Benutzern des Kerberos Realm EXAMPLE.COM den Zugriff. Normalerweise wird die Regel an das Ende der Zugriffssteuerungsliste angehangen. Mit dem Parameter index kann die Regel an einer bestimmten Stelle eingefügt werden.
(qemu) acl_remove aclname match
Wurde QEMU/KVM mit der Unterstützung für SASL und ACL kompiliert, entfernt dieser Befehl eine Regel aus der Access-Control-List.
(qemu) acl_reset aclname
Wurde QEMU/KVM mit der Unterstützung für SASL und ACL kompiliert, entfernt dieser Befehl alle Übereinstimmungsregeln aus der Zugriffssteuerungsliste und setzt die Default-Policy wieder auf deny zurück.
(qemu) mce cpu bank status mcgstatus addr misc
Injiziert eine Machine Check Exception (MCE). Dies ist nur bei x86-CPUs möglich. Eine Machine Check Exception ist ein Report von neueren CPU(s) von Intel und AMD bei Hardware-Problemen.
cpu
- Die MCE wird für die angegebene CPU injiziert. Wird nur eine CPU emuliert, ist hier 0 anzugeben. Bei mehreren CPUs (siehe Option -smp) beginnt die Zählung mit 0.
bank
- Jeder CPU sind vier oder fünf Bänke zugeordnet. Eine Bank ist eine Gruppe von Fehler-Registern. Diese Fehler-Register können jeweils aktiviert oder deaktiviert sein. Normalerweise sind alle Fehler-Register aller Bänke aktiviert. Die Anzahl und Inhalte der Bänke sind abhängig von der CPU. Jede Bank hat vier Register. Bei einer AMD-CPU haben die Bänke folgende Bedeutung:
Bank 0: Date Cache,
Bank 1: Instruction Cache,
Bank 2: Bus Unit,
Bank 3: Load Store Unit,
Bank 4: Northbridge und DRAM.
status
- Das Bank-Status-Register ist 64-Bit lang.
mcgstatus
- Das globale Status-Register enthält Informationen ob ein MCE gemeldet wurde.
Bit 0: RIPV – Restart IP valid flag,
Bit 1: EIPV – Error IP valid flag,
Bit 2: MCIP – Machine check in progress,
Bit 3 bis 63: Reserviert.
addr
- Hiermit wird die Speicheraddresse der Exception definiert.
misc
- Diese Option dient zur zusätzlichen Beschreibung der MCE.
(qemu) getfd fdname
Empfängt einen File-Descriptor via SCM_RIGHTS für Unix-Sockets und weist ihm einen Namen zu. Befehle des QEMU-Monitors verwenden diesen Namen. Ein solcher File-Descriptor ist für das Hinzufügen und Entfernen von Netzwerkkarten während des laufenden Gast-System (hotplug) notwendig.
(qemu) closefd fdname
Schließt einen via SCM_RIGHTS empfangenen File-Descriptor.
(qemu) block_passwd device password
Setzt das Password für das verschlüsselte Device device.
(qemu) cpu index
Setzt die Default-CPU.
(qemu) cpu_set cpu [online|offline]
Ändert den Status der angegebenen CPU.
Der QEMU-Monitor versteht Integer-Ausdrücke für jedes Integer-Argument. Register-Namen mit vorangestelltem $ (Dollar-Zeichen) enthalten die Werte von CPU-Registern.
[bearbeiten] Spice-Befehle
Website: http://www.spice-space.org
Spice ist eine Software und ein Protokoll zur Unterstützung von Zugriffen auf Remote-Maschinen. Entwickelt wird Spice von der Firma Red Hat, Inc. als Open Source. Es gibt eine Implementierung für QEMU/KVM.
(qemu) info spice.state
Informiert über den aktuellen Spice-Status. Dazu gehören die Adressen von verbundenen Clients, Tickening, Bild-Kompression, Video-Streaming und Playback-Kompression.
(qemu) info spice.ticket
Der Befehl info spice.ticket informiert über mögliche Ablaufzeiten der Tickets (siehe spice.set_ticket).
(qemu) info spice.stat
Zeigt Spice-Statistiken an.
(qemu) info spice.rtt_client
Zeigt Statistiken (Minimum, Maximum und Durchschnitt) der Client-Antwortzeiten (Round Trip Time) an (siehe Befehl spice.ping_client).
(qemu) spice.set_image_compression on|auto_glz|auto_lz|quic|glz|lz|off
Mit dem Befehl spice.set_image_compression wird die Bild-Kompression (Image Compression) konfiguriert. Die Optionen entsprechen denen von -spice ic.
(qemu) spice.set_streaming_video on|off
Der Befehl spice.set_streaming_video (de-)aktiviert die Erkennung von Video-Streams und die damit verbundene verlustbehaftete Kompression (siehe Option -spice sv).
(qemu) spice.set_playback_compression on|off
(De-)Aktiviert die Playback-Kompression (siehe Option -spice playback-compression).
(qemu) spice.set_ticket password \ [expiration=seconds[,connected=keep|disconnect|fail]]
Der Befehl spice.set_ticket setzt das Ticket (Einmal-Passwort). Ein leeres Passwort verhindert jede Verbindung. Optional kann mit expiration die Ablaufzeit des Passwortes definiert werden. Bei einem Wert von 0 ist die Ablaufzeit unendlich. Weiterhin lässt sich das Verhalten bei aufgebauter Verbindung beeinflussen. Mit connected=keep wird die Verbindung nach Ablauf des Passwortes gehalten. Mit connected=disconnect wird die Verbindung beendet. Der Befehl info spice.ticket informiert über die aktuellen Ablaufzeiten.
(qemu) spice.set_ticket64
Der Befehl spice.set_ticket64 entspricht dem Befehl spice.set_ticket. Allerdings wird base64 für das ASCII-Passwort verwendet.
(qemu) spice.disable_ticketing
Mit diesem Befehl wird eine Client-Verbindung ohne Passwort ermöglicht (siehe -spice disable-ticketing).
(qemu) spice.set_agent_mouse on|off
Der Befehl spice.set_agent_mouse definiert, ob der Spice-Agent des Maus-Modus vom Client verwendet werden soll (siehe Option -spice agent-mouse).
(qemu) spice.reset_stat
Setzt die Spice-Statistiken zurück.
(qemu) spice.ping_client [on [interval]|off]
Zur Überprüfung der Antwortzeiten des Clients dient der Befehl spice.ping_client. Ist nur ein Ping erwünscht, sind keine Optionen notwendig. Soll der Ping wiederholt werden, sind die Option on und das Intervall (Default= 1 Sekunde) anzugeben. Beendet wird der Ping mit off. Die entsprechenden Statistiken zeigt der Befehl info spice.rtt_client.