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
- 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. 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:
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.
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
Verheiratet, Vater von zwei Kindern, eines an der Hand, eines im Herzen. Schon immer Technik-Freund, seit 2001 in der IT tätig und seit über 10 Jahren begeisterter Blogger. Mit meiner Firma IT-Service Weber kümmern wir uns um alle IT-Belange von gewerblichen Kunden und unterstützen zusätzlich sowohl Partner als auch Kollegen.
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!!!!
Vielen Dank! Für die Vorbereitung und Variante 1 hätte ich noch zwei Powershell Zeilen (der Rest ist nur Optik)
# cab Datei entpacken und in allen inf Dateien eine Zeile ergänzen
$cabFile=”E:supportamd64Windows6.2-HyperVIntegrationServices-x64.cab”
$fString=[regex]::Escape(‘[Version]’) # wegen der Klammer []
$rString=”$&`nCatalogFile=update.inf” # Der String der gefunden wurde + NL + Text
# Zielpfad frisch machen
$DestDir = (split-path $cabFile -leaf) -replace ‘.cab’
if ($DestDir) {rm $DestDir}
md $DestDir
# cab datei auspacken
cmd.exe /c “C:WindowsSystem32expand.exe -F:* $cabFile $DestDir”
#replace in den inf Dateien
gci -Recurse $DestDir |where {$_.name -like “*.inf”}|% {(Get-Content $_.fullname) -replace $fString, $rString| Set-Content $_.fullname}
Der Code den ich oben gepostet habe hat leider noch einen Fehler (update.inf muss update.cat heissen und die Datei muss mit kopiert werden).
Aber es macht wenig Sinn, den zu korrigieren: Das Webinterface korrigiert alle Anführungszeichen und damit ist der Code eh unbrauchbar. Ich habe noch einen Weg gefunden die Treiber mit dism offline einfach in die fertige VHD einzuspielen, da kann man sich die mühsame manuelle Installation und den Start über F8 ersparen.
Ich mache einfach einen kurzen Artikel in meinem Blog, der Link wird offenbar unter meinen Name gelegt. 🙂
Eine Weg die Services zu integrieren habe ich leider auch nicht gefunden. Ich denke MS hat den Start der Dienste (und die Installation) an irgendeiner Stelle schlicht von der Systemkennung her verboten.
Einfach nur danke!! Version 1 hat super funktioniert.
Hat mich weitergeführt.
Da bei neueren Hyper-V Versionen allerdings kein vmguest.iso dabei ist gibt es diese bei Microsoft zum Download.
support.microsoft.com – hyper-v-integration-components-update-for-windows-virtual-machines
https://support.microsoft.com/en-us/topic/hyper-v-integration-components-update-for-windows-virtual-machines-8a74ffad-576e-d5a0-5a2f-d6fb2594f990
cab in die vhd entpacken, mit F8 starten, dann lassen sich diese über den Gerätemanager installieren.
Das brachte einen mit dvd2vhd gesicherten Server 2012 R2 Foundation in eine VM.
Hallo Kollegen, hallo Andy,
vielen Dank für die tolle Anleitung, ich habe damit alle fühlbaren (oben beschriebenen) Auffälligkeiten beseitigt bekommen, allerdings fehlen mir die ganzen (7) Hyper-V-Dienste.
Habt ihr die irgendwie installiert bekommen?
Hallo Marco,
vielen Dank.
Kurze und knackige Antwort zu deiner Frage: Nein.
Gruß
Andy
I’m trying to do this with a Server 2012 Foundation install myself currently.
Do I always have to manually boot windows and select use unsigned drivers ?
I have a production environment I would like to convert to Hyper-V.
No, Variant 1 ist the way to go.
You have to exract “C:WindowsSystem32vmguest.iso” and then
extract “supportamd64Windows6.2-HyperVIntegrationServices-x64.cab”.
Copy or create now in every folder which contains an “*.inf” an “update.cat” which contains the following line:
CatalogFile=update.cat
Now you can install the drivers with the device manager.
FIY: This this blogpost was writen in 2016, i have no idea if this is working nowadays.
The “vmguest.iso” is missing in Windows since Server 2016 and Windows 10. It seems the components can be downloaded here:
Hyper-V integration components update for Windows virtual machines
hi, i also have the same problem. I have done all the steps but it keeps saying the driver is not digitally signed.
I copied the update.cat file in each folder and added CatalogFile = update.cat inside the * .inf files
I correct myself. it worked. By installing the modified drivers after temporarily disabling digital signature checking
Thank you
Hallo zusammen,
Stehe grad vor dem selben Problem, habe Variante 1 gewählt. Bekomme ebenfalls die Meldung:
“Der Hashwert für die Datei ist in der angegebenen Katalogdatei nicht vorhanden. Die Datei ist wahrscheinlich beschädigt oder wurde unerlaubt verändert.”
Kann die Treiber dann zwar via F8 und der deaktivierten Treibersignatur installieren, jedoch kommt dann beim erneuten Start dass die Treiber nicht gestartet werden können (Code 52).
Hab jetzt mehrfach die Anleitung gelesen, finde aber nicht, was ich vergessen haben könnte.
Kann mir zufällig jemand auf die Sprünge helfen?
Lieben Dank