QEMU
Ein virtueller PC mit QEMU
QEMU ist ein Prozessor-Emulator, der einen virtuellen Rechner bereitstellt. Für das darin installierte Betriebssystem verhält sich QEMU wie echte Hardware. Dies ist zum Testen und zum gleichzeitigen Ausführen mehrerer Betriebssysteme auf der selben Hardware sehr hilfreich.
Installation
QEMU kann einfach mit Pacman installiert werden:
pacman -Sy qemu
Installation eines Betriebssystems
Die große Stärke des puren qemus ist die Unabhängigkeit vom Type der CPU. So ist es zum Beispiel möglich auf einer normalen 32Bit CPU ein 64bit Betriebssystem zu installieren indem qemu die 64bit CPU simuliert. Diese Stärke ist aber auch die große Schwäche da durch das Simulieren viel CPU Leistung verloren geht.
Folgende CPU typen können mit folgenden Befehlen simuliert werden.
qemu-system-arm qemu-system-cris qemu-system-m68k qemu-system-mips qemu-system-mips64 qemu-system-mips64el qemu-system-mipsel qemu-system-ppc qemu-system-ppc64 qemu-system-ppcemb qemu-system-sh4 qemu-system-sh4eb qemu-system-sparc qemu-system-x86_64
Erweitern des zuweisbaren Rams (als ROOT)
Qemu vergibt standardmäßig 128mb Ram an das emulierte OS, um diese Grenze zu Erweitern gibt die Option "-m XXX" wobei XXX die Ramgröße in mb ist. Jedoch bewirkt diese Option alleine nichts, denn zuerst muss die Größe von /dev/shm verändert werden. Denn qemu greift auf /dev/shm zurück um Ramspeicher für das Gast OS zu erhalten.
Dazu editieren wir die Folgende Zeile in unserer /etc/fstab wobei XXX für die gewünschte Größe in MegaByte steht.
none /dev/shm tmpfs defaults,size=XXXM 0 0
Zur Erklärung, mit dieser Zeile wird Speicher vom type "tmpfs" nach /dev/shm gemountet welcher Arbeitsspeicher ist, den Qemu dann verwenden kann. Dieser Speicher kann bei System überlast auch in den Swap wandern.
Diese Zeile dient zum erneuten mounten von /dev/shm und erspart uns einen System Neustart :D
mount -o remount /dev/shm
Erstellen einer virtuellen Festplatte
Für die Installation eine Betriebsystems erstellen wir zunächst eine virtuelle Festplatte.
qemu-img create -f qcow arch.qcow 4G
Nun haben wir ein Festplatten-Image arch.qcow mit einer maximalen Größe von 4GByte. Die Datei ist dabei nur so groß, wie der tatsächlich vom Gastsystem benötigte Platz.
Starten vom Installationsmedium
Wir können das Gastsystem direkt von einem ISO-Image oder von einem physischen Medium installieren. Bei letzterem ersetzen wir den ISO-Dateinamen einfach durch das entsprechende Gerät, wie z.B. /dev/dvd.
qemu -cdrom arch-0.7.2-ftp.iso -boot d arch.qcow
Hierbei bedeutet -boot d, dass wir vom virtuellem CD-ROM-Laufwerk starten wollen.
Starten des Gastsystems
Das Gastsystem läßt sich einfach durch Angabe des Fesplatten-Abbildes starten:
qemu arch.qcow
Bedienung
Durch Klicken mit der Maus in das Qemu-Fenster, kann die Maus im Gast genutzt werden. Durch Drücken von "Strg+Alt" kann der Mauszeiger wieder befreit werden.
Beschleunigung mit kqemu oder kvm
Durch die Emulation einer vollständigen CPU arbeitet ein System in QEMU um Faktor 5 bis 20 langsamer als auf realer Hardware. Mit dem Kernel-Modul kqemu ist es möglich, ohne CPU-Emulation Code direkt auf der Host-CPU auszuführen. Laut Projekt liegt der Performance-Verlust dann bei maximal Faktor 2.
Alternativ ist in aktellen Kernel ab 2.6.20 mit den Modulen kvm-intel bzw kvm-amd bereits ein Beschleuniger für Prozessoren mit Virtualisierungsfunktionen vorhanden. Nach dem laden des passenden Moduls muss legendlich eine angepasste und im qemu-Paket bereits mitgelieferte Version von qemu qemu-kvm benutzt werden. Mehr Informationen zu KVM finden sich unter [1]
Installation von kqemu
Das Paket kqemu kann einfach mit Pacman installiert werden:
pacman -Sy kqemu
Wer nicht den Standard-Kernel einsetzt, muss eine entsprechend andere Version von kqemu wählen: z.B. kqemu-ck. Nach der Installation sollte man noch folgende Zeile in /etc/modprobe.conf einfügen, um kqemu auch ohne root-Rechte nutzen zu können.
options kqemu major=0
Nachdem das Modul mit modprobe kqemu geladen wurde, ist es auch schon einsatzbereit. Um dies bereits beim Systemstart zu laden, kann man kqemu in die rc.conf eintragen.
Start mit kqemu
Ab sofort wird kqemu automatisch für Code im User-Mode genutzt. Soll zusätzlich auch Code im Kernel-Mode auf der Host-CPU ausgeführt werden, so muss man den Parameter -kernel-kqemu beim Start von qemu mit angeben. -no-kqemu deaktiviert den Einsatz von kqemu.
Vorsicht: Das Modul ist noch in der Entwicklung und funktioniert mit manchen Gast-Systemen wie z.B. Windows 95 nicht im Kernel-Mode. Die Installation eines Betriebsystems sollte man besser ohne -kernel-kqemu machen.
Hinweis für Arch64: Auf einem 64-Bit-System muss qemu mit qemu-system-x86_64 gestartet werden, um kqemu einzusetzen.