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 ü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.
Als nächstes 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, das StandaloneSDK und 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 seien 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 das anschl. Signieren der Treiber. Führt man dies nicht durch, so lassen sich die Treiber nicht installiert 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
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.
Sobald 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.
Abhilfe schafft das Neustarten des virtuellen Computers. Anschließend gelangt man wieder zur gleichen Stelle, mit dem Unterschied das nun die Tastatur funktioniert. Es kann eine Weile dauern, bis die Anmeldemaske erscheint.
Einfach ein paar Minuten warten, im Hintergrund wird die Hardware eingerichtet. Die Tastatur funktioniert dann i.d.R.. Wie zuvor weiter oben erwähnt müssen die Integrationsdienste bzw. deren Treiber installiert und signiert werden.
Beim Versuch mit den unterschiedlichen Generation (1 oder 2) stellte sich heraus, das offenbar „Generation 2“ nicht unterstützt wird:
Ob 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