Erweiterung der WDS-Funktionalität: Hinzufügen der Möglichkeit, in UEFI zu booten.

Hallo zusammen!

In diesem Artikel werden die Schritte beschrieben, die erforderlich sind, um Ihrem WDS die Möglichkeit zu geben, im UEFI-Modus zu booten.

Das heißt, die Anleitung in diesem Artikel setzt voraus, dass Sie bereits eine ungefähr folgende Konfiguration haben:

1. Windows Server 2012R2 (oder neuer)
2. Vollständig konfiguriertes DHCP zur Verwendung mit WDS
3. Den WDS selbst
4. IIS
5. Virtuelle Maschine oder PC mit Ubuntu

Hier werden auch Schritte beschrieben, die mir nicht den gewünschten Erfolg gebracht haben.
Ich habe sie beschrieben, um die Suche zu erleichtern und Ihre Zeit zu sparen.

Vorwort

Ich habe einmal in der Arbeit einen WDS mit vielen Funktionen eingerichtet, da ich es leid war, ständig mit einer Menge USB-Sticks herumzulaufen und sie immer wieder neu zu beschreiben.

Diese Artikel haben mir damals übrigens geholfen:
WDS universell hinzufügen
PXE-Bootmenü mit System Center Configuration Manager


So sieht das aus

Erweiterung der WDS-Funktionalität: Hinzufügen der Möglichkeit, in UEFI zu booten.

Und alles lief gut, neue Boot-Images wurden hinzugefügt, das WinPE-Image wurde mit neuen Funktionen erweitert und alles funktionierte.

Aber längst unterstützen nicht mehr alle Geräte den BIOS-/Legacy-Bootmodus, oder wenn sie es tun, kann die Aktivierung an einem sehr unauffälligen Ort liegen.

Und die Installation von Windows im Legacy-Modus, wenn die Möglichkeit besteht, im UEFI-Modus zu installieren – das ist nicht optimal.

Letztendlich entschied ich mich, die Möglichkeit der Bootunterstützung in UEFI hinzuzufügen, und begann, bei Google zu suchen.

Allerdings konnte ich keine strukturierte Information finden, wie man ein funktionierendes WDS + UEFI erhält.
Genau aus diesem Grund habe ich beschlossen, diesen Artikel zu schreiben.

Bevor ich beginne, möchte ich das Problem beschreiben, das mir am meisten Zeit gekostet hat.

Beim Hinzufügen von UEFI zu WDS könnte eine folgende, eher offensichtliche Situation auftreten:

Wenn Sie eine Startdatei zu WDS hinzufügen und beim Versuch, auf dem Gerät zu booten
unter UEFI den folgenden Text sehen:
Das ausgewählte Bootgerät ist fehlgeschlagen. Drücken Sie <Enter>, um fortzufahren.
Oder Bootgerät nicht gefunden
Aber das Booten im Legacy-Modus funktioniert.
Einer der möglichen Gründe könnte das Fehlen der Datei wdsmgfw.efi,
unter folgendem Pfad sein: %WDSpath%Bootx64wdsmgfw.efi

Sie können sie hier finden: C:WindowsSystem32RemInstbootx64wdsmgfw.efi
Oder, falls diese Datei aus irgendeinem Grund fehlt, habe ich sie hochgeladen auf Google.
Für diese Lösung danke ich den Jungs von Reddit.

Mit diesem Problem habe ich die meiste Zeit verloren, da ich dachte, dass das Problem in der Konfiguration von WDS oder DHCP lag.

Ich habe Richtlinien konfiguriert, indem ich Vendor Classes (Anbieterkategorien) für verschiedene Architekturen hinzugefügt und die DHCP-Optionen 060, 066, 067 eingestellt habe. Anleitung für die Konfiguration von DHCP-Richtlinien.

Architekturen im ASCII für die Konfiguration von DHCP

PXEClient:Arch:00000 — BIOS/Legacy
PXEClient:Arch:00006 — UEFI x86
PXEClient:Arch:00007 — UEFI x64

