Erweiterung der WDS-Funktionalität: Hinzufügen der UEFI-Boot-Funktion

Hallo an alle!

In diesem Artikel werden die Schritte beschrieben, die Sie ausführen müssen, um Ihrem WDS UEFI-Startfähigkeit hinzuzufügen.

Diese. Bei den Anweisungen in diesem Artikel wird davon ausgegangen, dass Sie bereits über die folgende Konfiguration verfügen:

1. Windows Server 2012R2 (или новее)
2. Полностью настроенный DHCP для работы с WDS
3. Собственно сам WDS
4. IIS
5. Виртуальная машина или ПК с Ubuntu

Außerdem werden hier Aktionen beschrieben, die bei mir nicht das richtige Ergebnis gebracht haben.
Ich habe sie beschrieben, um die Suche zu erleichtern und Ihnen Zeit zu sparen.

Vorwort

Ich habe bei der Arbeit ein WDS mit vielen Leckereien gemacht, tk. Ich bin es leid, ständig mit einem Haufen Flash-Laufwerken herumzulaufen und sie zu überschreiben.

Diese Artikel haben mir übrigens geholfen:
Hinzufügen von WDS-Vielseitigkeit
PXE-Startmenü mit System Center Configuration Manager


Es sieht aus wie das

Erweiterung der WDS-Funktionalität: Hinzufügen der UEFI-Boot-Funktion

Und alles war in Ordnung, neue Bilder wurden zum Laden hinzugefügt, das winPE-Image erhielt neue Funktionen und alles funktionierte.

Aber bei weitem nicht alle Geräte unterstützen den BIOS-/Legacy-Startmodus, oder wenn doch, dann kann seine Einbindung an einer sehr nicht offensichtlichen Stelle erfolgen.

Ja, und die Installation von Windows im Legacy-Modus, wenn eine Installation in UEFI möglich ist, ist nicht cool.

Aus diesem Grund beschloss ich, die Möglichkeit zum Booten in UEFI hinzuzufügen, und ging zu Google.

Ich habe jedoch keine strukturierten Informationen dazu gefunden, wie ich ein funktionierendes WDS + UEFI bekomme.
Eigentlich habe ich mich deshalb entschieden, diesen Artikel zu schreiben.

Bevor ich anfange, werde ich das Problem beschreiben, das die meiste Zeit in Anspruch genommen hat.

Beim Hinzufügen von UEFI zu WDS ist die folgende, eher nicht offensichtliche Situation möglich:

Wenn Sie WDS eine Startdatei hinzufügen und versuchen, auf dem Gerät zu starten
In UEFI sehen Sie den folgenden Text:
The selected boot device failed. Press <Enter> to Continue.
Oder Boot Device Not Found
Aber das Laden in Legacy funktioniert für Sie.
Dann ist eine der möglichen Optionen das Fehlen einer Datei wdsmgfw.efi,
Weitere Beiträge: %WDSpath%Bootx64wdsmgfw.efi

Du kannst es hier mitnehmen: C:WindowsSystem32RemInstbootx64wdsmgfw.efi
Oder wenn Ihnen diese Datei aus irgendeinem Grund fehlt, habe ich sie auf gepostet Google.
Für diese Lösung, vielen Dank Jungs von reddit.

Mit diesem Problem habe ich die meiste Zeit totgeschlagen, weil. Ich dachte, das Problem liege irgendwo in der WDS- oder DHCP-Konfiguration.

Konfigurierte Richtlinien durch Hinzufügen von Herstellerklassen für verschiedene Architekturen und Konfigurieren der DHCP-Optionen 060, 066, 067. Unterricht zum Konfigurieren von DHCP-Richtlinien.

Architekturen in ASCII zur Konfiguration von DHCP

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

Außerdem habe ich verschiedene Optionen für Bootdateien ausprobiert. .efi

  • syslinux
  • grub 2

Ich habe auch versucht, das Problem im Ereignisprotokoll zu finden.
win + r -> eventvwr -> Журналы приложений и служб -> Microsoft -> Windows -> Deployment-Services-Diagnostics

Aber wie ich oben sagte, lag das Problem in der Datei wdsmgfw.efi.
Entweder habe ich es versehentlich selbst gelöscht oder es wurde bei der Installation nicht kopiert
und Konfigurieren von WDS.

Nun, fangen wir an!

Unterricht

Stufe 1 – Überprüfen Sie, ob WDS funktioniert

Nehmen Sie ein beliebiges Gerät oder eine virtuelle Maschine mit Unterstützung für das Booten im UEFI-Modus über das Netzwerk und versuchen Sie zu booten.

Sie sollten das folgende Bild haben:

Erweiterung der WDS-Funktionalität: Hinzufügen der UEFI-Boot-Funktion

Wenn ja, großartig, Sie können fortfahren.
Wenn nicht, dann lesen Sie, was ich im Vorwort geschrieben habe.

Stufe 2 – Erstellen der iPXE-Boot-Datei

Wir starten das vorbereitete Ubuntu, öffnen ein Terminal und fügen diese Zeile ein:

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

Erweiterung der WDS-Funktionalität: Hinzufügen der UEFI-Boot-Funktion

An dieser Stelle möchte ich noch eine kleine Bemerkung machen, dass man möglicherweise Pakete zu Ubuntu hinzufügen muss, die für die Kompilierung von C und C++ notwendig sind.
Ich habe sie gerade installiert.

