21.6 QEMU
QEMU ist eine freie Alternative zu VMWare Workstation. Es gilt das in Abschnitt 21.2 gesagte: Man kann damit ein Betriebssystem in einer »virtuellen Maschine« installieren. Genau wie VMware sorgt QEMU dafür, dass das Gast-System glaubt, auf echter Hardware zu laufen, obwohl diese emuliert wird. Virtuelle Maschinen stellen deshalb dem Gast Pseudo-Hardware bereit und managen die Kommunikation zwischen der »echten« Hardware im System und der Hardware, die dem Gastsystem vorgegaukelt wird.
QEMU finden Sie wie den VMware Player in den Ubuntu Paketquellen, die zugehörige Dokumentation ist unter {http://fabrice.bellard.free.fr/ qemu/qemu-doc.html zu finden.
21.6.1 Installation
QEMU ohne Beschleunigung installieren
Die Version ohne Beschleunigung läuft deutlich langsamer, dafür ist die Installation sehr viel einfacher. Sie müssen lediglich das Paket qemu über einen Paketmanager Ihrer Wahl installieren. Die weitere Einrichtung beschreibe ich im Abschnitt 21.6.2.
QEMU mit Beschleunigung compilieren
Anwendungen auf emulierter Hardware laufen immer langsamer als im unemulierten Betrieb. Um QEMU einen Turbo zu spendieren, gibt es den »QEMU Accelerator«, auch »kqemu« genannt. Diese Erweiterung ist keine quelloffene Software, da Fabrice Bellard sich diese Techologie wohl als Rentenversicherung zurückbehält. Trotzdem darf das Modul kostenlos genutzt werden. Es bringt eine Beschleunigung etwa um den Faktor 5. Zur Nutzung des Moduls muss QEMU aus dem Quellcode compiliert werden. Allerdings funktionieren Windows 95 und Windows 98 nicht mit kqemu. Folgende Pakete müssen installiert sein:
- linux-headers-ARCH (ARCH entsprechend Ihrer Rechnerarchitektur ersetzen)
- zlib1g-dev
- texi2html
- libsdl1.2-dev
Die jeweils aktuelle Version des QEMU-Quellcodes finden Sie auf http:// fabrice.bellard.free.fr/qemu/download.html. Auch das kqemu-Paket müssen Sie von dort herunterladen. Außerdem müssen Sie die alte Version gcc-3.4 des GCC installieren. Damit dieser auch verwendet wird, müssen Sie dem Compiler noch mitteilen, dass die ältere Version verwendet werden soll:
./configure --cc=gcc-3.4
Danach wird QEMU mit make und {sudo make install} normal compiliert. Sie können auch eine der in Kapitel 18.1 beschriebenen Methoden für die reversible Installation verwenden. Für das Compilieren von kqemu gehen Sie entsprechend vor, müssen aber zwingend sudo make install am Ende benutzen.
Kommt es beim Compilieren von QEMU zu einer Fehlermeldung wie
/home/marcus/Software/qemu-0.8.2/usb-linux.c:29:28: linux/compiler.h: No such file or directory make[1]: *** [usb-linux.o] Fehler 1
müssen Sie in der Datei usb-linux.c den Eintrag
#include <linux/compiler.h>
auskommentieren, in dem Sie ein /* davor und ein */ dahinter stellen.
/*Auszug aus usb-linux.c*/ /*#include <linux/compiler.h>*/
Laden des kqemu-Moduls
Wenn das Compilieren fehlerfrei beendet wurde, können Sie nun testweise das kqemu-Modul laden mit sudo modprobe kqemu major=0. Danach sollte in der Systemlogdatei /var/log/messages eine Erfolgsmeldung auftauchen. Den Systemlog können Sie sich im Terminal anzeigen lassen:
user:~$ tail -f /var/log/messages Nov 15 09:38:17 localhost kernel: KQEMU installed, max_instances=4 max_locked_mem=129560kB.
Unter Edgy können Sie das Modul folgendermaßen beim nächsten Systemstart verfügbar machen: Zunächst erweitern Sie Datei /etc/modules um den Eintrag
kqemu major=0
Anschließend ergänzen Sie die Datei /etc/rcS.d/S55bootmisc.sh vor dem Eintrag : exit 0 um
chmod 666 /dev/kqemu
Unter Dapper Drake müssen Sie anders vorgehen, da die oben genannte Variante Dapper zum Absturz bringt.
Unter Dapper führen Sie die Konfiguration per udev durch. Erstellen Sie als erstes die Datei kqemu.rules im Verzeichnis /etc/udev und fügen die Zeile
KERNEL="kqemu*", NAME="\%k", MODE="0666"
ein.
Danach erzeugen Sie im Verzeichnis /etc/udev/rules.d folgenden Link
sudo ln -s ../kqemu.rules z49_kqemu.rules
21.6.2 Gastsysteme installieren
Nach der Installation erstellen Sie in Ihrem Home-Verzeichnis ein Verzeichnis namens »qemu«, führen Sie dann in einem Terminal die folgenden Befehle aus:
cd qemu qemu-img create hd.img 10GB
Damit haben Sie eine 10 GB-große virtuelle Festplatte erstellt. Auch die Angabe der Größe in MB ist möglich:
cd qemu qemu-img create hd.img 1000M
Im nächsten Schritt müssen Sie die virtuelle Maschine von der Installations-CD booten. In diesem Beispiel verwenden wir das CD-ROM Laufwerk als Laufwerk unseres virtuellen PCs:
qemu -boot d -cdrom /dev/cdrom -hda hd.img
Das -boot d bedeutet, dass die virtuelle Maschine von CD-ROM starten soll und ist eine kuriose Remineszenz an die Windows-Laufwerksbuchstaben. Wenn man es weglässt, bootet das System von der Festplatte.
Um ein ISO-Image anstelle einer Installations-CD zu verwenden, tippen Sie
qemu -hda hd.img -cdrom DATEINAME.iso -boot d
Windows 98 anhand der Bootdiskette installieren
Wenn Sie keine bootfähige Windows 98-CD zur Hand hat, dann können Sie Qemu natürlich auch von einer Diskette booten.
Legen Sie die Bootdiskette ein und geben Sie in der Konsole folgendes ein:
qemu -fda /dev/fd0 -hda win98.img -boot a
Zunächst muss die virtuelle Festplatte partitioniert und formatiert werden. Dazu starten Sie nach dem Booten der Diskette das DOS-Programm fdisk in QEMU mit dem Befehl
fdisk
Nach dem Partionieren schließen Sie QEMU am besten und booten es mit mit dem eben genannten Befehl erneut. Nach dem Neustart formatieren Sie die virtuelle Platte mit dem DOS-Befehl
format c:
Keine Angst, der richtigen Festplatte passiert nichts – nur die virtuelle Platte wird formatiert. Danach QEMU nochmal beenden. Nun legen Sie die Windows 98-CD ein und starten QEMU erneut, diesmal mit dem Befehl
qemu -fda /dev/fd0 -hda win98.img -cdrom /dev/cdrom -boot a
Das Setup sollten Sie nach dem Booten jetzt mit dem Befehl
setup.exe
starten können. Alles Weitere läuft ganz normal, wie bei jeder gewöhnlichen Windows 98-Installation.
Nein, nicht ganz: Während der Installation führt Windows 98 einen Neustart durch. An dieser Stelle müssen Sie QEMU beenden und wie folgt weitermachen:
qemu -hda win98.img -cdrom /dev/cdrom -boot c
Nach beendeter Installation können Sie Windows 98 einfach mit
qemu -hda win98.img
starten.
Windows 2000 installieren
Um Windows 2000 unter QEMU zu installieren, müssen Sie dieses mit der zusätzlichen Option -win2k-hack gestartet werden, um zu verhindern, dass die Festplatte im Verlauf der Installation fälschlicherweise als voll erkannt wird.
Größeren Arbeitsspeicher für Gastsysteme erlauben
QEMU wird standardmäßig mit einer Arbeitsspeicherzuteilung von 128 MB für das Gastsystem gestartet. Da dies zugegebenermaßen für moderne Windowsversionen ein wenig knapp ist, können Sie einen größeren Arbeitsspeicher beim Start von QEMU zuteilen. Dazu ist allerdings eine kleine Vorbereitung notwendig. Zuerst binden Sie das temporäre Dateisystem durch einen Eintrag in die etc/fstab dauerhaft ein
# /dev/shm vergrössern für Qemu # none /dev/shm tmpfs defaults,size=528M
Der Eintrag size=528M ist bewusst größer als 512 MB gewählt, da das temporäre Dateisystem stets ein wenig größer als der tatsächlich benötigte Arbeitsspeicher des Gastsystems sein sollte.
Mit dem Befehl
sudo mount -o remount /dev/shm
binden Sie das temporäre Dateisystem mit sofortiger Wirkung ein. Um dem Gastsystem 512 MB Arbeitsspeicher zuzuteilen, geben Sie die Option
-m 512
an.
21.6.3 Start des Gastsystems
ption | Erklärung |
-hda <Datei> | Gibt das Image der primären Festplatte an. Weitere Festplatten können Sie mit -hdb, -hdc und -hdd angeben. |
-fda <Datei> | Gibt Diskettenlaufwerke an. Sie können das reale Diskettenlaufwerk verwenden, wenn Sie /dev/fd0 als Dateiname angeben. |
-cdrom <Datei> | Gibt das zu verwendende CD-Laufwerk an. Sie können ein Gerät wie /dev/cdrom oder eine Imagedatei angeben. |
-boot <Laufwerksbuchstabe> | Gibt an, von welchem Laufwerk gestartet werden soll. Dabei steht a für Diskette, c für Festplatte und d für CD-ROM. |
-snapshot | Bewirkt, dass Änderungen nicht in das Festplattenimage geschrieben, sondern in einer temporären Datei gespeichert werden. Erst mit (Strg) + (Alt) + (S) oder dem Kommando commit in der QEMU-Konsole werden die Änderungen übernommen. |
- m <Speichergröße> | Gibt den zu verwendenden Arbeisspeicher in MB an. |
-user-net | Ermöglicht einfachen Zugriff aufs Netzwerk. Das Gastsystem muss zur Verwendung von DHCP konfiguriert werden. |
-smb <Freigabe> | Ermöglicht den Zugriff auf Verzeichnisse und Drucker des Hosts. Dazu muss Samba auf dem Host installiert und eingerichtet sein. |
-no-kqemu | Startet QEMU ohne Beschleunigung. Dies kann zur Fehlerbehebung nützlich sein. |
21.6.4 Tastenkombinationen
asten | Erklärung |
(Strg) + (Alt) | Befreit die Maus aus dem QEMU-Fenster. |
(Strg) + (Alt) + (2) | Wechselt vom Gastsystem in die QEMU-Konsole. |
(Strg) + (Alt) + (1) | Wechselt von der QEMU-Konsole ins Gast-Betriebssystem. |
(Strg) + (Alt) + (F) | Wechselt zwischen Fenster- und Vollbildmodus. |
21.6.5 Tipps und Tricks
Software von CD installieren
Wenn Sie in Ihrem Gastsystem Software von CD installieren wollen, müssen Sie beim Start von QEMU daran denken, den Parameter für das CD-Rom-Laufwerk anzugeben:
qemu -hda hd.img -cdrom /dev/cdrom
Screenshots vom emulierten System machen
Die aktuellen QEMU-Versionen können Screenshots des Gastsystems von Haus aus erstellen: Dazu wechseln Sie mit (Alt) + (Strg) + (2) in die QEMU-Console. Der Screenshot wird mit dem Befehl
screendump bildname.ppm
erstellt.
Sollte bei Ihnen diese Funktion aus irgendeinem Grund nicht funktionieren, können Sie sich mit folgender Vorgehensweise behelfen. Der etwas längliche Befehl
xwd -silent -nobdrs -id "$(xwininfo -name QEMU | grep 'Window id:' | cut -d ' ' -f4)" > DATEINAME.png
erzeugt einen Screenshot namens DATEINAME.png. Um diesen Befehl abzukürzen, erstellen Sie die Datei /usr/local/bin/qemu-screenshot mit folgendem Inhalt:
#!/bin/sh xwd -silent -nobdrs -id "$(xwininfo -name QEMU | grep 'Window id:' | cut -d ' ' -f4)" > $1
Nach dem Speichern müssen Sie die Datei ausführbar machen, dies geht am einfachsten im Terminal mit
chmod +x /usr/local/bin/qemu-screenshot
Jetzt können Sie einen Screenshot mit dem Befehl
qemu-screenshot DATEINAME.png
erstellen.
Reine Prozessoremulation
Wenn Sie einen 64Bit-Prozessor besitzen und auch die AMD-64-Version von Ubuntu installiert haben, können Sie eigentlch keine 32Bit-Programme starten. QEMU schafft hier Abhilfe, da es in der Lage ist, für ein bestimmtes Programm einen 32Bit-Prozessor zu emulieren. Dazu müssen Sie die entsprechende Anwendung mit
qemu-i386 <anwendung>
starten. Um wine unter einem 64Bit-Prozessor mit QEMU zu emulieren, sollten Sie die Dokumentation auf der Homepage (http://fabrice.bellard. free.fr/qemu/qemu-doc.html) des QEMU-Projekts zu Rate ziehen.