Mit der besseren Integration von Xen in die aktuelle LTS Version von Ubuntu bietet es sich an, als Virtualisierungslösung auf den freien Xen zu setzen, wenn es darum geht, einen Windows TS (Terminal Services) oder RDS (Remote Desktop Services) Server im kleinen SOHO Netzwerk zu virtualisieren. Dieser Workshop setzt einen funktionierenden Xen-Host voraus, d.h. eine paravirtualisierte domU konnte bereits erfolgreich gestartet werden.
Voraussetzungen prüfen
Um Windows auf Xen laufen lassen zu können, muss die “Hardware Virtual Machine” ran. Die sollten moderne Prozessoren beherrschen, tun sie aber nicht immer. Ein guter Ansatz ist es. den Inhalt von /proc/cpuinfo nach vm zu durchsuchen. Taucht hier vme oder svm auf, schaut es gut aus. Wenn nicht: Zuerst ins BIOS schauen und dort Hardwarevirtualisierung aktivieren – ggf. einen Blick ins Xen-Wiki werfen: wiki.xensource.com/xenwiki/HVM_Compatible_Processors.
grep vm /proc/cpuinfo
Installations-ISO besorgen
Für die Installation benötigen wir ein Verzeichnis für die VM und das Installations-ISO. Legen wir das Verzeichnis und eine leere Festplatte als Sparse File an:
WIN2008DIR=/usr/local/xendomains/win2008 mkdir -p $WIN2008DIR dd if=/dev/zero bs=1M count=1 of=$WIN2008DIR/xvda.img seek=39999
Das ISO des Windows besorge ich mir von technet.microsoft.com/en-us/evalcenter/dd459137.aspx und kopiere es nach $WIN2008DIR/win2008.iso.
Konfigurationsdatei für die Installation
Meine Konfigurationsdatei /usr/local/xendomains/win2008/xen.cfg für die Installation sieht folgendermaßen aus:
kernel = '/usr/lib/xen-default/boot/hvmloader'
builder='hvm'
memory = 1024
xen_platform_pci=1
# Should be at least 2KB per MB of domain memory, plus a few MB per vcpu.
shadow_memory = 16
name = "win2008"
vif = [ 'type=ioemu, bridge=xenbr0, mac=00:16:17:12:23:01, model=e1000' ]
acpi = 1
apic = 1
disk = [ 'file:/usr/local/xendomains/win2008/xvda.img,xvda,w',
'file:/usr/local/xendomains/win2008/win2008.iso,xvdc:cdrom,r' ]
device_model = '/usr/lib/xen-default/bin/qemu-dm'
# boot on floppy (a), hard disk (c) or CD-ROM (d)
# default: hard disk, cd-rom, floppy
boot="dc"
sdl=0
vnc=1
vncconsole=1
vncpasswd=''
serial='pty'
usbdevice='tablet'
Der erste Start
Nun geht es an den ersten Start:
xm create /usr/local/xendomains/win2008/xen.cfg
Lautet die Ausgabe Error: Domain 'win2008' does not exist. ist ein Blick in die Logdatei /var/log/xen/qemu-dm-win2008.log angeraten. Steht dort etwas wie Could not read keymap file: '/usr/share/qemu/keymaps/en-us' hilft meist ein Softlink:
ln -sf /usr/share/qemu-linaro /usr/share/qemu
Lautet die Ausgabe: Started domain win2008 (id=4) können Sie lokal mit dem VNC Viewer mit der Domain verbinden:
vncviewer localhost
In meinem Fall handelte es sich um einem kopflosen Server. Da musste ich mir den SSH-Port zunächst per Port-Weiterleitung auf den lokalen Rechner holen. 10.76.23.55 ist der Server, auf dem Xen läuft und die DomU eingerichtet werden soll:
ssh -L 5900:localhost:5900 root@10.76.23.55
In einem anderen Terminal kann ich dann auf dem PC, der die SSH-Verbindung initiiert hat die VNC Konsole öffnen: vncviewer localhost. Und bitte keine Panik, wenn während der Installation die VNC-Verbindung mal abreisst. Bei Reboots oder Änderungen der Grafikauflösung ist das normal.
Installation der PV-Treiber
Eine deutlich bessere Performance von Netzwerk und virtuellen Festplatten erhalten Sie nach Installation der GPL PV-Treiber. Sie finden diese unter www.meadowcourt.org/downloads/ Laden Sie das aktuellste gplpv*-Paket für Ihr Windows und installieren Sie dieses. Ist die Installation abgeschlossen, fahren Sie das Windows herunter und ändern Sie die Konfigurationsdatei:
vif = [ 'type=ioemu, bridge=xenbr0, mac=00:16:17:12:23:02, type=paravirtualized' ] # default: hard disk, cd-rom, floppy boot="c"
Feintuning zum Schluss
Ist der Windows-Server fertig eingerichtet und das Login mittels rdesktop funktioniert, kann die lokale Serverkonsole per VNC deaktiviert werden:
vnc=0 vncconsole=0
Im Falle eines Falles (Server vergisst Netzwerkeinstellungen o.ä.) muss die betreffende Domain dann natürlich abgewürgt werden und die beiden Parameter müssen wieder auf 1 gesetzt werden. Aus Sicherheitsgründen ist es aber nicht ratsam, die VNC-Konsole dauerhaft zugreifbar zu haben.