Windows Server 2012 (R2) Foundation unter Hyper-V virtualisieren

Grundsätzlich kann man die Foundation-Edition des Windows Servers virtualisieren. Unter VirtualBox gab es keine größeren Schwierigkeiten (siehe hier), auch unter KVM-basierten Lösungen und soweit mir bekannt ist sollte VMware ebenfalls kein Problem sein. Unter Hyper-V sieht die Sache allerdings etwas anders aus.

Eigentlich sind in allen neueren Versionen von Windows die Integrationsdienste bereits integriert. Die Ausnahme stellen nach aktuellem Kenntnisstand die Home-Editionen und der Foundation-Server dar.

Darf man das?

Gute Frage, die Lage ist etwas schwierig, da Microsoft im Blog etwas formuliert, das man so auslegen kann, als sei es ok:

Windows Foundation Server und Virtualisierung

Auf der anderen Seite allerdings unter Introduction to Windows Server 2012 Foundation folgendes erwähnt ist:

"Virtual image use rights: None; cannot host virtual machines or be used as a guest operating system in a virtual machine."

Ungeachtet dessen ist es technisch möglich.

Warum eigentlich?

Bei einem Kunden ging es darum, das einiges zu testen ist bevor an der Produktikumgebung etwas verändert werden sollte. Da der Kunde neben dem Foundation-Server noch Hyper-V im Einsatz hat, war es naheliegend die Produktivumgebung dort nachzubilden bzw. ein Backup davon als virtuellen Computer wiederherzustellen.

Übrigens geht s um folgende Versionen:

  • Windows Server 2012 Foundation
  • Windows Server 2012 R2 Standard als Hyper-V Host

Sonderfall „Hyper-V“

Der Restore des Backups war dabei gewohnt einfach. Ein Drive Snapshot-Abbild wurde in eine zuvor angelegte VHDX eingespielt. Der anschl. Bootvorgang verlief erfolgreich.

Hinweis: Der verwendete virtuelle Computer entspricht der „Generation 1“.

Allerdings viel schnell auf, das die virtuelle Hardware nicht vollständig lief. Das fing bei der Maus an und betraf unter anderem die virtuelle Netzwerkkarte. Letztere liese sich zwar auch über das Hinzufügen einer „Älteren Netzwerkkarte“ zum virtuellen Computer lösen, allerdings handelt es sich dabei dann nur um eine Fast Ethernet-Variante.

Den Versuch die Integrationsdienste zu installieren quittiert das Setup mit der Meldung, das diese schon laufen. Faktisch ist das allerdings nur ein Teil, soll heißen: Wenige Treiber, keine Dienste. Für die Dienste wurde bislang keine Lösung gefunden. Wichtig sind zunächst die Treiber.

Wichtig: Der Server läuft ohne die Treiber relativ langsam, so das etwas Geduld aufgebracht werden muss!

Vorbereitung ist alles

Damit man die Treiber über den Geräte-Manager installieren kann, müssen diese zunächst entpackt werden. Dazu auf dem Hyper-V Host die Datei „C:\Windows\System32\vmguest.iso“ einhängen oder entpacken und anschließend die Datei „support\amd64\Windows6.2-HyperVIntegrationServices-x64.cab“ entpacken. Das geht mit Bordmitteln oder z.B. mit 7-Zip.

Variante 1:

In jeden Unterordner der eine *.inf-Datei enhält die Datei „update.cat“ kopieren, die *.inf-Datei editieren und folgende Zeile einfügen:

CatalogFile=update.cat

Danke an Luxx für den Tipp (Siehe Kommentare).

Variante 2:

Das SDK für Windows 8.1 herunterladen:

Windows Software Development Kit (SDK) für Windows 8.1

Die Installationsdatei ausführen, angeben das man lediglich Herunterladen möchte und nur das „Windows App Certification Kit“ benötigt.

Folgendes Skript unter dem Namen „Treiber-signieren.cmd“ abspeichern:

@echo off

title Treiber signieren ...

