|
QEMU ist ein sehr schneller CPU Emulator. Entwickelt wurde er von Fabrice Bellard. QEMU kann ein vollständiges System emulieren (z.B. einen PC) oder unter Linux so genannte User Mode Prozesse emulieren, d.h. einzelnen Prozesse, die für ein anderes Zielsystem kompiliert wurden.
Als Zielsysteme werden x86, PowerPC, ARM, Sparc und MIPS Prozessoren unterstützt. Am ausgereiftesten ist die Unterstützung für x86 Prozessoren.
Dieser Artikel befasst sich ausschliesslich mit der Emulation eines Debian Linux 3.1 Sarge x86 PCs als Gastsystems unter Windows XP als Hostsystem.
|
|
Zum Zeitpunkt des Verfassens dieses Artikels war die QEMU-Version 0.8.0. aktuell. Ein fertig kompiliertes Package für Windows finden Sie hier. Das Zip-File einfach auspacken und los gehts. (Im folgenden wird angenommen, daß das Package unter c:\qemu abgelegt wurde.)
Als erster Test kann eine Mini-Linux Installation vom mitgelieferten Image (linux.img) gestartet werden. Dazu einfach eine Kommandozeilenkonsole öffnen und ins Qemu Verzeichnis wechseln.
qemu -L . linux.img eingeben, und in einem separaten Fenster sollte das Mini-Linux starten. Damit ist der erste Schritt der Installation erfolgreich abgeschlossen.
|
|
KQEMU ist ein Zusatzmodul, daß die Ausführung von x86 Code auf x86 Host-Prozessoren beschleunigt.
Zum Zeitpunkt des Verfassens dieses Artikels, war die Version 0.7.2 akteull. Sie kann unter http://fabrice.bellard.free.fr/qemu/download.html heruntergeladen werden.
Das zip-File enthält einen Ordner kqemu. Diesen entpackt man unter dem Ordner c:\qemu in unserem Bespiel. Im kqemu Unteroderner findet sich eine Datei kqemu.inf. Mittel Rechtsklick -> Installieren wird KQEMU auf dem Host installiert.
Um KQEMU zu starten muss net start kqemu in der Konsole eingegeben werden. QEMU erkennt dann KQEMU beim nächsten Start automatisch. Sollte es Probleme mit KQEMU geben, kann mittels der Option -no-kqemu beim Start vom QEMU die Nutzung von KQEMU abgeschaltet werden.
|
|
Als nächster Schritt muss ein Image für die Debian-Installation angelegt werden. Dazu wird das Tool qemu-img zum Einsatz. Dieses Tool kann Image-Dateien in verschiedenen Formaten anlegen. Ich bevorzuge das qcow-Format. Hierbei belegt das Image nur so viel Platz auf der Festplatte des Hostsystems, wie das Gastsystem belegt. Wer lieber die komplette Größe des Images allokieren will, der wird eher das raw-Format bevorzugen. In der Kommandozeile gibt man folgendes ein:
qemu-img create -f qcow debian.img 10G Dieses Kommando erzeugt ein Imagefile debian.img mit einer virtuellen Größe von 10 GB.
|
|
Der nächste Schritt ist die Installation des Gastbetriebsystems, in unserem Falle Debian. Es gibt zwei Optionen: a) von einem DVD oder CD Image oder b) von einer CD/DVD auf dem Hostsystem zu installieren. Die notwendige Anweisung in der Konsole lautet für a) qemu.exe -L . -boot d -cdrom "debian-31r0a-i386-binary-1.iso" -hda "debian.img" oder für b)qemu.exe -L . -boot d -cdrom \\.\e: -hda "debian.img" wobei e: das CD-ROM Laufwerk des Hostsystems ist.
QEMU sollte nun von der CD/DVD booten und Debian kann ganz normal installiert werden. Soll ein X-Windows Desktop wie Gnome oder KDE installiert werden, empfehle ich die Auswahl des VESA Treibers. QEMU emuliert zwar auch eine Cirrus CLGD 5446 PCI VGA-Karte, aber unter KDE habe ich diese nicht zum Laufen bekommen.
Nach abgeschlossener Installation versucht Debian neu zu booten. Dieser Versuch schlägt fehl. Das ist kein Grund zur Besorgnis. QEMU muss nun einfach für a) qemu.exe -L . -cdrom "debian-31r0a-i386-binary-1.iso" -hda "debian.img" oder für b)qemu.exe -L . -cdrom \\.\e: -hda "debian.img" gestartet werden, also ohne die -boot d Option.
|
|
Die einfachste Methode unter QEMU ein Netzwerk zwischen dem Hostsysystem, dem Gastsystem und einer Internetverbindung herzustellen ist VLAN. VLAN steht für Virtual LAN und ist per default eingeschaltet. Dabei wird folgendes Netzwerk emuliert:
QEMU VLAN <------> Firewall/DHCP server <-----> Internet
| (10.0.2.2)
|
----> DNS server (10.0.2.3)
|
----> SMB server (10.0.2.4)
Das Gastsystem bekommt die IP-Adresse 10.0.2.5 vom DHCP-Server zugeordnet. Das Gastsystem kann auf die Internetverbindung des Hostsystems zurückgreifen, ist aber hinter einer Firewall "versteckt".
Soll vom Hostsystem auf Services wie FTP oder HTTP zugegriffen werden, müssen die entsprechenden Ports beim QEMU-Start freigegeben werden. Hierzu wird die -redir Option benutzt. Dabei kann man entscheiden ob man auf dem Host den gleichen Port benutzt oder einen anderen. Will man also auf Port 80 auf dem Gastsystem zugreifen muss -redir tcp:80::80 beim QEMU Start angegeben werden. Ist Port 80 auf dem Host schon belegt kann mittels -redir tcp:5555::80 der Port 5555 auf dem Host auf Port 80 auf dem Gastsystem gemappt werden. Der Aufruf einer Website die auf dem Gastsystem gehostet wird, erfolgt auf dem Hostsystem mit der Adresse localhost bzw. http//localhost:5555,
Nach dem gleichen Prinzip können FTP, SSH, HTTPS oder Webmin freigeschaltet werden.
|
|
Die eben beschrieben Methode hat einen kleinen Nachteil. Wenn der Host keine Netzwerkverbindung hat, (z.B. ein Laptop, der unterwegs nicht mit einem LAN oder dem Internet verbunden ist), funktioniert das Mappen eines Host-Ports auf einen Gast-Ports nicht. Die Lösung ist ein Virtuelles Netzwerk-Device.
Dazu installiert man OpenVPN. (Einfach den Installer aufrufen). Als nächstes muss ein Key angelegt werden. (Wir brauchen ihn zwar für unseren zweck nicht wirklich, aber OpenVPN verlangt ihn). Dazu im OpenVPN Ordner in einer Konsole openvpn --genkey --secret key.txt ausführen. Als Resultat sollte im OpenVPN Ordner eine key.txt Datei erstellt worden sein.
Nun kann das virtuelle Netzwerkdevice angelegt werden. Dazu führt man einfach addtap.bat im /bin Unterordner aus.
Als nächstes muss im Unteroderner config die Datei config.ovpn in einem Editor geöffnet werden und die IP Adresse des virtuellen Netzwerkdevices eingestellt werden: ifconfig 192.168.32.1 255.255.255.0 Nun kann OpenVPN mittels openvpn --config c:\openvpn\config\config.ovpn gestartet werden.
|