== Virtualisierung eines Windows Vista ==

Seitdem ich meinen neuen Laptop gekauft hatte, gammelt da eine Partition mit einem Windows drauf herum. Ich hatte diese nur einmal gebootet, war bis zur Lizenz gekommen und konnte mich seinerzeit nicht überwinden, diese zu akzeptieren. Nun passierte, was kommen musste: Ein halbes Jahr, nachdem ich in unserem Unternehmen das letzte Windows 98 abgeschaltet hatte, zwingt uns die DATEV wieder ein Windows auf. Natürlich ist da noch nicht das letzte Wort drüber gesprochen, aber zuerst mal fiel mir meine gekaufte und bezahlte Vista-Lizenz ein, die noch auf meinem Laptop schlummerte.



=== Rechtliches ===

Laut EULA erhält man eine Lizenz pro Benutzer und pro Rechner. Das bedeutet einerseits, daß man das System nicht auf mehreren Rechnern installieren darf (sollte logisch sein), daß man aber auch u.U. diskutieren könnte, was ist, wenn man per Virtualisierung mehrere Instanzen startet und dann mehrere User per Fernzugriff damit arbeiten. Gegen die Installation meiner vorhandenen Lizenz auf einem anderen Rechner sollte nach meinem gesunden Menschenverstand auch nichts sprechen. Hingegen dürfte die Installation auf mehreren Rechnern mit dem Argument, man hat immer nur einen eingeschaltet, vielleicht auch zu Diskussionen führen. Mit anderen Worten: Man sollte es nicht übertreiben.

Für meinen eigenen Fall dürfte das alles kein Problem sein, weil ich sowieso nur maximal genau eine Instanz für dieses eine Programm auf einem Rechner nutzen möchte.



=== Grundlagen ===

Windows war immer schon empfindlich, wenn man ihm die Hardware wechselt. Deshalb sollte man sich vorher genau überlegen, wie denn der neue Rechner aussehen soll. Mein Sony Vaio Recovery Tool erzeugt eine Partition von mindestens 50GB mit einem uneingerichteten Windows. Dieser "uneingerichtete" Zustand ist wichtig. Ist Windows z.B. einmal auf einem System mit IO-APIC (Was immer das ist) installiert, läuft es ohne dieses nicht mehr. Auch die Partition bzw. die Stelle, an der diese auf der Platte ist, darf man nicht so ohne weiteres ändern. Außerdem ist der ganze Vorgang recht zeitaufwändig, so  daß es sich empfiehlt, möglichst direkt alles richtig zu machen. :-)

