Die Verwendung vom Microsoft Hyper-V VMs für die Citrix Provisioning Services Zielsysteme gestaltet sich etwas schwierig, da es unter Hyper-V die Problematik der sogenannten Syntetic Netzwerkkarte gibt die eine GUID hat die an jeder Hyper-V VM anders ist, für die Citrix Provisioning Services aber an allen Systemen gleich sein muss.
Innerhalb der Citrix Provisioning Service Dokumentation findet man deshalb den Hinweis, dass Hyper-V nur unterstützt wird, wenn die VMs mittels des XenDesktop Setup Wizard innerhalb der Provisiong Services Konsole erstellt werden, denn dann sorgt dieser Wizard für eine einheitliche GUID. Original Zitat: „XenDesktop Setup Wizard is the only Citrix supported method of creating Hyper-V Gen2 VMs”. Der Provisioning Services XenDesktop Setup Wizard setzt jedoch voraus, dass man System Center Virtual Machine Manager (SCVMM) zum Verwalten von Hyper-V verwendet. Hat mein kein SCVMM für sein Hyper-V sondern möchte ein einzelnes Hyper-V System verwenden (z.B. für eine Demo oder Testumgebung), dann gibt es anderweitige Möglichkeiten dies zu bewerkstelligen, wenn auch nicht offiziell von Citrix supported.
Von Citrix gibt es diesbezüglich den KB Artikel https://support.citrix.com/article/CTX216823 der das Vorgehen meiner Meinung nach nur sehr dürftig erklärt, ich habe einige Anläufe benötigt bis es funktioniert hat, aus diesem Grund möchte ich nun mit diese Schritt für Schritt Anleitung aufzeigen, wie es genau geht.
Als erstes starten wir mit der Erstellung einer Hyper-V VM vom Type „Generation 2“
Speicher und Festplatte wählt man nach Belieben, das Netzwerk konfiguriert man vorerst nicht, und bzgl. Betriebssystem wählt man „Betriebssysteminstallation zu einem späteren Zeitpunkt“
Nachdem man die VM erstellt hat muss man nun für die einheitliche GUID der Netzwerkkarte der VM sorgen, hierzu findet man auf dem Provisioning Services Server das PowerShell Skript „C:\ProgramData\Citrix\Provisioning Services\PvsGen2.cr\pvsgen2.ps1“
Dieses Script muss man auf das Hyper-V System kopieren, in Zeile 2 muss man den Namen seiner VM eintragen, und danach führt man das Skript aus. Das Skript fügt der VM nun eine Netzwerkkarte hinzu mit der GUID {c40165e3-3bce-43f6-81ec-8733731ddcba}.
Nun wechselt man in die Hyper-V Verwaltungskonsole und die Einstellungen der VM zu bearbeiten. Die erste Netzwerkkarte mit dem Namen „Netzwerkkarte“ wird gelöscht, da nur die neue durch das Skript angelegte Netzwerkkarte mit dem Namen „PVS Streaming Adapter“ benötigt wird.
Nun konfiguriert man die „PVS Streaming Adapter“ Netzwerkkarte, man fügt ihr das geünschte Netzwerk mittels Virtuellen Switch hinzu, und optional empfehle ich auch die Vergabe einer statischen MAC Adresse statt der automatisch generierten.
Da Hyper-V Gen 2 VMs per Default Secure Boot aktiv haben, dies von den Provisioning Services aber nicht unterstützt wird, ist dies zu deaktivieren.
In den Firmware Einstellungen der VM sorgen wir für den PXE Boot noch dafür, dass in der Startreihenfolge die Netzwerkkarte vor der Festplatte ist.
Nun ist die VM Hülle fertig konfiguriert. Wenn es sich um die erste VM handelt die als Golden Master System verwendet werden soll, kann nun mit der Installation des Betriebssystems begonnen werden. Handelt es sich um VM 2-n die als Zielsystem dient, sind keine weiteren Schritte an der VM nötig.
Wichtig: Bitte darauf achten, dass sowohl die VM für das Goldem Master System, als auch VM 2-n für die weiteren Zielsystem so wie hier beschrieben erstellt wird, alle brauchen die gleiche GUID. Ohne identische GUID wird es beim Booten mittels PVS zu einem Bluescreen kommen.
Da Hyper-V bei VMs vom Typ „Generation 2“ kein BIOS sondern UEFI verwenden sind am Provisioning Server dafür einige zusätzliche Konfigurationsschritte nötig. Es muss dafür gesorgt werden, dass in den DHCP Optionen zusätzlich die DHCP Option 11 RLP Server oder DHCP Option 17 Root Path gesetzt wird. Außerdem muss noch dafür gesorgt werden, dass als Bootfile nicht mehr ardbp32.bin sondern pvsnbpx32.efi bzw. pvsnbpx64.efi verwendet wird. Dies kann man entweder direkt über die DHCP Option 67 Bootfile Name machen, oder über das BOOTPTAB Hilfsprogramm auf dem Provisioning Server. Weiterführende Informationen hierzu findet man unter https://docs.citrix.com/en-us/provisioning/current-release/configure/configure-uefi
Zum Abschluss noch ein Hinweis zur Version, dieser Artikel entstand auf Basis Citrix Provisioing Services 7.15 LTSR CU2 und Hyper-V auf Windows 10 1803.
Andreas, thanks for this article. After a few days of headaches i managed to make it work by reading your article. Citrix should have a similar document.