Ich habe auch verschiedene Varianten von Bootdateien ausprobiert. .efi

  • syslinux
  • grub 2

Ich habe auch versucht, das Problem im Ereignisprotokoll zu finden.
win + r -> eventvwr -> Anwendungs- und Dienstprotokolle -> Microsoft -> Windows -> Deployment-Services-Diagnostics

Wie ich bereits oben erwähnt habe, lag das Problem in der Datei. wdsmgfw.efi.
Entweder habe ich sie versehentlich gelöscht oder sie wurde bei der Installation nicht kopiert.
und der Konfiguration von WDS.

Nun, machen wir weiter!

Anleitung

Schritt 1 — Überprüfung der Funktionsfähigkeit von WDS

Nehmen Sie ein beliebiges Gerät oder eine virtuelle Maschine, die das Booten im UEFI-Modus über das Netzwerk unterstützt, und versuchen Sie, zu booten.

Folgendes sollten Sie sehen:

Erweiterung der WDS-Funktionalität: Hinzufügen der Möglichkeit, in UEFI zu booten.

Wenn ja, ist alles in Ordnung, wir können fortfahren.
Wenn nicht, schauen Sie, was ich im Vorwort geschrieben habe.

Schritt 2 — Erstellung der Bootdatei iPXE

Starten Sie das vorbereitete Ubuntu, öffnen Sie das Terminal und fügen Sie diese Zeile ein:

git clone https://git.ipxe.org/ipxe.git ipxe

Erweiterung der WDS-Funktionalität: Hinzufügen der Möglichkeit, in UEFI zu booten.

Hier möchte ich einen kleinen Hinweis geben, dass es in Ubuntu nötig sein könnte, die Pakete zu installieren, die für die Kompilierung von C und C++ erforderlich sind.
Ich hatte sie bereits installiert.

Heruntergeladen? — Großartig!
Jetzt müssen wir die Konfigurationsdatei für den Build erstellen.
Im Terminal geben wir ein:

cd ipxe/src
gedit chain.ipxe

Fügen Sie in diese Datei den folgenden Code ein und speichern Sie anschließend:

#!ipxe

dhcp
chain http://%IP-address-your-IIS-server%/install.ipxe

Gehen Sie erneut ins Terminal und starten Sie die Kompilierung:

make bin-x86_64-efi/ipxe.efi EMBED=chain.ipxe

Erweiterung der WDS-Funktionalität: Hinzufügen der Möglichkeit, in UEFI zu booten.

Wenn alles in Ordnung ist, sollten Sie die folgende Ausgabe im Terminal erhalten:

Erweiterung der WDS-Funktionalität: Hinzufügen der Möglichkeit, in UEFI zu booten.

Und die Datei ipxe.efi, unter dem Pfad: ipxe/src/bin-x86_64-efi/ipxe.efi
Falls es Ihnen aus irgendeinem Grund nicht gelungen ist, selbst zu kompilieren,
habe ich meine beigefügt. eine Datei.
Er ist für das Booten von http://192.168.0.100/install.ipxe

Damit wären wir mit Ubuntu fertig.

Schritt 3 — Hinzufügen von ipxe.efi zu WDS

Nehmen Sie die Datei, die wir im zweiten Schritt erhalten haben, und kopieren Sie sie unter dem Pfad:
%WDSpath%Bootx64%your-boot-folderIBOOT
Benennen Sie sie dann in BOOTX64.EFI um.
Das ist nicht zwingend notwendig, ist aber einfacher.

Starten Sie dann cmd als Administrator und geben Sie die folgenden Befehle ein:

wdsutil /set-server /bootprogram:Bootx64%your-boot-folderIBOOTBOOTX
64.EFI /architecture:x64uefi
und
wdsutil /set-server /N12bootprogram:Bootx64%your-boot-folderIBOOTBOOTX
64.EFI /architecture:x64uefi

Damit legen wir die erhaltene Datei zum Booten über WDS fest.

Überprüfen wir die Konfiguration:

wdsutil /get-server /Show:Config

