Windows 2012 R2 in KVM auf Ubuntu 14.04 installieren – mit Virtio HD, RDP und NAT

Windows 2012 R2 in KVM auf Ubuntu 14.04 installieren – mit Virtio HD, RDP und NAT

Wer möchte, kann sich auf einem vorhandenen Root-Server per KVM zahlreiche weitere Betriebssysteme installieren – wie z. B. einen Windows Server 2012 R2.

So hat man dann sein Windows immer dabei. Komfortabel sogar, wenn man einen RDP Client zur Hand hat.

Doch vor die Benutzung haben die (wer auch immer) den Schweiß gestellt.

Festplatte nicht gefunden

So wird die virtio Festplatte vom Windows 2012 R2 Setup beispielsweise nicht erkannt. Glücklicherweise gibt es hierfür einen passenden Treiber, der zur Setup-Zeit nachgeladen werden muß. Man bekommt ein passendes ISO bei Fedora.

Anschließend (passendes XML siehe unten) bindet man das ISO als CDROM Lauferk ein, so wie bei Stackoverflow sehr gut beschrieben. Und.. da wir bereits ein CDROM Laufwerk haben (mit der Installations-DVD) wird dies ein zweites Laufwerk. Nun finden wir insgesamt 3 Datenträger, wenn wir die Option auswählen, einen Treiber per Diskette nachzuladen.

Wie hier beschrieben muß man nun den korrekten Red Hat VirtIO SCSI controller Treiber für Windows 2012R2 auswählen – es gibt auch nur wenige Verzeichnisse, die passend heißen. Bei mir hat es nach dem 3. Versuch geklappt und ich sah die 100GB Festplatte, die ich vorher per

qemu-img create dev2.img 100G

erstellt hatte. Die Installation lief dann ohne Probleme durch.

Netzwerk per NAT

Da ich nicht vorhabe, Windows von extern erreichbar zu haben, benötige ich auch keine eigene IP sondern benutze nur den bei Installation von KVM bereits eingerichteten NAT (bzw. benutze ich den auf dem Host eingerichteten Teil).

Remoting mit VNC und RDP

Jetzt kann ich mich auch bereits per VNC verbinden über den geöffneten Port (SSH Tunnel aufmachen), was natürlich auch bei der Installation ungemein hilfreich ist. 🙂

Leider jedoch hatte ich Probleme mit dem Mauszeiger, und insofern ist der RDP zweifelsohne die bessere Wahl. Bevor man hier irgendetwas probiert sollte man sicherstellen, daß der RDP für das aktuell genutzte Netzwerk freigegeben ist – oder direkt private wie auch public freigeben. Ferner muß man noch den Remotezugriff generell freigeben, die entsprechende Option findet sich in der Systemsteuerung unter System. Die Syntax habe ich hierf bzw. hier her.

Mit dem Portforwarding von 3387->3389 kann man sich dann (wiederum per SSH Tunnel) auch direkt mit dem Rechner per RDP verbinden.

Übrigens zieht sich eine bereits vorab geupdatete Version (daher auch der Name en_windows_server_2012_r2_with_update_x64_dvd_4065220.iso) ca. 1.5GB Updates, das waren einige über 100.

Das XML

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
<domain type='kvm' id='12' xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'>
  <name>win2012r2</name>
  <uuid>f5b8c05b-9c7a-3221-49b9-7bd635f7e2ab</uuid>
  <memory unit='KiB'>6291456</memory>
  <currentMemory unit='KiB'>6291456</currentMemory>
  <vcpu placement='static'>4</vcpu>
  <resource>
    <partition>/machine</partition>
  </resource>
  <os>
    <type arch='x86_64' machine='pc-i440fx-trusty'>hvm</type>
    <boot dev='cdrom'/>
  </os>
  <features>
    <acpi/>
  </features>
  <clock offset='utc'/>
  <on_poweroff>destroy</on_poweroff>
  <on_reboot>restart</on_reboot>
  <on_crash>restart</on_crash>
  <devices>
    <emulator>/usr/bin/kvm</emulator>
    <disk type='file' device='disk'>
      <driver name='qemu' type='raw'/>
      <source file='/var/virt/win2012r2/dev2.img'/>
      <target dev='vda' bus='virtio'/>
      <alias name='virtio-disk0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
    </disk>
    <disk type='file' device='cdrom'>
      <driver name='qemu' type='raw'/>
      <source file='/var/virt/win2012r2/en_windows_server_2012_r2_with_update_x64_dvd_4065220.iso'/>
      <target dev='hdc' bus='ide'/>
      <readonly/>
      <alias name='ide0-1-0'/>
      <address type='drive' controller='0' bus='1' target='0' unit='0'/>
    </disk>
    <disk type='file' device='cdrom'>
      <driver name='qemu' type='raw'/>
      <source file='/var/virt/win2012r2/virtio-win.iso'/>
      <target dev='hdd' bus='ide'/>
      <readonly/>
      <alias name='ide0-1-1'/>
      <address type='drive' controller='0' bus='1' target='0' unit='1'/>
    </disk>
    <controller type='ide' index='0'>
      <alias name='ide0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/>
    </controller>
    <controller type='usb' index='0'>
      <alias name='usb0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>
    </controller>
    <controller type='pci' index='0' model='pci-root'>
      <alias name='pci.0'/>
    </controller>
    <interface type='user'>
      <mac address='52:54:00:22:f2:b2'/>
      <model type='virtio'/>
      <alias name='net0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
    </interface>
    <serial type='pty'>
      <source path='/dev/pts/3'/>
      <target port='0'/>
      <alias name='serial0'/>
    </serial>
    <console type='pty' tty='/dev/pts/3'>
      <source path='/dev/pts/3'/>
      <target type='serial' port='0'/>
      <alias name='serial0'/>
    </console>
    <input type='mouse' bus='ps2'/>
    <input type='keyboard' bus='ps2'/>
    <graphics type='vnc' port='5912' autoport='no' listen='127.0.0.1' keymap='de'>
      <listen type='address' address='127.0.0.1'/>
    </graphics>
    <video>
      <model type='cirrus' vram='9216' heads='1'/>
      <alias name='video0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
    </video>
    <memballoon model='virtio'>
      <alias name='balloon0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
    </memballoon>
  </devices>
  <seclabel type='dynamic' model='apparmor' relabel='yes'>
    <label>libvirt-f5b8c05b-9c7a-3221-49b9-7bd635f7e2ab</label>
    <imagelabel>libvirt-f5b8c05b-9c7a-3221-49b9-7bd635f7e2ab</imagelabel>
  </seclabel>
  <qemu:commandline>
    <qemu:arg value='-redir'/>
    <qemu:arg value='tcp:3387::3389'/>
  </qemu:commandline>
</domain>

Eine VM von einem .xml erzeugt man übrigens nach der Erstellung des Festplattenimages mit

virsh create win2012r2.xml

nachher kann man – wenn nötig – Optionen mit

virsh edit win2012r2

editieren (mit der beliebten vim (o. ä.) Syntax, also:
i -> Editieren
ESC -> nicht mehr Editieren
:w -> abspeichern
:q -> beenden

Viel Freude, ich habe mir dieses .xml in mehreren Stunden zusammengesucht.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.