: Das IO-APIC ist die 'Erweiterung' zu PIC [http://de.wikipedia.org/wiki/Advanced_Programmable_Interrupt_Controller Wikipedia]. APIC stellt mehr Interrupts zur Verfügung als sein Vorgänger. So können mehrere Dinge einfacher von einander getrennt werden und die CPU anfordern oder allgemein einen EVENT auslösen.  

Übrigens war das Windows98, das ich in der Vergangenheit auch öfters virtualisiert habe und von dem bestimmt bei vielen auch noch etliche Lizenzen herumfliegen, da wesentlich anspruchsloser. Ggf. reicht das ja auch für viele Anwendungsfälle aus.

Zur Virtualisierung habe ich mich für VirtualBox entschieden. Die Guest Addons erlauben eine super Integration in meinen KDE Desktop und außerdem erlaubt es eine USB-Unterstützung, da die DATEV auf einem USB-Dongle besteht.



=== Erstellung des Installationsmediums ===

Schön wäre es gewesen, eine Installations-CD zu haben, aber die hat Sony gespart. Also habe ich mit dem Recoverytool, das auf der ersten Partition steckt, ein komplett nacktes System erzeugt.

Um genau zu sein, war beim Kauf des Systems der gesamte Rest der Platte ein Windows-System. Ich habe also direkt nach dem Auspacken mit Hilfe des Recorery-Systems von Sony dieses Windows neu erzeugt und dabei angeben können, daß ich nur eine 50GB-Partition möchte. Danach habe ich den Rest für Linux verbraten und erstmal an Windows nicht mehr gedacht.


=== Erstellung der virtuellen Maschine ===

Ich bin alle Einstellungen von VirtualBox durchgegangen und habe sie entsprechend meinen Wünschen angepasst. ACPI habe ich angelassen, dadurch kann man später das Gastsystem per Software herunterfahren. IO-APIC habe ich ausgeschaltet, da es scheinbar nur die Performance stört und keine Vorteile hat.

Obwohl die Ursprungspartition in "cfdisk" 50GB Größe hat, habe ich die virtuelle Festplatte ca. 55GB groß machen müssen. Hier rechnet scheinbar einer mit 1000 und einer mit 1024. Die genaue Formel war mir zu heikel, weshalb ich großzügig 60 genommen habe. Später kann man mit ntfsresize das Filesystem der Partition anpassen.

Zum Datenaustausch habe ich nicht das NAT-Netzwerk, sondern ein TAP-Interface gewählt. Dieses hat den Vorteil, daß zwar mein Hostrechner an das Windows herankommt, ansonsten das Windows aber sicher vom Internet getrennt ist. Das erscheint mir als sicherste Methode, Virenbefall, Microsoft-Updates und ähnliches zu vermeiden. Bei der Einrichtung hilft das tunctl-Programm aus dem Debian-Paket "uml-utilities". Dieses muss als root erfolgen. Der Start der VM geschieht selbstverständlich als User.

  Host# tunctl -t tap1 -u tbayen
  Host# ifconfig tap1 192.168.100.1


=== Kopieren in die virtuelle Maschine ===

Ich habe die VM mit einem Knoppix CD-Image gebootet. Als erstes habe ich dann das Netzwerkinterface des Gastsystems konfiguriert:

  Gast# ifconfig eth0 192.168.100.2

Nun habe ich mit '''cfdisk''' die Platte partitioniert, so daß ich eine einzige große, primäre NTFS-Partition habe, deren Boot-Flag gesetzt ist. Dann habe ich folgendermassen das System kopiert. Auf dem Gastsystem:

  Gast# netcat -l -p 2222 | dd of=/dev/hda1
  
und auf dem Hostsystem:

  Host# dd if=/dev/sda2 | netcat 

Dies läuft einige Zeit. Danach habe ich mit

  Gast# install-mbr /dev/hda

einen Bootblock installiert. Nun wird es trickreich. Da die Windows-Partition nun verschoben wurde bzw. die virtuelle Platte eine andere Geometrie als die Echte hat, habe ich das Programm [ntfsreloc|http://www.linux-ntfs.org/doku.php?id=contrib:ntfsreloc] auf dem Hostsystem übersetzt, auf den Gast kopiert und dann gestartet:

  Gast# ntfsreloc -w /dev/hda1

Damit steht einem Reboot nichts im Wege.

=== Reboot und erster Start ===

Ich habe früher immer gerne Witze über Windows gerissen, weil man das dauernd rebooten muss. Da ich jedoch seit Win98 kein neueres System mehr ernsthaft angefasst hatte, bin ich mit diesen Witzen etwas vorsichtiger geworden. Ich dachte, das wäre heute nicht mehr so. - HAHAHA!!! - Ich kann weiterwitzeln. Ich habe bei der Installation etliche Male rebooten müssen und vor allem noch später bei der Installation meiner Zielsoftware (also eigentlich eines einzigen Programms) noch 4 (Vier!) Mal booten müssen. Wann lernen die das endlich...?!?

Alles, was irgendwie nach Gemecker aussah, habe ich interessiert gelesen und dann ignoriert. Die "Aktivierung" habe ich auf später verschoben und ansonsten ging irgendwann der Desktop auf.

=== Besonderheiten in der Sony VAIO Installation ===

Als allererstes ging ca. alle 3 Sekunden ein Fenster auf, ds daruf hinwies, das ich die falsche Batterie besitze und diese doch bitte richtig einlegen soll. Die Kunst ist nun, das Startmenü zu öffnen und dann die Systemsteuerung auszuwählen, bevor dieses nach drei Sekunden wieder verschwindet, weil das Meckerfenster neu aktiviert wird. Nachdem ich das geschafft hatte, habe ich in der Gerätesteuerung die Batterie deaktiviert und fertig. Danach konnte ich über die Systemsteuerung im Feld "Programme" alle möglichen vorinstallierten Dinge entfernen. Insbesondere alles, was mit "Sony" anfing, erschien mir für die virtuelle Maschine nicht so sinnvoll.

Beim Reboot (!) waren dann auch prompt die Meckerfenster weg.

=== Sonstiges ===

Im Menü des VirtualBox-Fensters kann man die Auswahl "Guest Addons installieren" treffen. Das bedeutet, daß virtuell eine CD eingeschoben wird. Diese installiert dann automatisch einige Windows-Treiber, z.B. für die Netzwerkkarte, das gemeinsame Clipboard, 3d-Beschleunigung, die Desktopgrößen-Anpassung und den Seamless-Mode. Nach kurzer Zeit wollte ich diese Tools nicht mehr missen.

Natürlich musste ich das Netzwerkinterface manuell konfigurieren, da ich mich ja absichtlich vom DHCP-Server getrennt habe.

=== Aktivierung sowie Anmerkungen zur Lizenz ===

Nicht zu vergessen habe ich dann natürlich auch meine Lizenz aktiviert. Ich habe mich selten gleichzeitig so aufgeregt und so gelacht. Da ich aus Sicherheitsgründen keinen Internet-Anschluss haben will, konnte ich nach Angabe meines vielstelligen Product-Key telefonisch einen 48-stelligen Aktivierungs-Key durchgeben und bekam dann einen 48-stelligen Bestätigungs-Code.

Wie blöd sind eigentlich alle diese Menschen da draussen, daß sie diesen Quatsch mitmachen? Unterm Strich wäre es wahrscheinlich viel einfacher gewesen, ich hätte mir per P2P eine Raubkopie gezogen. Ich hätte ein anständiges Installationsmedium gehabt, keine Aktivierung und meinen Frieden. Lediglich mein Entschluß, die von mir erworbene Version "legal" zu nutzen, hat mir die Hälfte der obigen Arbeit eingebrockt. Was genau will MS damit erreichen? Ehrliche User dürfen sich mit einer tschechischen Callcenter-Frau herumschlagen, die meine Zahlen am Telefon nicht versteht und Raubkopierer installieren einfach munter los...

Dazu habe ich mir etwas Zeit genommen, um wenigstens den Anfang der EULA zu lesen. Die dürfen nicht nur munter Daten austauschen, sondern bei Verdacht, gegen die Lizenz zu verstossen, auch noch mein System oder Teile davon oder darauf installierte Software deaktivieren oder löschen. Wo leben wir hier eigentlich???



== tap-Device dauerhaft erzeugen ==

Wer sein Windows öfters braucht, wird natürlich nicht gerne jedesmal ein paar Befehle als root eingeben wollen. Neben den klassischen Methoden z.B. per sudo oder mit einem suid-Skript kann man auch das tap-Device beim Systemstart automatisch erzeugen lassen. Natürlich bedeutet das, daß ein beliebiges Programm des betreffenden Users dieses Device nutzen und damit auf das Netzwerk kann. Letztlich könnte also ein Hacker, der auf diese ungewöhnliche Idee kommt, all das tun, was jemand kann, der unser Windows-System übernimmt - schlimmer als Windows kanns also nicht werden. :-) Eine entsprechende Firewall-Konfiguration (bzw. gar kein Routing auf dem Interface) vorausgesetzt, kann man also folgendes nach ''/etc/network/interfaces'' schreiben:

  # Interface fuer WindowsVista unter VirtualBox
  auto tap1
  iface tap1 inet static
        address 192.168.212.1
        netmask 255.255.255.0
        pre-up tunctl -t tap1 -u meinusername

Statt dem tunctl (aus dem uml-utilities Paket) gibt es beim proprietären VirtualBox auch eigene Tools wie ~VBoxAddIF, ~VBoxDeleteIF und ~VBoxTunctl. Diese haben den Nachteil, daß Sie proprietär sind, haben laut Hilfetexten aber den Vorteil, daß Sie u.U. ein Interface auch für eine Gruppe freigeben können (habe ich aber nicht ausprobiert).



== Drucker einrichten ==

Natürlich möchte ich auch aus Windows heraus drucken können. Da dieses Thema etwas allgemeiner ist, ist es auf der Seite CupsUndWindows behandelt.


== Links ==

* http://www.linux-ntfs.org/doku.php?id=ntfsclone - Website von '''ntfsclone''' mit weiterführenden Links


----
[{Tag Virtualisierung Windows}]