Der Hauptgrund für die Anschaffung des neuen PC war, mich intensiv mit Linux zu beschäftigen und die Virtualisierungstechniken auszuprobieren. Beim Kauf habe ich darauf geachtet, dass der Prozessor 64 Bit-fähig ist und Hardwarevirtualisierung unterstützt. Beides ist beim Intel Core 2 Duo E6400 der Fall.
Bei der Virtualisierung geht es vereinfacht gesagt darum, innerhalb eines Betriebssystems weitere Betriebssysteme auszuführen. So kann beispielsweise Linux in einem Fenster auf dem Windows-Desktop laufen oder umgekehrt.
Intel implementierte die Virtualisierungstechnik unter dem Namen Intel VT (auch Vanderpool) und AMD unter dem Namen AMD-V (auch Pacifica).
Als Host wird das Basisbetriebssystem bezeichnet. Virtualisierte Systeme nennt man Gäste. Ein Gastsystem kann entweder para- oder hardwarevirtualisiert laufen:
- Paravirtualisierung (PV): Das Gastsystem muss an die Virtualisierungsumgebung angepasst werden. PV eignet sich für Linux/Unix, da der Kernel für die virtuelle Umgebung optimiert werden kann.
- Hardwarevirtualisierung (Hardware Virtual Machine, HVM): Das Gastsystem nutzt Intel VT bzw. AMD-V und kann daher unmodifiziert laufen. HVM ist nötig für Windows als Gast, da der Windows-Kernel wegen fehlendem Quellcode nicht angepasst werden kann.
Ich konzentriere mich bei meinen Tests auf HVM, da ich so praktisch beliebige Betriebssysteme von Grund auf, unmodifiziert, installieren kann.
Siehe auch: Vergleich der verschiedenen Virtualisierungslösungen.
Installation Basissystem
Ubuntu-Linux 6.10 (Edgy Eft) Server 64 bit liess sich problemlos installieren. X-Server und Gnome installierte ich nach, da ich auf eine grafische Oberfläche nicht verzichtet will.
Den Treiber für die Grafikkarte lud ich von nvidia.com herunter. Nach dem leider für jeden Kernel unumgänglichen Kompiliervorgang (solange Nvidia den Quellcode nicht freigibt) lässt sich mit nvidia-settings der Konfigurationsdialog aufrufen, wo auch mehrere Bildschirme konfiguriert und die Temperatur der Karte angezeigt werden können. Um den Grafikkartentreiber zu ändern, muss übrigens nur eine einzige Zeile in /etc/X11/xorg.conf angepasst werden. Nach der Zeile 'Device' einfach bei 'Driver' den Wert 'vesa' (läuft immer, sehr langsam), 'nv' (Open Source-Treiber für Nvidia-Grafikkarten) oder 'nvidia' eingeben. Nur letzterer bietet 3D-Beschleunigung.
Die Unterstützung für Virtualisierung musste ich im BIOS erst aktivieren. Wichtig: Computer danach aus- und wieder einschalten. Ein Warmstart des PC genügt nicht.
XEN 3.0.3
XEN ist in aller Munde, umfassend, aber leider auch sehr komplex. XEN benötigt einen speziellen Kernel für den Host, unter dessen Regie die Gastsysteme laufen. Dieser Kernel lässt sich unter Ubuntu schnell installieren, muss dann aber manuell ins Grub-Bootmenü eingetragen werden. Der Computer kann dann wahlweise mit dem normalen oder dem XEN-Kernel starten. Unglücklicherweise führte der von Ubuntu angebotene XEN-Kernel 2.6.17 auf meinem System zu einem Kernel-Panic und der ältere XEN-Kernel mit Version 2.6.16-11 machte auf meiner brandneuen Hardware Probleme: Den Netzwerkkartentreiber musste ich selber kompilieren, ausserdem erkennt der XEN-Kernel die beiden CD-Laufwerke nicht.
Die beschriebenen Probleme kosteten mich einige Stunden Arbeit und trotzdem waren noch nicht alle Vorbereitungen erledigt. Ich fand, dass es auch einfacher gehen müsste, verliess die XEN-Baustelle und wandte mich KVM zu, siehe nächster Abschnitt.
KVM Version 13
Diese Virtualisierungslösung basiert auf QEMU und benötigt einen Prozessor mit Hardwarevirtualisierungsfunktionen. Im Gegensatz zu XEN kann KVM unter dem Ubuntu-Standardkernel kompiliert werden und lässt sich dann als Modul laden, ohne dass der Host zu irgend einem Zeitpunkt neu gestartet werden müsste.
Es dauerte nicht einmal einen Abend, um KVM zu übersetzen und Windows XP als Gast zu installieren.
Die erstaunlich kurze Beschreibung zur Installation vom KVM befindet sich hier: http://kvm.qumranet.com/kvmwiki/HOWTO.
Ergänzungen zum Howto: Es ist etwas ungenau beschreiben, was zu installieren ist: gcc-3.4, libsdl1.2debian, libsdl1.2-dev, zlib1g, zlib1g-dev, alsa-base, alsa-utils, libuuid1, uuid-dev.
Punkt 1 (KVM übersetzen und Modul laden):
- --with-patched-kernel habe ich weggelassen, da ich den Standardkernel von Ubuntu verwenden will.
- make install funktionierte nicht richtig, deshalb:
- cp -p kernel/*.ko /lib/modules/2.6.17-11-generic
- depmod -a
- modprobe kvm-intel
Punkt 2 (Datei generieren, welche als virtuelle Festplatte dient):
- /usr/local/kvm/bin/qemu-img create -f qcow vidsk.img 10G
Punkt 3 (Windows als Gast installieren):
- /usr/local/kvm/bin/qemu-system-x86_64 . -hda vidsk.img -cdrom winxp.iso -boot d -m 768 -no-acpi
- Schrecksekunde: qemu endet mit Fehler, da Windows während der Installation mal bootet: Einfach obigen Befehl nochmals ausführen.
- Ich verwende ein Image der Windows-CD, da die Installation dann viel schneller abläuft. Das Image wird so generiert: cp /dev/scd0 winxp.iso, wobei scd0 den Devicenamen des CD-Laufwerks bezeichnet.
Punkt 4 (Gast starten):
- Nach der Installation Windows ohne 'eingelegter' CD starten:
- /usr/local/kvm/bin/qemu-system-x86_64 . -hda vidsk.img -boot c -m 768 -no-acpi
Damit das virtuelle Windows automatisch via DHCP eine IP-Adresse von meinem ADSL-Router beziehen kann, muss vorgängig auf dem Linux-Host eine Bridge gemäss Anleitung auf http://kidsquid.com/cgi-bin/moin.cgi/bridge eingerichtet werden:
- brctl addbr br0
- ifconfig eth0 0.0.0.0 promisc up
- brctl addif br0 eth0
- dhclient br0
- Datei /etc/qemu-ifup mit folgendem Inhalt anlegen und ausführbar machen:
#!/bin/shsudo /sbin/ifconfig $1 0.0.0.0 promisc upsudo /usr/sbin/brctl addif br0 $1
Der Gast muss danach mit zusätzlichen Parametern gestartet werden: -net nic,vlan=0 -net tap,vlan=0
--with-patched-kernel klappt erst mit Kernel 2.6.20, welcher KVM-Funktionen integriert hat. Ubuntu Edgy verwendet aber noch den 2.6.17.
Ich habe bewusst das Kommando cp verwendet, weil es einfacher zu schreiben ist als dd und zum gleichen Resultat führt.
--with-pachted-kernel funktionierte mit dem 2.6.20-15 auch nicht, wenn beim Compilieren asoundlib.h fehlen sollte muss das Paket libasound-dev nach installiert werden, sudo make install funktionierte in meinem Fall ( Version kvm-12.tar.gz, Feisty, 2.6.20-15 ), und danke, die Anleitung erspart lange Suche im Netz
Ueber 1000 Zeichen lange Kommentare werden gekürzt, HTML ist nicht erlaubt.
Themafremde Kommentare werden gelöscht.



--with patched-kernel kannst du nicht weglassen, weil der ubuntu kern auch gepatcht ist ;-) zum image erstellenb von irgendwelchen physichen laufwerken nimmt man dd und nicht cp. ich danke für dein posting und werde es nach dem xen versuch mal probieren.