17.9 QEMU 

QEMU ist eine freie Alternative zu VMware Workstation und VirtualBox. Sie können damit ebenfalls ein Betriebssystem in einer »virtuellen Maschine« installieren. Genau wie VMware sorgt QEMU dafür, dass das Gastsystem glaubt, auf echter Hardware zu laufen, obwohl diese emuliert wird. Virtuelle Maschinen stellen deshalb dem Gast Pseudohardware 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://wiki.qemu.org/ zu finden.
17.9.1 Installation 

Sie müssen lediglich das Paket qemu über einen Paketmanager Ihrer Wahl installieren. Die weitere Einrichtung beschreibe ich im Abschnitt »Gastsysteme installieren«.
QEMU mit Beschleunigung kompilieren
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 ihr Entwickler Fabrice Bellard sich diese Technologie 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 kompiliert werden. Folgende Pakete müssen installiert sein:
- linux-headers-ARCH (Ersetzen Sie ARCH entsprechend Ihrer Rechnerarchitektur.)
- 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 genutzt werden soll:
./configure --cc=gcc-3.4
Danach wird QEMU mit make und sudo make install normal kompiliert. Für das Kompilieren von kqemu gehen Sie entsprechend vor, müssen aber zwingend sudo make install am Ende benutzen. Kommt es beim Kompilieren 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, indem Sie ein /* davor- und ein */ dahinterstellen.
/*Auszug aus usb-linux.c*/ /*#include <linux/compiler.h>*/
Laden des kqemu-Moduls
Wenn das Kompilieren fehlerfrei beendet wurde, können Sie nun testweise das kqemu-Modul mit sudo modprobe kqemu major=0 laden. Danach sollte in der System-Logdatei /var/log/messages eine Erfolgsmeldung auftauchen. Das System-Log 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.
Um das Modul beim nächsten Systemstart verfügbar zu machen, erweitern Sie die Datei /etc/modules um folgenden 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
17.9.2 Gastsysteme installieren 

Nach der Installation erstellen Sie in Ihrem Heimatverzeichnis ein Verzeichnis namensQEMU. Führen Sie dann in einem Terminal die folgenden Befehle aus:
user$ 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:
user$ 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
Start von CD-ROM
Das -boot d bedeutet, dass die virtuelle Maschine von CD-ROM starten soll und ist eine kuriose Reminiszenz an die Windows-Laufwerksbuchstaben. Wenn Sie es weglassen, 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
Tipp 246: Reine Prozessoremulation in QEMU
Wenn Sie einen 64-Bit-Prozessor besitzen und auch die AMD-64-Version von Ubuntu installiert haben, können Sie eigentlich keine 32-Bit-Programme starten. QEMU schafft hier Abhilfe, da es in der Lage ist, für ein bestimmtes Programm einen 32-Bit-Prozessor zu emulieren. Dazu müssen Sie die entsprechende Anwendung mit qemu-i386 <anwendung> starten. Um Wine unter einem 64-Bit-Prozessor mit QEMU zu emulieren, sollten Sie die Dokumentation auf der Website (http://wiki.qemu.org/) des QEMU-Projekts zu Rate ziehen. |
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 Betriebssysteme 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.
Tipp 247: Software von CD in QEMU 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 |
Option | 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 Image-Datei angeben. |
-boot <a> |
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 Festplatten-Image 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 <...> |
Gibt den zu verwendenden Arbeitsspeicher in MB an. |
-user-net |
Ermöglicht einen einfachen Zugriff auf das 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. |
Tastenkombinationen
Im täglichen Umgang mit QEMU haben sich einige Tastenkombinationen bewährt. Die wichtigsten stellt Ihnen die Tabelle vor.
Tasten | 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 in das Gast-Betriebssystem. |
(Strg) + (Alt) + (F) |
Wechselt zwischen Fenster- und Vollbildmodus. |
Tipp 248: Screenshots vom emulierten System machen
Die aktuellen QEMU-Versionen können von Haus aus Screenshots des Gastsystems erstellen: Dazu wechseln Sie mit (Strg) + (Alt) + (2) in die QEMU-Konsole. Der Screenshot wird mit dem Befehl screendump bildname.ppm erstellt. Sollte bei Ihnen diese Funktion aus irgendeinem Grund kein Ergebnis liefern, können Sie sich mit folgender Vorgehensweise behelfen. Der etwas längere 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. |