rem Konfiguration

 set SDKPath=C:\Program Files (x86)\Windows Kits\8.1\bin\x64
 cd "%SDKPath%"

rem Zertifikat erzeugen

 makecert -r -ss MeineZertifikate -n "CN=Microsoft Windows - Hyper-V" -sr LocalMachine

rem Zertifikate kopieren

 cls
 echo Das neuerstellte Zertifikate muss sowohl zu
 echo "Vertrauenswuerdige Stammzertifizierungstelle" als auch zu
 echo "Vertrauenswuerdige Herausgeber" kopiert werden.
 echo.
 echo Erst wenn dies erfolgt ist, eine beliebige Taste druecken!
 echo.
 pause
 echo.

rem Treiber signieren

 rem Microsoft Hyper-V-Eingabe
  signtool sign -a -s MeineZertifikate -n "Microsoft Windows - Hyper-V" "C:\Windows\System32\DRIVERS\VMBusHID.sys"

 rem Microsoft Hyper-V-Video
  signtool sign -a -s MeineZertifikate -n "Microsoft Windows - Hyper-V" "C:\Windows\System32\DRIVERS\HyperVideo.sys"

 rem Microsoft Hyper-V-Netzwerkadapter
  signtool sign -a -s MeineZertifikate -n "Microsoft Windows - Hyper-V" "C:\Windows\System32\DRIVERS\netvsc63.sys"
  signtool sign -a -s MeineZertifikate -n "Microsoft Windows - Hyper-V" "C:\Windows\System32\NetVscCoinstall.dll"
  signtool sign -a -s MeineZertifikate -n "Microsoft Windows - Hyper-V" "C:\Windows\System32\netvscres.dll"

 rem Microsoft Hyper-V S3 Cap
  signtool sign -a -s MeineZertifikate -n "Microsoft Windows - Hyper-V" "C:\Windows\System32\DRIVERS\vms3cap.sys"

 rem Microsoft Hyper-V-Generieungszähler
  signtool sign -a -s MeineZertifikate -n "Microsoft Windows - Hyper-V" "C:\Windows\System32\DRIVERS\vmgencounter.sys"

 rem Microsoft Hyper-V - Virtuelle Tastatur
  signtool sign -a -s MeineZertifikate -n "Microsoft Windows - Hyper-V" "C:\Windows\System32\DRIVERS\hyperkbd.sys"

rem BCD konfigurieren

 bcdedit /set TESTSIGNING ON

echo.
pause

Die entpackten Treiber, ggf. das StandaloneSDK und ggf. das Skript in die VHDX des virtuellen Computers kopieren.

Tipp: Die Dateien z.B. nach „C:\Temp“ o.ä. kopieren. Den Pfad möglichst kurz halten, das erspart später Tipperei.

Die Sache mit der Treiber-Signatur

Seltsam erscheint, das angeblich die Treiber nicht signiert sind oder Signaturinformationen fehlen. Das scheint aber nicht ganz zuzutreffen. In den Details der Treiber ist erkennbar, das manche Dateien signiert sind, manche wiederum (angeblich) nicht. Prüft man mit dem SignTool oder Sigverif bekommt man evtl. Ergebnisse wie das z.B. die Prüfung an einem (Root-)Zertifikat endet, dem nicht vertraut wird oder (bei Sigverif) alle Hyper-V Treiber nicht signiert wären.

Abhilfe schafft das Booten ohne erzwungene Treibersignatur und ggf. das anschl. Signieren der Treiber (Nur bei Variante 2!). Führt man dies nicht durch, so lassen sich die Treiber nicht installieren und die Treiber starten später nicht (Code 52).

Treiber der Integrationsdienste installieren