Heruntergeladen? - Großartig!
Jetzt müssen Sie eine Konfigurationsdatei für die Baugruppe erstellen.
Im Terminal schreiben wir:

cd ipxe/src
gedit chain.ipxe

Fügen Sie den folgenden Code in diese Datei ein und speichern Sie ihn:

#!ipxe

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

Wir gehen zurück zum Terminal und starten die Kompilierung:

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

Erweiterung der WDS-Funktionalität: Hinzufügen der UEFI-Boot-Funktion

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

Erweiterung der WDS-Funktionalität: Hinzufügen der UEFI-Boot-Funktion

Und Datei ipxe.efi, auf dem Weg: ipxe/src/bin-x86_64-efi/ipxe.efi
Wenn Sie aus irgendeinem Grund nicht selbst kompilieren können,
Ich habe meine beigefügt Datei.
Es wird zum Booten kompiliert http://192.168.0.100/install.ipxe

Das ist alles für Ubuntu.

Schritt 3 – ipxe.efi zu WDS hinzufügen

Wir nehmen die Datei, die wir im zweiten Schritt erhalten haben, und kopieren sie nebenbei:
%WDSpath%Bootx64%your-boot-folder%EFIBOOT
Nachdem wir es in BOOTX64.EFI umbenannt haben.
Es ist nicht notwendig, es ist nur bequemer.

Dann starten wir cmd im Namen des Administrators und schreiben Sie die folgenden Befehle:

wdsutil /set-server /bootprogram:Bootx64%your-boot-folder%EFIBOOTBOOTX
64.EFI /architecture:x64uefi
и
wdsutil /set-server /N12bootprogram:Bootx64%your-boot-folder%EFIBOOTBOOTX
64.EFI /architecture:x64uefi

Dadurch wird die resultierende Datei so eingestellt, dass sie über WDS heruntergeladen wird.

Schauen wir uns die Konfiguration an:

wdsutil /get-server /Show:Config

Erweiterung der WDS-Funktionalität: Hinzufügen der UEFI-Boot-Funktion

Ich habe auch die Datei ipxe.efi kopiert, sie in BOOTIA32.EFI umbenannt und für alle Fälle den Start konfiguriert. architecture:x86uefi
Aber im Großen und Ganzen macht das keinen Sinn, weil. Die Datei Bootmgfw.efi unterstützt x86 nicht

Schauen wir uns an, was passiert ist.
Erweiterung der WDS-Funktionalität: Hinzufügen der UEFI-Boot-Funktion
Großartig, WDS sendet unsere Datei zum Download und sucht wiederum nach der Konfiguration entlang des Pfads: http://192.168.0.100/install.ipxe

Schritt 4 – Menükonfiguration

Gehen Sie zum Stammordner Ihrer Site.
Der Standardwert ist: C:inetpubwwwroot

Erstellen Sie eine Textdatei install.ipxe.

und konfigurieren Sie es entsprechend Dokumentation und Ihre Bedürfnisse.
Es gibt auch eine russische Sprache описание Befehle.
Ich genoss diese Beachten Sie bei der Konfiguration Ihres WDS die Anweisungen.

install.ipxe-Konfigurationsbeispiel

#!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

Sie können sich über die Konfiguration zum Laden von winPE informieren hier.

Stufe 5 – MIME-Typen

Nachdem Sie das Menü erstellt und alle erforderlichen Dateien zum IIS-Stammordner hinzugefügt haben,
Sie müssen ihnen Zugriff gewähren.

Weil Selbst wenn Sie versuchen, eine Datei über den Browser herunterzuladen, wird an der Adresse eine Fehlermeldung angezeigt: HTTP 404.3 - Not Found.
Erweiterung der WDS-Funktionalität: Hinzufügen der UEFI-Boot-Funktion

Dazu müssen Sie entsprechende MIME-Typen in der IIS-Systemsteuerung hinzufügen
mit Dateierweiterungen, die Sie über http herunterladen.

Ich habe nicht gesucht, welcher MIME-Typ für diesen Zweck am besten geeignet ist, sondern nachgefragt application/octet-stream, danach hat alles funktioniert.

Für Dateien ohne Erweiterung verwenden Sie einen Punkt.

So:

Erweiterung der WDS-Funktionalität: Hinzufügen der UEFI-Boot-Funktion

Abschluss

Letztendlich erhalten wir die Möglichkeit, über UEFI über ein lokales Netzwerk zu booten.

Wenn wir alles richtig gemacht haben, wird es so etwas wie dieses Boot-Auswahlmenü geben:

Erweiterung der WDS-Funktionalität: Hinzufügen der UEFI-Boot-Funktion

Wenn Sie die grundlegenden Tools vorbereitet haben und sich nicht um die Konfiguration kümmern möchten, dauert die Implementierung dieser Funktion etwa 10 bis 20 Minuten.
Es hat bei mir 2 Arbeitstage gedauert, weil. Ich musste viel googeln.

Erfolgreiche Umsetzung!

Vielen Dank für Ihre Aufmerksamkeit und vielen Dank an die Menschen, deren Artikel mir geholfen haben!
Auf Habré ist es: Ingtar и Deeptown.

Source: habr.com

Kommentar hinzufügen