Erweiterung der WDS-Funktionalität: Hinzufügen der Möglichkeit, in UEFI zu booten.

Ich habe auch die Datei ipxe.efi kopiert, sie in BOOTIA32.EFI umbenannt und das Booten für sie konfiguriert, nur für den Fall. architecture:x86uefi
Aber im Grunde genommen macht das keinen Sinn, da die Datei Bootmgfw.efi x86 nicht unterstützt.

Lassen Sie uns sehen, was wir erreicht haben.
Erweiterung der WDS-Funktionalität: Hinzufügen der Möglichkeit, in UEFI zu booten.
Perfekt, WDS lädt unsere Datei hoch und sucht dafür nach der Konfiguration unter folgendem Pfad: http://192.168.0.100/install.ipxe

Schritt 4 — Menükonfiguration

Navigieren Sie zum Stammverzeichnis Ihrer Website.
Standardmäßig ist dies: C:inetpubwwwroot

Erstellen Sie eine Textdatei install.ipxe.

und konfigurieren Sie sie gemäß Dokumentation und Ihren Bedürfnissen.
Es gibt auch ein russischsprachiges Beschreibung Befehls.
Ich habe die dieser Anleitung zur Konfiguration meines WDS verwendet.

Beispielkonfiguration für install.ipxe

#!ipxe

:start
menu Please choose an operating system to start/install
item --gap Start Win PE
item WinPE-x64 WinPE x64
item --gap ipxe shell
item shell       Drop to iPXE shell

choose target && goto ${target}

:failed
echo Booting failed, dropping to shell
goto shell

:shell
echo Type 'exit' to get the back to the menu
shell
set menu-timeout 0
set submenu-timeout 0
goto start

:WinPE-x64
kernel http://192.168.0.100/wimboot
initrd http://192.168.0.100/peSE/Boot/bcd
initrd http://192.168.0.100/peSE/Boot/boot.sdi
initrd http://192.168.0.100/peSE/Boot/peSE64.wim
boot || goto failed

Über die Konfiguration zum Laden von winPE können Sie lesen hier.

Schritt 5 — MIME-Typen

Nachdem Sie das Menü erstellt und alle erforderlichen Dateien in das Stammverzeichnis IIS hinzugefügt haben,
müssen Sie den Zugriff darauf gewähren.

Denn selbst wenn Sie versuchen, die Datei über den Browser herunterzuladen, erhalten Sie einen Fehler: HTTP 404.3 - Nicht gefunden.
Erweiterung der WDS-Funktionalität: Hinzufügen der Möglichkeit, in UEFI zu booten.

Dazu müssen Sie in der IIS-Verwaltungsschnittstelle MIME-Typen hinzufügen, entsprechend
den Datei-Erweiterungen, die Sie über HTTP hochladen möchten.

Ich habe nicht nach dem besten MIME-Typ für diese Zwecke gesucht und habe application/octet-streamfestgelegt, wonach alles funktionierte.

Für Dateien ohne Erweiterung verwenden Sie einen Punkt.

So:

Erweiterung der WDS-Funktionalität: Hinzufügen der Möglichkeit, in UEFI zu booten.

Fazit

Am Ende haben wir die Möglichkeit, über das lokale Netzwerk über UEFI zu booten.

Wenn wir alles richtig gemacht haben, sollte das Auswahlmenü für den Bootvorgang ungefähr so aussehen:

Erweiterung der WDS-Funktionalität: Hinzufügen der Möglichkeit, in UEFI zu booten.

Wenn Sie die erforderlichen Tools bereit haben und sich nicht mit der Konfiguration aufhalten, dauert es ungefähr 10-20 Minuten, um diese Funktion zu realisieren.
Bei mir hat es 2 Arbeitstage gedauert, da ich viel googeln musste.

Viel Erfolg bei der Umsetzung!

Vielen Dank für Ihre Aufmerksamkeit und ein großes Dankeschön an die Personen, deren Artikel mir geholfen haben!
Auf Habr heißt es: Ingtar und Deeptown.

Quelle: habr.com

Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server 🔥 Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server | ProHoster