Qemu-Monitor
Im Qemu-Monitor kann man Befehle zur Verwaltung der virtuellen Maschine eingeben. Bsp. dazu weiter unten.
Bis Qemu 0.60 ist der Qemu-Monitor die Befehlszeile, von der aus man Qemu gestartet hat.
Ab Version 0.61 ist der Monitor standardmäßig im Qemu-Fenster untergebracht:
[Strg]-[Alt]-[2]: schaltet vom Gast um auf den Qemu-Monitor
[Strg]-[Alt]-[1]: schaltet vom Qemu-Monitor zurück zum Gast
Die Tastenkombination muss also im Windows Gast eingegeben werden.
Der Befehl "info" zeigt eine Übersicht über alle Kommandos des Qemu-Monitors. Beispiele sind weiter unten zu finden, zum Beispiel zum Einbinden und Auswerfen von Datenträgern.
Über den Startparameter "qemu ... -monitor device" kann man festlegen, wo der Monitor erscheinen soll. Siehe dazu auch "man qemu". Mit "-monitor stdio" kann man z. B. bei Qemu mit Grafikfenster den Monitor auf die Konsole legen, von der aus man Qemu gestartet hat.
Weitere Tastenkombinationen:
[Strg]-[Alt]: Gibt die Maus wieder frei (Maus im Gast "gefangen", Kontrolle zurück an Host)
[Strg]-[Alt]-[F]: Umschalten Qemu Fullscreen <=> Fenster
Support für VirtIO
Ab Qemu 0.10.0 lassen sich, sofern das Paket "libvirt" installiert ist, VirtIO Interfaces nutzen.
Siehe auch http://wiki.qemu.org/download/qemu-doc.html, Kapitel "Invocation"
Bsp.: "qemu ... -drive ..."
Der Vorteil: Die Zugriffe laufen paravirtualisiert und damit schneller ab.
Natürlich braucht man dafür entsprechende Treiber, die gibt es auf der KVM Homepage: http://sourceforge.net/projects/kvm/files/ (kvm-guest-drivers-windows)
Weitere Tipps: http://www.carfax.org.uk/docs/qemu-virtio
Höhere Bildschirmauflösung
Standard:
Es wird eine Cirrus Logic 5446 GL PCI-Grafikkarte emuliert. Der benötigte Treiber ist bei allen Windows-Versionen serienmäßig.
Damit ist eine Auflösung bis zu 1024x768 bei 32 Bit bzw. 1280x1024 bei 16 Bit möglich.
Alternative 1 "Super VGA":
Alternativ ist eine VESA-Grafik möglich, dazu starten mit:
So werden auch höhere Auflösungen unterstützt wie z. B. 1280x1024/1600x1200 bei 32 Bit.
XP erkennt die Vesa-Grafik automatisch. Bei anderen Windows-Versionen wird ein spezieller VESA-Treiber benötigt. Z. B. der Scitech Display Doctor oder folgender Freeware-Treiber: http://bearwindows.boot-land.net/vbe9x.htm
Wichtig: Im Gast muss natürllich ein entsprechender Monitortyp ausgewählt sein, z. B. Super-VGA 1280x1024, sonst klappt das ganze natürlich nicht.
Alternative 2 "VMWARE Vga":
Erforderlich sind eine Vmware-Tools-Iso-Datei (z. B. bei der Workstation oder Server dabei) und eine Qemu Version >= 0.91. Qemu wird jetzt so gestartet:
Code:
qemu ... -cdrom windows.iso -vga vmware
Normalerweise wird beim Hochfahren die Grafikkarte automatisch erkannt und der Treiber vom ISO-CDROM gefunden. Falls nicht, eventuell über Systemsteuerung/Hardware das ganze manuell ausführen.
Übergangslose Maus => USB HID / Tablet (1)
Ab Qemu 0.81 kann eine HID-Maus emuliert werden (unabhängig von der tatsächlichen Maus):
Code:
qemu ... -usb -usbdevice tablet
Der Gast muss natürlich USB und auch USB-HID Geräte unterstützen (ab Win98 SE).
Der große Vorteil: Die Maus kann übergangslos zwischen Host und Gastfenster wechseln, wird also nicht mehr im Gast "gefangen". Bekannt ist das bei VMWARE über die VMWARE-Tools.
Bei einem Windows Gast ist nichts weiter einzurichten.
Für einen Linux Gast ist der "evtouch"-Treiber zu installieren:
http://stz-softwaretechnik.com/~ke/t...n/evtouch.html
Danach muss man herausfinden, welches Event-Interface man nehmen muss (Kommandozeile im Gast, root):
Code:
cat /proc/bus/input/devices
Das gewünschte Interface ist "... QEMU USB TABLET". Steht dort "event3", kann man einen Eintrag in die "xorg.conf" als Ersatz für die bisherige Maus vornehmen, bei "Option Device" die zuvor bestimmte Schnittstelle eintragen:
Code:
Section "InputDevice"
Identifier "Mouse1"
Driver "evtouch"
Option "Protocol" "usb"
Option "Device" "/dev/input/event3"
Option "DeviceName" "touchscreen"
Option "SendCoreEvents"
Option "CorePointer"
Option "MinX" "0"
Option "MinY" "0"
Option "MaxX" "32767"
Option "MaxY" "32767"
Option "ReportingMode" "Raw"
EndSection
Nach einem Neustart des X-Servers sollte die übergangslose Maus einwandfrei funktionieren.
Übergangslose Maus => VMMOUSE (2)
Ab Qemu 0.91 ist eine VMWARE kompatible Maus (VMMOUSE) integriert.
Dazu bei einem Linuxgast die "xorg.conf" editieren:
Code:
Section "ServerLayout"
Identifier "Default Layout"
Screen 0 "Screen0" 0 0
InputDevice "Keyboard0" "CoreKeyboard"
InputDevice "VMMouse" "CorePointer"
EndSection
Section "InputDevice"
Identifier "VMMouse"
Driver "vmmouse"
Option "Device" "/dev/input/mice"
Option "Emulate3Buttons" "yes"
EndSection
Bei einigen Distributionen ist der Treiber enthalten. Ansonsten gibt es eine freie Version der VMWARE Tools unter: http://open-vm-tools.sourceforge.net/
Nach einem Neustart des X-Servers sollte die übergangslose Maus einwandfrei funktionieren.
Mehr Speicher für virtuelle Maschine
Die zusätzliche Einstellung "-m 256" weist dem virtuellen PC 256 MB Arbeitsspeicher zu. 128 MB sind die Voreinstellung.
Internetzugang
Ab der Version 0.60 ist ein DHCP-Modul enthalten. Der Internetzugang des Linuxhosts wird damit ohne weitere Einrichtungen in Windows verfügbar. Einfacher geht es wirklich nicht. Einfach die Hardwareerkennung starten, es wird dann eine Netzwerkkarte vom Typ "Realtec RTL 8029 PCI" erkannt. Damit kann der laufende Internetzugang des Linuxhosts einfach mitbenutzt werden.
Weitere Einstellungen (von blub aus folgendem Thread http://www.linuxforen.de/forums/show...8&postcount=14):
Client für Microsoft-Netzwerke
Realtek RTL 8029
TCP/IP Protokoll
Dann Eigenschaften von TCP-IP klicken
IP: Adresse automatisch beziehen
Gateway: 10.0.2.2 (kein Muss, geht auch ohne)
IE 6.0: Extras -> Internetoptionen -> Verbindungen -> Netzwerk -> Automatische Suche der Einstellungen.
Qemu muss dazu mit den Parametern "-net nic -net user" gestartet werden:
Code:
qemu ... -net nic -net user
Sound (SB16)
Zunächst muss man Qemu mit dem Parameter -soundhw sb16 starten, weil Audio als Standard ausgeschaltet ist.
Emuliert wird eine Creative SB16/AWE32-Karte.
Typ: Soundblaster 16 oder AWE 32
E/A-Bereich: 0220-022F
IRQ: 5
DMA 1: 01
DMA 2: 05
Falls die automatische Hardwareerkennung nicht funktioniert, einfach mal manuelles Hinzufügen probieren.
Falls Qemu von einer Konsole aus gestartet wurde, erscheinen in der Konsole einige Warnungen "sb16-...". Einfach ignorieren, es sollte dennoch gehen.
Bei Versionen vor 0.80 heisst der Parameter zur Audioaktivierung übrigens "-enable-audio".
Sound (ES 1370)
Ab Version 0.80 emuliert Qemu zusätzlich einen ES1370 Soundchip.
Befehl: "qemu ... -soundhw es1370".
Für Windows ME/2K/XP ist der Treiber bereits auf der Installations-CD.
Treiber für Windows 9x: http://franklinschools.nls.k12.la.us...s/audiopci.zip
Die Soundkarte sollte unter Windows nach korrekter Installation als "ENSONIQ AudioPCI" auftauchen.
Sollte der Sound nach der Installation nicht direkt klappen, eventuell folgendes versuchen:
- Win98 starten, alle Einträge aus "Audio, Video und Gamecontroller" entfernen
- Neu starten mit "qemu ... -soundhw all"
- SB 16 manuell einrichten
- Neu starten, Treiber installieren
- Neu starten mit "qemu ... -soundhw es1370"
- In der Systemsteuerung die sb16-Einträge löschen
Sound (AC97 / Intel Codec)
Ab Version 0.10.0 emuliert Qemu zusätzlich einen AC97 Soundchip.
Befehl: "qemu ... -soundhw ac97".
Für Windows 2K/XP/Vista 32 ist der Treiber bereits auf der Installations-CD.
Bei Vista 64 sollte der Realtek Treiber helfen: http://www.start64.com/index.php?opt...545&Itemid=108
Sound-Alsatreiber
Ab Qemu 0.80 ist auch die Soundausgabe per Alsa möglich. Zuvor ging das nur über OSS bzw. die OSS-Emulation in Alsa:
Zunächst muss Qemu mit Alsa übersetzt werden. Dazu muss natürlich das "alsa-devel"-Paket installiert sein. Anschließend:
Code:
./configure .... --audio-drv-list=alsa
Dann wie gewohnt "make" und "make install".
Audio-Optionen
"qemu ... -soundhw sb16" (bzw . "es1370") => wählt den zu emulierenden Soundkartentyp
"qemu -soundhw ?" => Ausgabe aller Audio-Optionen
USB
Ab Qemu 0.80 gibt es einen USB-Support. Emuliert wird ein Intel SB82371 UHCI-Controller.
Zum hinzufügen von Geräten wird die Vendor-ID und die Product-ID des Gerätes gebraucht. Das bekommt man raus durch "cat /proc/bus/usb/devices". In der Ausgabe das entsprechende Gerät suchen.
Dann Qemu so starten:
Code:
qemu ... -usb -usbdevice host:VendorID:ProductID
Man kann auch zunächst nur mit "-usb" starten. Im Qemu-Monitor (Strg-Alt-2) kann man dann per "usb_add host:VendorID:ProductID" Geräte hinzufügen.
Was an externen Geräten genau geht, muss man testen. Z. B. mein Scanner "Canon LIDE 20" funktioniert tatsächlich damit. Nach wie vor ist der Kauf linuxtauglicher Hardware die bessere Lösung.
Wichtig: Es werden nur Geräte erkannt, die aktuell von Linux nicht benutzt werden. Es darf also aktuell kein Treiber geladen sein. Will man das Laden des Treibers beim EInstecken des Devices verhindern, muss die Hotplug-Blacklist bearbeitet werden (/etc/hotplug/blacklist).
Weitere USB-Kommandos im Qemu-Monitor:
- "info usbhost": zeigt am Host-USB-Controller angeschlossene Geräte
- "usb_add host:x:y": Für x den Port, für y die Gerät-Nr. eintragen, ermitteln per "info usbhost"
- "usb_del x.y": Gerät wieder freigeben, "x.y" ermitteln über "info usb"
- "info usb": zeigt alle von Qemu genutzte USB-Geräte
Datenaustausch Host<=> Gast
Seit Version 0.61 kann man per SAMBA wie bei VMWARE den Datenaustausch zwischen Host und Gast vornehmen (siehe Kapitel 8). Alternativen ohne Samba:
FAT-virtuell: Zugriff auf die virtuelle Festplatte (1)
Ab Version 0.71 gibt einen es virtuellen FAT-Treiber in Qemu. Dadurch lassen sich Verzeichnisse des Linux-Hosts als FAT-Image in Qemu einbinden. Beispiel:
Code:
qemu ... -hdb fat:/tmp
Damit steht das Host-Verzeichnis "/tmp" als Laufwerk "d:" im Windows Gast zur Verfügung. Der Zugriff ist in Qemu lesend.
Das Verzeichnis kann auch als Diskette freigegeben werden:
Code:
qemu ... -fda fat:floppy:/tmp
Für schreibenden Zugriff muss "-hdb fat:rw:/tmp" angegeben werden. In diesem Fall muss der User für das Verzeichnis und alle Dateien darin Schreibrechte haben. Das arbeitet aktuell noch nicht sehr stabil (Ab Version 0.80, Beta-Stadium).
Siehe auch: http://wiki.qemu.org/download/qemu-doc.html / Kapitel "Virtual FAT disk images"
MTOOLS: Zugriff auf die virtuelle Festplatte (2)
Über die "mtools" (Standard bei aktuellen Distributionen) kann man vom Linux-Host auf die virtuelle Festplatte zugreifen.
Folgende Zeilen müssen in die Datei "~/.mtoolsrc" eingefügt werden:
Code:
mtools_skip_check=1
drive c: file="/home/stefan/qemu/win98.img" partition=1
(Pfade entsprechend anpassen)
Danach kann z. B. mit "mdir c:" der Inhalt der virtuellen Platte angezeigt werden, mit "mcopy datei c:" kann eine Datei auf die virtuelle Platte kopiert werden.
SSH/SCP: Zugriff auf die virtuelle Festplatte (3)
Eine weitere Möglichkeit ist die Netzwerkfähigkeit. Über SSH/SCP kann man vom Gast aus Dateien zum Host kopieren und auch von dort lesen.
Hierzu kann man WinSCP verwenden (Tip von blub): http://winscp.net
Das Programm kann direkt im Gast über den IE geladen und installiert werden.
Als nächstes muss eine Windows Kommandozeile geöffnet werden, "ipconfig" eingeben. Die bei Gateway angegebene Adresse ist die Adresse zum Login. Als Username/Kennwort muss das normale Userlogin angegeben werden.
Als nächstes öffnet sich eine Norton Commander ähnliche Oberfläche, man kann dann hin- und herkopieren wie man will.
Image Mounten: Zugriff auf die virtuelle Festplatte (4)
Eine weitere Möglichkeit besteht darin, vom Host aus die virtuelle Gastfestplatte zu mounten. Hierzu gibt es das Programm "lomount". Dieses ist bei vielen Distributionen im Paket "xen-tools" enthalten.
Anwendung:
Code:
mkdir /mnt/qemu
lomount -diskimage win98.img -partition 1 /mnt/qemu
Danach hängt die virtuelle Platte wie ein normales Verzeichnis im Linux-Verzeichnisbaum unter "/mnt/qemu". Mit "umount /mnt/qemu" kann die Einbindung wieder gelöst werden. Beide Befehle brauchen übrigens Root-Rechte.
Virtuelle Festplatte als Snapshot
Durch Start mit "qemu ... -snapshot" werden Änderungen im Dateisystem des Gastes nicht direkt auf die virtuelle Platte geschrieben, sondern erst in temporäre Dateien.
Bei normaler Beendung gehen die Änderungen verloren, drückt man hingegen [Strg]-[a]-[s], werden die Änderungen auf die virtuelle Platte geschrieben. Alternativ kann man im Qemu-Monitor den Befehl "commit" eingeben.
Dieser Modus ist daher ideal zum Testen geeignet.
Verwaltung von Blockdevices (CDROM, Floppy)
Startet man Qemu über "qemu ... -cdrom /dev/sr0", muss eine CD eingelegt sein, ansonsten startet Qemu nicht. Also sollte Qemu im Normalfall ohne CD gestartet werden. Man kann das CDROM-Laufwerk jedoch nachträglich einbinden, wenn der Windows-Gast bereits läuft. Dazu gibt man im Qemu-Monitor folgendes ein:
"info block" => Überblick über eingebundene Block Devices
"change ide1-cd0 /dev/sr0" => CDROM wird eingebunden
"eject ide1-cd0" => CDROM wird wieder freigegeben
Das Device für das CD Laufwerk (hier "ide1-cd0" kann man durch "info block" herausbekommen.
Entsprechend natürlich auch die Verwaltung von Floppys etc.
Drucken
Über das virtuelle Netzwerk lassen sich Drucker des Hosts oder aus dem Netzwerk einbinden. Alternativ geht auch folgender Workaround ohne Netzwerk:
- Im Windows Gast einen Postscript fähigen Drucker einrichten:
Typ: Apple Laserwriter, Anschluss: FILE:
- Im Windows Gast drucken:
Es kommt eine Eingabe zum Dateinamen, z. B. "c:\druck.ps" eingeben.
- Druckdatei auf Linux Host ziehen über mtools (siehe oben) und drucken
mcopy c:\druck.ps
lpr druck.ps
Zeit Host / Gast weicht ab
Qemu starten mit "qemu ... -localtime", dann hat der Gast die gleiche Zeit wie der Host.
CPU-Auslastung verringern
WinDOSen verbrauchen auch CPU-Zeit, wenn inaktiv. Damit wird auch die Host CPU belastet, wenn man nichts im Gast macht. Dies betrifft also DOS/Win311, Win9x/ME.
Lösung: Installation eines CPU-Coolers wie DOS-Idle, ANMHLT, Rain.
Siehe auch: http://www.benchtest.com/cooler.html
Nach einem Neustart verbraucht der emulierte PC bei Nichtbenutzung keine CPU-Zeit mehr.
Alle NT basierenden Windows-Varianten (NT 4/2K/XP) haben das Problem nicht!
Speichern / laden der virtuellen Maschine
Seit 0.61 kann Qemu den Zustand der virtuellen Maschine speichern und beim Hochfahren einfach statt kompletten Reboot einfach ab der eingefrorenen Stelle weiterarbeiten.
Zunächst einmal Qemu inkl. Windows Gast wie gewohnt starten. Dann mit [Strg][Alt][2] zum Monitor schalten und folgenden Befehl eingeben:
Code:
savevm win.sav
quit
Der Speicherinhalt und der Prozessorzustand werden in der Datei "win.sav" gespeichert.
Zum erneuten Start folgendes eingeben:
Code:
qemu ... -loadvm win.sav
Die virtuelle Maschine läuft jetzt an der gleichen Stelle weiter wie bisher.
Soweit die Theorie, jetzt die Praxis:
Das ganze arbeitet noch nicht perfekt. Beim Hochfahren gibt es häufig einen schwarzen Mauszeiger und beim Anklicken eines Programms startet stattdessen ein Kontextmenü. Einmal umschalten in den Qemu-Monitor und zurück hilft.
Tuning des Gastbetriebssystems
Die normalen Tuningtipps ala PC-Welt helfen natürlich auch bei Qemu mit Windows als Gast. Auf dieser Seite finden sich viele Tipps:
http://www.windows-tweaks.info/
serielle Schnittstelle nutzen (1)
Ab Version 0.80 unterstützt Qemu die serielle Schnittstelle. Für den ersten Port Qemu so starten:
Code:
qemu ... -serial /dev/ttyS0
serielle Schnittstelle nutzen (2)
Qemu vor Version 0.80 unterstützt nicht direkt die serielle Schnittstelle, über den Umweg "Pseudoterminal" geht es aber doch.
Zunächst muss das Programm "slsnif" installiert werden, das die Ausgabe des Pseudoterminals von Qemu an die serielle Schnittstelle weiterleitet. Download über:
http://sourceforge.net/projects/slsnif/
Installieren:
Code:
tar zxvf slsnif*
cd slsnif*
./configure
make
make install
Nun muss Qemu mit Ausgabe auf Pseudo Terminal gestartet werden:
Code:
qemu ... --serial pty
In der Kommandozeile steht nun eine Pseudo Terminal Nr. in der Form "char device redirected to /dev/pts/5". Diese Nr. wird gebraucht für "slsnif". Im folgenden Beispiel wird Pseudo Terminal "5" mit Com 1 (ttyS0) verknüpft:
Code:
slsnif -p /dev/pts/5 /dev/ttyS0
Das ist natürlich zu kompliziert, durch das folgende Startscript kann man das ganze automatisieren:
Code:
qemu ... -serial pty > /tmp/qemu.log 2>&1 &
sleep 2
slsnif -s 115200 -p `cat /tmp/qemu.log | grep /dev/pts | cut -c 27-38` /dev/ttyS0
Der Parameter "-s" setzt die Baudrate. Das ganze jetzt noch
in ein Script packen, z. B. "qemu.sh" und damit dann Qemu starten, fertig.
Getestet habe ich das mit einem seriellen Modem, es wurde einwandfrei von der Hardwarekennung erkannt.
Quelle: Qemu User Forum. Autor unbekannt, Ursprungspost durch Serverumzug verloren.
Parallelport LPT
Ab Version 0.80 kann Qemu den Parallelport nutzen:
Code:
qemu ... -parallel /dev/parport0
APM bei Win 2K&XP
Der von Win 2K&XP normalerweise installierte APM-Treiber arbeitet nicht ganz korrekt mit Qemu zusammen. Dadurch wird Qemu beim Herunterfahren des Gastes nicht beendet, stattdessen erscheint die altbekannte Windows Meldung "Sie können das System jetzt ausschalten".
Lösen lässt sich das durch Nachinstallieren eines Treibers für die "herkömmliche NT-APM-Unterstützung":
Vorgehensweise 2K:
- Systemsteuerung
- Systemeigenschaften / Hardware / Hardware-Assistent
- Gerät hinzufügen bzw. Problem beheben
- Neues Gerät hinzufügen
- Nein, die Hardwarekomponenten selbst in der Liste auswählen
- Herkömmliche NT APM-Unterstützung
Vorgehensweise XP:
- Systemsteuerung
- Hardware / Weiter
- Ja, die Hardware wurde bereits angeschlossen
- Neue Hardware hinzufügen
- Hardware manuell aus einer Liste wählen
- Herkömmliche NT APM-Unterstützung
Bei den WinDOSen (9x, ME) arbeitet das Abschalten des virtuellen PCs hingegen korrekt.
Absturz beim Hochfahren des Gastes durch ACPI-Probleme
Falls es Probleme geben sollte, kann man versuchen, Qemu auch ohne ACPI zu starten:
Bei Windows Gästen ist dies derzeit die beste Wahl.
In der Systemsteuerung des Gastes sollte "Standard-PC" als Profil eingestellt, nicht "API-PC" (Systemsteuerung / System / Hardware / Geräte Manager / Computer).
Umstellen kann man das so:
- Auf ACPI-PC gehen (siehe oben)
- Eigenschaften / Treiber / Treiber aktualisieren / Treiber manuell aus Liste wählen / Standard PC
- Falls es Probleme gibt, ohne KVM bzw. im abgesicherten Modus starten
Lesezeichen