Die Treiber müssen für die betroffene Geräte über den Geräte-Manager installiert werden, das ist zwar ohne Maus etwas frickelig, aber machbar. Der imho kürzeste Weg lautet:

  • Den virtuellen Computer starten, „F8“ drücken und „Erzwingen der Treibersignatur deaktivieren“ auswählen.
  • Nachdem der virtuelle Computer gebootet ist und man sich angemeldet hat „Win+R“ drücken,
  • „devmgmt.msc“ eingeben,
  • mit der „Tab“-Taste zum Geräte-Baum springen,
  • über die Pfeiltasten zu den mit einem Ausrufezeichen markierten Gerät(en) wechseln,
  • „Enter“ drücken,
  • mit der „Tab“-Taste zu „Treiber aktualisieren“ wechseln und „Enter“ drücken,
  • „Auf dem Computer nach Treibersoftware suchen“ auswählen und „Enter“ drücken,
  • „Diese Treibersoftware trotzdem installieren“ auswählen und „Enter“ drücken.
  • Dieser Vorgang muss zunächst für alle Treiber mit einem Ausrufezeichen und anschließend für alle Treiber mit einem Fragezeichen wiederholt werden.

Die Maus als auch Netzwerk (und weiteres) sollten nun funktionieren.

SDK installieren, Zertifikat erstellen und Treiber signieren (Nur bei Variante 2!)

Damit nicht bei jedem Bootvorgang „F8“ (usw.) gedrückt werden muss, wird ein eigenes Zertifikat erstellt, diesem dem System hinzugefügt und es werden die Treiber mit diesem Zertifikat signiert. Abschließend muss der BCD angepasst werden.

Als Grundlage für dieses Vorgehen dienen folgende Seiten:

Microsoft TechNet – Schritte zum Signieren eines Gerätetreiberpakets

UNAWAVE – Zertifikat erstellen und die gepatchte Kernel-Datei signieren

Um etwas Arbeit zu ersparen wurde ein Skript erstellt, dass das Zertifikat erstellt, die Treiber signiert und den BCD konfiguriert. Einzig das Kopieren des Zertifikats muss man von Hand vornehmen.

Zunächst muss das SDK installiert werden. Im Anschluss das Skript „Treiber-signieren.cmd“ mit erhöhten Rechten ausführen. Sobald folgende Meldung erscheint

Hyper-V - Foundation-Server - Treiber signieren-SigTool

  • eine MMC öffnen,
  • das „Zertifikate“-Snap-In für das lokale Computerkonto hinzufügen,
  • zu „MeineZertifikate – Zertifikate“ wechseln,
  • dort das Zertifikat „Microsoft Windows – Hyper-V“ kopieren und sowohl bei „Vertrauenswürdige Stammzertifizierungstellen“ als auch „Vertrauenswürdige Herausgeber“ einfügen.
  • Nun für das Skript eine beliebige Taste drücken.

Hyper-V - Foundation-Server - Treiber signierenSobald das Skript durchgelaufen ist, den Server normal (d.h. ohne „F8…“) starten. Anschließend kann wie bei jeder Migration die IP-Konfiguration wiederhergestellt und alle notwendigen Anpassung (Alte Treiber deinstallieren, …) durchgeführt werden.

Neuinstallation

Versucht man den Foundation-Server komplett von DVD oder ISO in einen virtuellen Computer zu installieren, so bleibt man ggf. bei der Eingabe des Produktschlüssels hängen. Die konkrekte Fehlermeldung dazu lautet:

"Der Product Key konnte nicht überprüft werden. Überprüfen sie bitte das Installationsmedium."

Ein möglicher Grund kann zuwenig Arbeitsspeicher sein, dieser sollte bei min. 2 GB liegen. Ob eine Netzwerkverbindung vorhanden ist spielt keine Rolle.

Abhilfe schafft der „Generic Installation Key“: PN24B-X6THG-274MF-YHM9G-H8MVG

Quelle: Windows Answer File Generator – Generic Installation Keys

Ob’s im Anschluss mit der Aktivierung unter Verwendung des vorhandenen Product Keys klappt wurde noch nicht getestet.

Als nächste Hürde steht man dann vor dem Problem, das nach dem Neustart beim Festlegen des Administrator-Kennworts weder Tastatur noch Maus funktionieren. Selbst über das „Zwischenablage“-Menü kann man nichts machen. Mögliche Abhilfe lauten:

  • Ein paar Minuten warten, im Hintergrund wird die Hardware eingerichtet. Die Tastatur funktioniert dann i.d.R..
  • „Shift + F10“ drücken, es öffnet sich eine Eingabeaufforderung, diese mit „exit“ wieder schließen. Nun sollte die Tastatureingabe in den Kennwort-Feldern möglich sein.
  • Den virtuellen Computer neustarten.

Wie zuvor weiter oben erwähnt müssen die Integrationsdienste bzw. deren Treiber installiert und ggf. signiert werden.

Beim Versuch mit den unterschiedlichen Generation (1 oder 2) stellte sich heraus, das offenbar „Generation 2“ nicht unterstützt wird:

Hyper-V - Generation 2 und Foundation-ServerOb es funktioniert, die Treiber bzw. Integrationsdienste offline in den virtuellen Computer einzufügen wurde noch nicht getestet. Das grundsätzliche Vorgehen ist hier beschrieben:

How to install integration services when the virtual machine is not running

Was nicht funktioniert

Bevor man auf den zuvor genannten Lösungsweg gekommen ist, wurden folgende Möglichkeiten erfolglos getestet:

ReadyDriver Plus – Mit Hilfe dieses Tools wird automatisch beim Start von Windows bei den erweiterten Startoptionen der Punkt ausgewählt, das die Treiber-Signaturprüfung deaktiviert werden soll. Leider funktioniert das nur unter Windows 7 oder neuer. Beim Windows Server wäre ein weiterer emulierten Tastendruck nötig, um den richtigen Eintrag zu aktivieren.

Windows Server - F8 - AV

Driver Signature Enforcement Overrider – Beim Test zeigte dieses Tool zumindest auf dem Windows Server keinerlei Wirkung.

Das Ändern des BCD mit den Befehlen

BCDEDIT /Set LoadOptions DDISABLE_INTEGRITY_CHECKS
BCDEDIT /Set TESTSIGNING ON

und einem Neustart änderte leider nichts.

Das in der *.cab-Datei enthaltene Zertifikat zu den vertrauenswürdigen Stammzertifizierungstellen und Herausgebern hinzuzufügen reicht ebenfalls nicht aus.

Das Kopieren von Treiberdateien aus einer Windows Server 2012 R2 Standard-Installation bringt nichts, da es binär die gleichen Dateien sind.

Weitere Quellen & Informationen

MSDN – SignTool.exe (Sign Tool)

MSDN – Using SignTool to Verify a File Signature

6 Kommentare

  • Moin,

    das mit den Treibern geht auch einfacher..

    Entpacke die .cab Datei und lege zu jeder inf datei die update.cat.

    Dann Editiere die .Inf wie folgt

    Catalogfile=Update.cat

    und schon sind die Treiber gültig signiert und lassen sich installieren..

  • Danke für den Tipp, habe es gerade getestet und den Beitrag erweitert.

    Einmalig (für die Dauer der Treiberinstallation) muss man die erzwungene Treibersignatur beim Starten via F8 deaktivieren, da man sonst folgende Meldung erhält:

    „Der Hashwert für die Datei ist in der angegebenen Katalogdatei nicht vorhanden. Die Datei ist wahrscheinlich beschädigt oder wurde unerlaubt verändert.“

  • Nice, vielen Dank. Variante 2 funktioniert tadellos…

  • Sali Andy

    Vielen Dank für die tolle Anleitung!

    …. gerade eben froh darum gewesen :-).

    Grüsse Dani

  • Andy,

    you saved my life!!!!! Variante 1 mit dem Tipp waren unbezahlbar!

    Grüße
    Thomas

  • Jo man!

    Danke für diesen geilen Tip!!
    hab schon zwei Nächte wegen der nötigen Virtualisierung eines Foundatin hinter mir – nu läuft dat Ding!!!

    Danke!!!!

Schreibe einen Kommentar

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