Syslinux 6.04 – Windows 10 ADK 1903 WinPE’s erstellen

Anmerkung:
Dies ist eine weiterführende Anleitung zu meinem Grundgerüst, basierend auf dem nachfolgenden Artikel:

https://www.german-syslinux-blog.de/synology-dsm-6-0-syslinux-6-04-pxetftpdhcp-server-einrichten/

In diesem Artikel geht es um das Erstellen von Windows 10 WinPE-Images, die sowohl über BIOS, als auch UEFI gestartet werden können. In meinem direkten Beispiel wird dies im BIOS-Modus über Syslinux mit Verweis auf den Windows-Boot-Manager geregelt oder optional durch das Tool Memdisk. Beides sind Varianten die ohne Probleme funktionieren. Im UEFI-Modus wird dann nur noch der Windows-Boot-Manager verwendet ohne das schöne Syslinux Menü. Zum Teil ist das dem Grund geschuldet, dass Syslinux im EFI Modus nicht Secure boot kompatibel ist und zum anderen kann aus der Syslinux EFI Umgebung der Windows-Boot-Manager nicht gestartet werden.

Bevor wir anfangen, möchte ich anmerken, dass dies eine sehr lange Anleitung wird. Es wäre vielleicht nicht verkehrt, sich noch einen Kaffee zu machen und nochmal kurz durchzuatmen.

Voraussetzungen:

Was brauchen Sie alles, damit Sie auch ein WinPE in aktuellster Version erstellen können?

Ein aktuelles Windows 10:

Ihr System, worüber Sie die WinPE’s erstellen wollen, muss ein aktuelles Windows 10 Build 1903 sein. Welche Version Sie haben, können Sie prüfen, wenn Sie unter Windows die Eingabeaufforderung öffnen und:

winver

eingeben.


Es gäbe natürlich die Möglichkeit, dass auch mit älteren Windows Versionen machen zu können, allerdings wollen sie doch, dass Sie mit der aktuellsten Version auch alle Windows Versionen installieren lassen könnten oder? Sollten Sie nicht das Build 1903 haben, wird der nächste Schritt in dieser Anleitung fehlschlagen. Daher updaten Sie zuerst über die Windows Update Funktion Ihr Windows 10 auf den aktuellsten Stand der Dinge.

Windows 10 ADK Build 1903 Download und Installation:
Des Weiteren laden Sie sich auf der Microsoftseite die aktuellste Windows 10 ADK Build 1903 Version für Ihr Betriebssystem herunter.

Klicken Sie unten auf

Download the Windows ADK for Windows 10, version 1903

Kopieren Sie diese Datei an einen beliebigen Ort und starten Sie dann die adksetup.exe. Wundern Sie sich nicht, das die Datei nur knappe 2 MB groß ist, denn das ist ein Onlineinstaller. Es werden etliche GB aus dem Internet heruntergeladen werden müssen. Während dem Setup ist es ratsam, alle Dateien für einen anderen Rechner herunterzuladen als Installationsmethode zu wählen, denn dann haben Sie diese Dateien alle und müssten diese nicht erneut herunterladen, wenn sie das auf einem anderen Rechner ebenfalls einrichten wollten.

Die heruntergeladenen Pakete speichert die adksetup.exe in den selbst angelegten “Installers” Ordner.
Die “UserExperienceManifest.xml” Datei gehört ebenfalls dazu!

Rufen Sie im Anschluss die adksetup.exe auf und wählen Sie den Punkt Bereitstellungstools aus. Klicken Sie auf Installieren. Dieser Prozess kann nun je nach Ihrer Internetanbindung eine ganze Ecke dauern.

Windows 10 ADK Build 1903 WinPE Download und Installation:
Des Weiteren laden Sie sich auf der Microsoftseite die aktuellste Windows 10 ADK Build 1903 WinPE Version für Ihr Betriebssystem herunter.

Klicken Sie unten auf

Download the Windows PE add-on for the ADK

Kopieren Sie diese Datei an einen beliebigen Ort und starten Sie dann die adkwinpesetup.exe. Wundern Sie sich nicht, das die Datei nur knappe 2 MB groß ist, denn das ist ein Onlineinstaller. Es werden etliche GB aus dem Internet heruntergeladen werden müssen. Während dem Setup ist es ratsam, alle Dateien für einen anderen Rechner herunterzuladen als Installationsmethode zu wählen, denn dann haben Sie diese Dateien alle und müssten diese nicht erneut herunterladen, wenn sie das auf einem anderen Rechner ebenfalls einrichten wollten.

Die heruntergeladenen Pakete speichert die adkwinpesetup.exe in den selbst angelegten “Installers” Ordner.
Die “UserExperienceManifest.xml” Datei gehört ebenfalls dazu!

Rufen Sie im Anschluss die adkwinpesetup.exe auf und wählen Sie den Punkt Windows-Vorinstallationsumgebung (Windows PE) aus. Klicken Sie auf Installieren. Dieser Prozess kann nun je nach Ihrer Internetanbindung eine ganze Ecke dauern.

Wenn das alles installiert wurde haben Sie den Grundstock zur Erstellung Ihres eigenen WinPE’s gelegt. Der schwierige Teil jedoch, kommt erst noch. 😛

Schritt: Bereitstellungstools Icon anlegen:

Drücken Sie die Windows Taste + S, um die Windows Suche zu starten. Tippen Sie dort “image” ein und Sie werden dort “Umgebung für Bereitstellungs- und Imageerstellungstools” finden. Diesen heften Sie bitte über die Rechte Maustaste an den Start an. Dadurch müssen Sie dieses Tool nicht immer wieder suchen.

Schritt: Synology – Neuen gemeinsamen Ordner anlegen / Windows Images Ordnerstruktur:

Melden Sie sich bei Ihrer Synology an und erstellen Sie einen neuen gemeinsamen Ordner für Ihre Windows Images und geben Sie einem Benutzerkonto Rechte diesen lesen zu dürfen. Sie können auch wahlweise einfach eines neues Benutzerkonto anlegen, extra für Windowsinstallationen über Netzwerk. Den Ordner könnten Sie z.b. “WSources” nennen.

Achten Sie bitte auch auf Groß- und Kleinschreibung.

Für ein flexibles Windowsinstallationsmedium bittet sich eine Ordnerstruktur an, an dessen Sie kinderleicht erkennen können, wo, welche Windows Versionen hineinkommen. Ich empfehle Ihnen auch wirklich diese Ordner so zu benennen, denn das wird Ihnen die weitere Einrichtung durch meine Anleitung erleichtern.

WSources-Root-Ordner:

Win7 Ordner:

Win8 Ordner:

Win10 Ordner:

Windows Server Ordner:

Damit Ihnen nicht langweilig wird, laden Sie sich alle Windows Versionen, die Sie über Netzwerk installieren lassen möchten von Microsoft herunter und entpacken Sie diese ISO’s in die jeweiligen, dafür vorgesehenen Ordner. Es ist nicht ratsam die DVD von Ihrer Windows Version zur Hand zu nehmen, da Sie dann das Problem haben, ein sehr altes Windows Build vor sich zu haben, wo aktuelle Updates und Features fehlten. Es ist in solchen Fällen immer die bessere Entscheidung die aktuellste Version von Microsoft zu beziehen, da diese ISO’s immer auf dem aktuellsten Patchstand sind. Denn je nachdem wie alt Ihre Windows DVD ist, wird das einen anschließenden Updatemarathon nach sich ziehen.

Hier finden Sie die Übersichtsseite von Microsoft.

Um Windows 10 ISO’s für die Home, Pro und Education Versionen herunterzuladen, verwenden Sie das Media Creation Tool 10 von Microsoft.
Um Windows 8.1 ISO’s für die Home und Pro Versionen herunterzuladen verwenden Sie das Media Creation Tool 8 von Microsoft.

Alternativ können Sie auch die Freeware “Windows ISO Downloader” herunterladen.  Von Windows 7 bis Windows 10 können sie für jede Version eine ISO beziehen.

Wie Ihnen vielleicht aufgefallen ist, habe ich in meiner Struktur keine Trennung nach verschiedenen Sprachen, denn ich persönlich brauche nur die Deutschen Versionen. Wenn Sie das zusätzlich noch nach Sprachen trennen wollen können Sie das natürlich gerne machen, bedeutet aber auch mehr Arbeit 🙂

Schritt: WinPE Ordner und Dateien kopieren und Treiber falls notwendig einbinden:

Ich habe Ihnen ein kleines Paket geschnürt, das Sie sich erst einmal herunter laden werden:

ADK-Paket (Erstellt von Stefan Saft)

Letztes Paket Update: 25.05.19

Änderungen:

  • Das WinPE zeigt nun in der Eingabeaufforderung an, in welchem Firmware Modus Ihr Euch befindet.
  • Die Netzwerktreiber wurden aktualisiert und noch fehlende hinzugefügt. Dabei habe ich die überflüssigen Dateien aussortiert. Das Paket ist nun kleiner, beinhaltet aber trotzdem mehr Treiber.
  • BCD Datei um zwei Einträge erweitert.

Dieses entpacken Sie vorerst an einen beliebigen Ort.

Sie werden dort ein Verzeichnis mit dem Namen: “PXEServerTools” finden, das Sie bitte direkt auf “C:\” kopieren. Die Batchfiles speichern Sie bitte irgendwo, wo Sie diese auch jederzeit wiederfinden 😉 Kommen Sie nicht auf die dumme Idee diese jetzt schon zu starten. Wir müssen erst einige Dinge ändern.

Nun zu der Erklärung, was es damit auf sich hat. Schritt für Schritt natürlich.

Der PXEServerTools-Ordner ist äußerst nützlich bei der WinPE Erstellung, da dort gefundene Treiberdateien mit eingebunden werden. Schauen Sie sich den “C:\PXEServerTools\Drivers” Ordner einfach mal an. Grundlegend müssen bei allen Treibern zwischen 32Bit und 64Bit unterschieden werden. Wenn Sie eigene Treiber einbinden wollen, dann erstellen Sie einfach einen weiteren Ordner im X86 und X64 Ordner für Ihre Komponente. Bei Raid Treibern z.b. einen Storage Ordner.

Ich war mal so frei und habe die gängigsten Netzwerktreiber bereits in die Verzeichnisse kopiert. Weitere Treiber sind grundsätzlich auch nicht nötig, denn für unser Vorhaben: “Windows Netzwerkinstallation” ist es äußerst wichtig, das die Netzwerkkarte immer erkannt wird. Daher ist es zwingend erforderlich, auch möglichst alle Netzwerktreiber einzubinden. Für besondere Storage Konstellationen wie RAID Verbunde oder ähnliches müssten Sie diese Treiber ebenfalls einbinden, damit Windows Ihre Festplatten auch erkennt und somit die Installation überhaupt möglich wäre.

Warum habe ich das mit Vordefinierten Ordnern gelöst?

Weil die Befehle die abgearbeitet werden müssten, wenn man das alles manuell in die Bereitstellungskonsole tippt, eine Ewigkeit dauert. Das Ziel ist der Automatismus dieser Abläufe. Oder haben Sie Lust 50 Befehle manuell eingeben zu müssen in der Bereitstellungskonsole? Ich nicht und ich denke Sie auch nicht. 😉

Die Startnet.cmd beinhaltet unser späteres Menü, das auch die Verbindung zu dem Netzwerkshare herstellen wird.

Schritt: Startnet.cmd editieren:

Sie werden außerdem einen Ordner mit dem Namen “Startnet” finden. In diesem befindet sich die “startnet.cmd” und zu dieser kommen wir als erstes, bevor wir überhaupt in der Lage sind, das WinPE zu erstellen.

Vorwort: Was macht die Startnet.cmd
Die Startnet.cmd ist eine Datei die beim Starten eines WinPE’s immer ausgeführt wird. Diesen Umstand können wir uns zu nutze machen um die Netzwerkinstallation zu vereinfachen.

Öffnen Sie zunächst diese Datei bitte in einem Editor Ihrer Wahl, denn wir müssen dort einiges ändern!

startnet.cmd:

Suchen Sie als erstes bitte einmal diesen Teil:

set NTIP=192.168.1.5

Diese IP ändern Sie bitte auf Ihre DS IP!

Des weiteren suchen Sie:

set WindowsShare=WSources

Falls Sie den erstellten gemeinsamen Ordner nichtWSources” genannt haben, müssen Sie diesen Teil ändern.

Und nun zu dem mitunter wichtigstem Teil:

net use v: \\%NTIP%\%WindowsShare% /u:Installer loadwindows

Benutzer: Installer
Passwort: loadwindows

Diese Angaben müssen Sie natürlich ändern. Geben Sie dort den Benutzer mit Passwort an, der das Recht hat auf den gemeinsamen Ordner zugreifen zu können.
Eine Gastfreigabe wäre auch möglich und könnte zum Beispiel so umgesetzt werden:

net use v: \\%NTIP%\%WindowsShare% /u:guest none

Ich empfehle Ihnen das trotzdem nicht mit Gastrechten zu machen 😉

Mit dieser Datei sind wir nun auch fertig. Also bitte einmal speichern. Den Rest der Datei können Sie sich natürlich auch mal angucken. Dann erkennen Sie auch wie das ganze Menü aufgebaut ist.

Denn so sieht das nachher einmal aus:

Das ist nämlich die startnet.cmd die Sie dort auf den Bildern sehen.

Schritt: CreateWinPE10_x86_x64.cmd Analyse

Dies ist unsere Batchdatei, die das WinPE Image erstellen wird. Ich werde dazu ein paar Worte sagen, aber modifizieren müssten Sie diese nicht, wenn Sie sich strikt an die Anleitung gehalten haben!

Öffnen Sie diese bitte mit einem Editor.

Grundlegend ist zu sagen, das alle Bereiche und dessen Tätigkeiten mit Kommentaren versehen sind. Das sind die REM Einträge = Kommentare.

Was für Sie vielleicht noch interessant ist, ist dieser Teil:

X86 Abschnitt

REM Sprachpaket Deutsch ANFANG x86
"%KITPATH%\Deployment Tools\x86\DISM\Dism.exe" /image:"%TEMPDIRx86%\mount" /add-package /packagepath:"%KITPATH%\Windows Preinstallation Environment\x86\WinPE_OCs\de-de\lp.cab"

"%KITPATH%\Deployment Tools\x86\DISM\Dism.exe" /image:"%TEMPDIRx86%\mount" /Set-AllIntl:de-DE
REM Sprachpaket Deutsch ENDE x86

X64 Abschnitt

REM Sprachpaket Deutsch ANFANG x64
"%KITPATH%\Deployment Tools\amd64\DISM\Dism.exe" /image:"%TEMPDIRx64%\mount" /add-package /packagepath:"%KITPATH%\Windows Preinstallation Environment\amd64\WinPE_OCs\de-de\lp.cab"

"%KITPATH%\Deployment Tools\amd64\DISM\Dism.exe" /image:"%TEMPDIRx64%\mount" /Set-AllIntl:de-DE
REM Sprachpaket Deutsch ENDE x64

Dort wird die Sprache des WinPE’s festgelegt. Es könnte ja sein, das Sie vorhaben für jede Sprache ein WinPE zu erstellen. Dann sind diese Zeilen genau die richtigen. Viel werde ich wohl nicht dazu sagen müssen, denn de-DE ist wohl selbsterklärend. Englisch wäre en-US.

Für die Unterstützung von BitLocker verschlüsselten Festplatten editieren Sie die Datei wie folgt:

Suchen Sie:

REM Sprachpaket Deutsch ENDE x86

Fügen Sie darunter ein:

REM ADD Packages ANFANG x86

REM Bitlocker Packages
"%KITPATH%\Deployment Tools\x86\DISM\Dism.exe" /image:"%TEMPDIRx86%\mount" /add-package /packagepath:"%KITPATH%\Windows Preinstallation Environment\x86\WinPE_OCs\WinPE-WMI.cab"
"%KITPATH%\Deployment Tools\x86\DISM\Dism.exe" /image:"%TEMPDIRx86%\mount" /add-package /packagepath:"%KITPATH%\Windows Preinstallation Environment\x86\WinPE_OCs\de-de\WinPE-WMI_de-de.cab"

"%KITPATH%\Deployment Tools\x86\DISM\Dism.exe" /image:"%TEMPDIRx86%\mount" /add-package /packagepath:"%KITPATH%\Windows Preinstallation Environment\x86\WinPE_OCs\WinPE-SecureStartup.cab"
"%KITPATH%\Deployment Tools\x86\DISM\Dism.exe" /image:"%TEMPDIRx86%\mount" /add-package /packagepath:"%KITPATH%\Windows Preinstallation Environment\x86\WinPE_OCs\de-de\WinPE-SecureStartup_de-de.cab"

"%KITPATH%\Deployment Tools\x86\DISM\Dism.exe" /image:"%TEMPDIRx86%\mount" /add-package /packagepath:"%KITPATH%\Windows Preinstallation Environment\x86\WinPE_OCs\WinPE-EnhancedStorage.cab"
"%KITPATH%\Deployment Tools\x86\DISM\Dism.exe" /image:"%TEMPDIRx86%\mount" /add-package /packagepath:"%KITPATH%\Windows Preinstallation Environment\x86\WinPE_OCs\de-de\WinPE-EnhancedStorage_de-de.cab"
REM ADD Packages ENDE x86

Suchen Sie weiter:

REM Sprachpaket Deutsch ENDE x64

Fügen Sie darunter ein:

REM ADD Packages ANFANG x64

REM Bitlocker Packages
"%KITPATH%\Deployment Tools\amd64\DISM\Dism.exe" /image:"%TEMPDIRx64%\mount" /add-package /packagepath:"%KITPATH%\Windows Preinstallation Environment\amd64\WinPE_OCs\WinPE-WMI.cab"
"%KITPATH%\Deployment Tools\amd64\DISM\Dism.exe" /image:"%TEMPDIRx64%\mount" /add-package /packagepath:"%KITPATH%\Windows Preinstallation Environment\amd64\WinPE_OCs\de-de\WinPE-WMI_de-de.cab"

"%KITPATH%\Deployment Tools\amd64\DISM\Dism.exe" /image:"%TEMPDIRx64%\mount" /add-package /packagepath:"%KITPATH%\Windows Preinstallation Environment\amd64\WinPE_OCs\WinPE-SecureStartup.cab"
"%KITPATH%\Deployment Tools\amd64\DISM\Dism.exe" /image:"%TEMPDIRx64%\mount" /add-package /packagepath:"%KITPATH%\Windows Preinstallation Environment\amd64\WinPE_OCs\de-de\WinPE-SecureStartup_de-de.cab"

"%KITPATH%\Deployment Tools\amd64\DISM\Dism.exe" /image:"%TEMPDIRx64%\mount" /add-package /packagepath:"%KITPATH%\Windows Preinstallation Environment\amd64\WinPE_OCs\WinPE-EnhancedStorage.cab"
"%KITPATH%\Deployment Tools\amd64\DISM\Dism.exe" /image:"%TEMPDIRx64%\mount" /add-package /packagepath:"%KITPATH%\Windows Preinstallation Environment\amd64\WinPE_OCs\de-de\WinPE-EnhancedStorage_de-de.cab"
REM ADD Packages ENDE x64

Schritt: CreateCustomBCD_WinPE_BIOS_AND_UEFI_X86_X64.cmd Analyse

Viel gibt es hier nicht zu sagen. Das wird unsere Binary Coded Decimal Datei. Diese Datei können Sie sich auch mal in Ruhe angucken. Diese ist ebenfalls mit Kommentaren versehen und sollten Sie vorhaben weitere Einträge hinzuzufügen, sollte dies ein leichtes sein, denn die Vorgabe haben Sie bereits.

Damit Sie im UEFI Modus und eingeschaltetem Secure Boot das Menü angezeigt bekommen ist noch folgende Änderung in dieser Datei notwendig, die Sie ganz unten einfügen:

REM UEFI Secure Boot Signatur ANFANG
bcdedit -store C:\BCD -set {bootmgr} path \Boot\bootmgr.efi
REM UEFI Secure Boot Signatur ENDE

Im Hyper-V-Manager zum Beispiel klicken Sie dafür auf eine VM und dann auf Einstellungen und stellen es wie auf dem Bild zu sehen ist ein:

Schritt: WinPE erstellen

Wir haben ja nun schon etliche Dinge vorher machen müssen, doch nun haben Sie es endlich geschafft, das wir an dem Punkt sind, die WinPE’s in Auftrag zu geben.

Starten Sie nun das Tool “Umgebung für Bereitstellungs- und Imageerstellungstool” mit Administrator-rechten, das Sie anfangs an den Start angeheftet hatten.

Navigieren Sie nun über den “cd Ordnername” Befehl zu dem Ort, wo Sie die Datei “CreateWinPE10_x86_x64.cmd” gespeichert haben.
Starten Sie diese Datei. Dieser Vorgang kann etwas dauern. Also heißt es nochmal…. Kaffee machen 🙂

Wenn der Vorgang abgeschlossen ist, werden Sie feststellen, das Sie unter C:\ einen weiteren Ordner finden werden => C:\PXEServer

Hier liegen nun die WinPE ISO’s, als auch die WinPE Wim Dateien und die Bootmanager Dateien wie boot.sdi, pxeboot.n12, bootmgr.exe und die MUI Sprachpakete.

Schritt: WinPE Dateien auf den TFTP Server Transferieren

Das gröbste haben wir nun hinter uns. Jetzt geht es darum, die Dateien auch startbar aus unserer Syslinux Umgebung zu machen.

Erstellen Sie zunächst einen Ordner “Winpe” im “images” Ordner Ihres TFTP Servers.
Innerhalb des “Winpe” Ordners einen weiteren der “WinPE10.0” heißt.

Kopieren Sie nun folgende Dateien alle in den”WinPE10.0” Ordner auf Ihren TFTP Server (images\Winpe\WinPE10.0):

C:\PXEServer\BootSources\ISO\WinPE_x64.iso
C:\PXEServer\BootSources\ISO\WinPE_x86.iso
C:\PXEServer\BootSources\WinPE_x64.wim
C:\PXEServer\BootSources\WinPE_x86.wim

Kopieren Sie als nächstes folgende Dateien direkt in das TFTP ROOT Verzeichnis:

C:\PXEServer\Boot32\bootmgr.exe
C:\PXEServer\Boot32\pxeboot.n12(Nach dem kopieren bitte in pxeboot.0 umbenennen!)

Erstellen Sie im TFTP Root Verzeichnis noch folgende Ordnerstruktur:

/Boot/
/Boot/de-DE/
/Boot/Fonts/
/Boot/resources/
/EFI/
/EFI/Microsoft/
/EFI/Microsoft/Boot/
/EFI/Microsoft/Boot/de-DE/
/EFI/Microsoft/Boot/Fonts/
/EFI/Microsoft/Boot/resources/

Kopieren Sie nun folgende Dateien in das /Boot/de-DE/ Verzeichnis auf Ihren TFTP Server:

C:\PXEServer\Boot32\de-DE\bootmgr.efi.mui (Bitte in bootmgr.efi.MUI umbenennen!)
C:\PXEServer\Boot32\de-DE\bootmgr.exe.mui (Bitte in bootmgr.EXE.MUI umbenennen!)

Kopieren Sie nun folgende Datei in das /Boot/ Verzeichnis auf Ihren TFTP Server:

C:\PXEServer\Boot32\boot.sdi

Mounten Sie nun bitte einmal die WinPE_x64.iso mit “Öffnen mit” und dann Windows Explorer.

Kopieren Sie aus dem ISO folgende Dateien in den /Boot/Fonts/ Ordner:

DVDROM\Boot\Fonts\ ALLE DATEIEN!

Kopieren Sie aus dem ISO folgende Dateien in den /EFI/Microsoft/Boot/Fonts/ Ordner:

DVDROM\EFI\Microsoft\Boot\Fonts\ ALLE DATEIEN!

Kopieren Sie aus dem ISO folgende Dateien in den TFTP Root Ordner:

DVDROM\EFI\Boot\bootx64.efi

Kopieren Sie aus dem ISO folgende Dateien in den TFTPROOT\Boot\ Ordner:

DVDROM\bootmgr.efi

Mounten Sie nun bitte einmal die WinPE_x86.iso mit “Öffnen mit” und dann Windows Explorer.

Kopieren Sie aus dem ISO folgende Dateien in den TFTP ROOT Ordner:

DVDROM\EFI\Boot\bootia32.efi

Schritt: CreateCustomBCD_WinPE_BIOS_AND_UEFI_X86_X64.cmd ausführen

Starten Sie die Eingabeaufforderung mit Administratorrechten und führen Sie dieses Skript bitte einmal aus. Danach finden Sie eine BCD Datei unter C:\ die Sie bitte an folgenden Ort verschieben:

TFTPROOT\Boot\

Schritt: Syslinux 6.04 Booteinträge erstellen

Öffnen Sie die pxelinux.cfg/default_BIOS und suchen Sie nach:

KBDMAP german.kbd

Fügen Sie direkt darunter folgendes ein:

##############################################################
#Windows Section
##############################################################
LABEL WindowsSysteme
MENU LABEL Windows Installation:
MENU DISABLE

MENU BEGIN

MENU TITLE + Windows Installations Service

LABEL Original
MENU LABEL Microsoft Windows PE Images:
MENU DISABLE

LABEL WinPE50X32ISO
MENU LABEL 1. WinPE10.0 x32 Bit - MemDisk ISO (Windows 10)
MENU INDENT 2
COM32 linux.c32 memdisk
APPEND iso raw
INITRD images/Winpe/WinPE10.0/WinPE_x86.iso
TEXT HELP
Es wird die Windows Vorinstallations Umgebung 10.0 (Windows 10) im
32 Bit Modus geladen mit allen Netzwerktreibern.

Die WinPE Versionen sind abwaertskompatibel. Es ist Ihnen moeglich
mit der WinPE 10.0 Version auch aeltere Windows Versionen zu installieren.

Es wird automatisch das Netzwerkshare zu den Windows Images aufgebaut.
ENDTEXT

LABEL WinPE50X64ISO
MENU LABEL 2. WinPE10.0 x64 Bit - MemDisk ISO (Windows 10)
MENU INDENT 2
COM32 linux.c32 memdisk
APPEND iso raw
INITRD images/Winpe/WinPE10.0/WinPE_x64.iso
TEXT HELP
Es wird die Windows Vorinstallations Umgebung 10.0 (Windows 10) im
64 Bit Modus geladen mit allen Netzwerktreibern.

Die WinPE Versionen sind abwaertskompatibel. Es ist Ihnen moeglich
mit der WinPE 10.0 Version auch aeltere Windows Versionen zu installieren.

Es wird automatisch das Netzwerkshare zu den Windows Images aufgebaut.
ENDTEXT

LABEL WinPE50X32X64MGR
MENU LABEL 3. WinPE10.0 x64 & x32 Bit - BootMGR (Windows 10)
MENU INDENT 2
KERNEL pxeboot.0
TEXT HELP
Es wird die Windows Vorinstallations Umgebung 10.0 (Windows 10) im
64 Bit oder 32 Bit Modus geladen mit allen Netzwerktreibern.

Die WinPE Versionen sind abwaertskompatibel. Es ist Ihnen moeglich
mit der WinPE 10.0 Version auch aeltere Windows Versionen zu installieren.

Es wird automatisch das Netzwerkshare zu den Windows Images aufgebaut.
ENDTEXT

MENU SEPARATOR

LABEL return_main

MENU LABEL - ^Zum Hauptmenu
MENU INDENT 1
MENU EXIT

MENU END

Ich habe Ihnen dort ein Beispiel mit Memdisk gemacht und das Beispiel des Umwegs über den BootMGR. Ich persönlich empfehle Ihnen Memdisk zu meiden, da Sie gerade in Bezug auf die Geschwindigkeit mit dem BOOTMGR schneller sind und nicht solange warten müssen. Außerdem haben Sie dort einen schönen Balken, der verdeutlicht wie viel noch transferiert werden muss!

Das gleiche machen Sie bitte auch für die Dateien:

pxelinux.cfg/default_EFI32
pxelinux.cfg/default_EFI64

ABER! Die Memdisk Einträge sind dort zu löschen, da dieses Tool in einer EFI Umgebung nicht funktioniert. Lassen Sie nur den letzten Eintrag stehen. Ja, jetzt kommen wir noch zu dem Problem, das ich mehrmals angesprochen hatte in Bezug auf Syslinux im EFI Modus, den BootManager von Windows und eine Windows Installation über Netzwerk im EFI Modus. Dummerweise funktioniert auch der EFI Boot mit dem letzten Eintrag nicht, da auch dieses ein BIOS Tool ist 😉 Aber, das ist vorerst auch nicht weiter tragisch! Irgendwann soll das wohl auch mit Syslinux gehen. Solange können Sie den Umweg gehen und einen Notbehelf anwenden, wenn Sie Rechner im EFI Modus über Netzwerk starten.

Ändern Sie wie aus der Vorherigen Anleitung einfach folgende Abschnitte wie folgt (Denken Sie daran, das die IP wieder geändert werden muss. Schlagen Sie dazu bitte nochmal in der anderen Anleitung nach, falls Sie vergessen haben, wie man das nochmal macht):

dhcp-boot=tag:pxe,pxelinux.0
dhcp-vendorclass=set:pxe,PXEClient

#Beispiel Eintrag und Erklärung
#Tag vergeben, DHCP-Option 60, Suche String (Match)
#dhcp-match=set:bios,60,PXEClient:Arch:00000
#Boot-Tag, Boot-Dateiname, Server Name (DNS), Server IP Addresse
#dhcp-boot=tag:bios,pxelinux.0,192.168.1.5,192.168.1.5
#Boot-Tag, DHCP-Option 209, Pfad zur Syslinux-Konfigurationsdatei
#dhcp-option-force=tag:bios,209,pxelinux.cfg/default_BIOS

dhcp-match=set:bios,60,PXEClient:Arch:00000
dhcp-boot=tag:bios,pxelinux.0,192.168.1.5,192.168.1.5
dhcp-option-force=tag:bios,209,pxelinux.cfg/default_BIOS

dhcp-match=set:efi32-1,60,PXEClient:Arch:00002
dhcp-boot=tag:efi32-1,bootia32.efi,192.168.1.5,192.168.1.5
dhcp-option-force=tag:efi32-1,209,pxelinux.cfg/default_EFI32

dhcp-match=set:efi32-2,60,PXEClient:Arch:00006
dhcp-boot=tag:efi32-2,bootia32.efi,192.168.1.5,192.168.1.5
dhcp-option-force=tag:efi32-2,209,pxelinux.cfg/default_EFI32

#Standard für UEFI Rechner
#Die meisten UEFI Rechner benutzen diesen Eintrag. Je nach Hersteller kann es 
#jedoch sein, das statt 00007 mal 00009 verwendet wird. 
dhcp-match=set:efi64-1,60,PXEClient:Arch:00007
dhcp-boot=tag:efi64-1,bootx64.efi,192.168.1.5,192.168.1.5
dhcp-option-force=tag:efi64-1,209,pxelinux.cfg/default_EFI64

dhcp-match=set:efi64-2,60,PXEClient:Arch:00008
dhcp-boot=tag:efi64-2,bootx64.efi,192.168.1.5,192.168.1.5
dhcp-option-force=tag:efi64-2,209,pxelinux.cfg/default_EFI64

dhcp-match=set:efi64-3,60,PXEClient:Arch:00009
dhcp-boot=tag:efi64-3,bootx64.efi,192.168.1.5,192.168.1.5
dhcp-option-force=tag:efi64-3,209,pxelinux.cfg/default_EFI64

Nach der Änderung den DHCP Server auch nochmals neustarten.

Was machen wir dort?

Wir verwenden von nun an im EFI32 und EFI64 Modus nur noch den Microsoft EFI Bootloader, damit wir Windows auch im EFI Modus installieren lassen könnten. Sie fragen sich jetzt, warum wir überhaupt den ganzen Zirkus dann mit den 3 verschiedenen Syslinux Bootloadern betrieben haben? Nun weil das irgendwann funktionieren soll und solange das nicht funktioniert wir den Umweg über den Microsoft Bootloader im EFI Modus gehen. Im alten Legacy Modus haben Sie ja nach wie vor noch das Menü.

Schritt: Der Test

Booten Sie nun einen Rechner über Netzwerk und Sie sollten im BIOS Modus das Syslinux Menü sehen und es Ihnen auch möglich sein, den BootMGR Eintrag zu starten und Windows installieren zu können. Im EFI Modus werden Sie direkt in das BootMGR Menü booten ohne Syslinux. Testen Sie auch jeden Eintrag, ob auch alles funktioniert. Eine Testinstallation im EFI Modus in einer VM schadet vielleicht auch nicht 😉

Sollten Sie noch Fragen haben, so nutzen Sie einfach die Kommentarfunktion.

Zum Anfang!

48 Antworten auf „Syslinux 6.04 – Windows 10 ADK 1903 WinPE’s erstellen“

  1. Hallo, ich habe leider ein Problem bei der Umsetzung mit dem WBM.

    Unter Bios klappt alles und er lädt auch alles aber sobald ich versuche über UEFI im Netwerk zu Booten kommt er bis zur Abfrage ob man Windows10PE Bios oder Bios UEFI auswählen möchte. Egal was ich hier anklicke bekomme ich eine Fehlermeldung das ich mit der Windows CD reparieren soll. Ich hab die Anleitung jetzt schon zwei mal so nachgebaut aber leider wieder das selbe Problem.

    Was könnte das sein?

    1. Der Ordner heißt bei Ihnen auch “Boot”? Achten Sie auf die Groß- und Kleinschreibung.

      Alle erforderlichen Dateien sind dort hinterlegt?
      boot.sdi
      BCD
      bootmgr.efi
      memtest.exe

      Wenn die Dateien vorhanden sind, dann gibt es ein Problem innerhalb der BCD Datei. Vielleicht ist der Pfad falsch. Ich habe schon so einige Fehler gesehen, unter anderem auch Ihren, ich weiß nur dummerweise nicht mehr woran es genau lag. Meistens jedoch ist der Pfad falsch oder irgendwas in der BCD Datei ist nicht in Ordnung.

      Haben Sie diese selber erweitert/editiert?

      Zum erstellen der BCD Datei hatte ich ja ein Skript zur Verfügung gestellt.

      Haben Sie dem Skript das:

      REM UEFI Secure Boot Signatur ANFANG
      bcdedit -store C:\BCD -set {bootmgr} path \Boot\bootmgr.efi
      REM UEFI Secure Boot Signatur ENDE

      ganz unten hinzugefügt?

      Haben Sie das selbe Problem auch bei einem anderen Rechner, den Sie über Netzwerk im UEFI Modus booten?

      Einen Fehler habe ich spontan noch finden können. Ich hatte vor einiger Zeit die Anleitung ein wenig geändert, aber vergessen die Pfade in der Datei CreateCustomBCD_WinPE_BIOS_AND_UEFI_X86_X64.cmd zu ändern! Ersetze überall das WinPE6.0 durch WinPE10.0.

  2. Ich habe alle Dateien bis auf die memtest.exe nicht drin die Stand aber ja auch nicht in der Anleitung.

    Mein Pfad auf der Synology ist einfach nur PXE und dann folgen alle ordner so wie in der Anleitung. Einzig Images ist bei mir komplett klein geschrieben und winpe auch.

    In der startnet.cmd habe ich den pfad auch nochmal um pxe erweitert.

    Wenn ich das ganze am normalen bios rechner starte läuft alles bis auf der pfad für die eigentlichen Windows Versionen da ist noch was verkehrt aber da bin ich grade bei. Wichtig ist er der Fehler unter UEFI

    1. Ich weiß noch nicht so recht, ob ich alles was du sagtest, so richtig verstanden habe.

      Der Windows-Boot-Manager ist das hier:

      Die startnet.cmd hat mit dem Windows-Boot-Manager nichts zu tun, denn die ist Teil des WinPE Images, was du aus dem Windows-Boot-Manager aus starten kannst. Hast du nun Probleme bei den WinPE Images oder dem Windows-Boot-Manager? Das ist ein kleiner, aber feiner Unterschied.

      Ich möchte nur nochmal darauf hinweisen, dass wenn der Rechner im UEFI Modus läuft, das X86 WinPE Images nicht funktioniert. Anders herum kannst du aber im BIOS Modus sowohl x86, als auch x64 wählen, wenn die Hardware dazu kompatibel ist. Ganz alte CPU’s wie ein Athlon XP können kein 64 Bit Befehlssatz. Daher wäre es in dieser Situation auch nicht möglich, den 64Bit Eintrag zu starten. Da das bei heutiger Hardware aber eher selten ist, sage ich immer pauschal, das beide Einträge funktionieren, auch wenn das nicht zu 100% der Wahrheit entspricht. Ein Beispiel habe ich ja genannt.

      Ist der Secureboot aktiv?
      Wenn du Fehlermeldungen bekommst, bitte immer die Fehlermeldung mit angeben!

      Wenn jeder Eintrag im Windows-Boot-Manager im BIOS Modus funktioniert und im UEFI Modus KEIN einziger, dann bin ich überfragt. Die Pfade bleiben ja gleich, lediglich der Firmware Modus hat sich geändert. Und wenn du nichts als die Pfade in diesen Dateien an deine Eigenen angepasst hast, dann sollte das ohne Probleme funktionieren.

      Meine vorherige Frage hast du mir aber leider immer noch nicht beantwortet, ob der Fehler auch bei einem anderen UEFI Rechner auftritt! Da ich mir das Ganze auch leider nicht selbst ansehen kann, muss ich darauf vertrauen, das du alle verwendeten Fachbegriffe, richtig benutzt hast. Stellenweise kamen mir da Zweifel.

      Es ist schade, das es bei Dir nicht läuft, aber unter den Umständen werde ich Dir nicht helfen können. Tut mir Leid.

      Deinen anderen Kommentar unter einem völlig anderen Artikel, der damit nichts zu tun hat, habe ich entfernt. In diesem Artikel ging es um etwas ganz anders. Wenn Dir einer helfen kann, wird der das unter dem richtigen Artikel machen.

  3. Also nochmal um alle Ungereimtheiten zu klären, mein Problem tritt im Windows-Boot-Manager auf. Es sieht aus wie bei dir oben(natürlich habe ich nur die ersten beiden Einträge). Egal mit welchem Rechner im UEFI Boot bekomme ich die Fehlermeldung:
    Windows failed to Start. A recent Hardware or Software Change might be the cause. to fix the Problem:

    1….
    2….
    3….
    If you do not have this Disc, contact your System Administrator or Computer manufacturer for assistance.
    Status: 0xc000000f
    Info: A requried device isn’t connected or can’t be accessed.

    Über das normale Bios kann ich die x86 und x64 über memdisk starten aber über WBM geht es auch hier nicht. Gleiche Fehlermeldung.
    Secureboot ist nicht aktiv aber in der BCD eingetragen so wie in der Anleitung. Mehr habe ich in der Datei aber nicht angepasst.
    Hoffe jetzt hab ich alle Infos weitergegen.

    Sorry wenn ich am Anfang etwas durcheinander gebracht habe. In der Startnet.cmd war nur die einzige Stelle für mich ersichtlich wo der Pfad eingetragen wird. Da hatte ich anfangs auch Probleme und die habe ich aber behoben.

    1. Das ist doch mal eine schöne detaillierte Erklärung!

      Ja, dann ist das Problem klar. Ich wusste ja nicht, das du memdisk im BIOS Modus benutzt. Das der WBM gar nicht funktioniert, hast du mir ja erst jetzt gesagt.

      Ganz klar, Pfade sind falsch! Der Windows-Boot-Manager, achtet penibel auf die Pfade und auf die Groß- und Kleinschreibung!

      Du hast also einen pxe Ordner (Dein TFTP ROOT Verzeichnis?), darin befindet sich der Boot Ordner? Der muss Boot heißen und nicht boot! Du hast ja selber gesagt, das du die ein oder anderen Sachen, anders geschrieben hattest. Dann musst du aber auch daran denken, das in der CreateCustomBCD_WinPE_BIOS_AND_UEFI_X86_X64.cmd Datei abzuändern.

      Ganz oben wird der Ramdisk Pfad definiert.

      Dort steht:

      bcdedit -store C:\BCD -set {ramdiskoptions} ramdisksdipath \Boot\boot.sdi

      Geh am besten die ganze Datei durch und prüfe, ob das was dort steht (Groß- und Kleinschreibung beachten), auch wirklich der Wahrheit entspricht.

      boot != Boot

  4. Hallo,
    also ich habe heute nochmal alles komplett neu gemacht. Selbes Problem wie vorher.
    Wir verstehen uns aber richtig das mein PXE das TFTP Root Verzeichnis ist und ich hier die Ordner Boot und EFI anlege und dann die jeweiligen Unterordner? Dann muss ich in der CreateCustomBCD_WinPE_BIOS_AND_UEFI_X86_X64.cmd ja auch nichts mehr bezüglich Ordnerstruktur anpassen.
    Hab ich die Möglichkeit hier auch Fotos hochzuladen oder Ihnen die anderweitig zukommen zu lassen damit ich meine Einstellungen einmal schicken kann?

    1. Freut mich, dass es nun funktioniert.

      Bezüglich der Buchstaben i und I(ih), l(el) und L(el).

      Das ist auch etwas, das mich selbst schon ein paar mal gestört hat. Es liegt wohl an den Überschriften Schriftarten und wenn Textstellen fett geschrieben werden. Ich muss das mal ändern.

      Und Ihnen viel Spaß mit Ihrer PXE Umgebung 🙂

  5. Eine Frage hätte ich da nun doch noch, ich habe mir Images gemacht für die unattended Installation. bei meiner alten startnet.cmd
    stand folgendes drin:
    wpeinit
    net use v: \\192.168.2.250\pxe\win7_64_cd
    v:\setup.exe /unattend:v:\autounattend.xml

    das geht bei der neuen ja so nicht mehr. Aber auch wenn ich hinter Setup.exe das unattend : \autounattend.xml schreibe funktioniert es nicht da sagt er das er die Datei nicht finden kann. Haben sie dafür auch eine Lösung parat?

    1. Welche Datei findet er nicht? Die setup.exe oder die autounattend.xml oder beide?

      Da sie keine Benutzerdaten bei der Freigabe angegeben haben, sollte das Netzlaufwerk erst gar nicht erstellt werden. Soweit ich weiß, müssen bei dem net use Befehl, selbst bei Gastfreigaben (Für jeden zugänglich), trotzdem die Parameter übergeben werden.

      Testen Sie es selbst. Wenn Sie in der Eingabeaufforderung sind und v: eingeben und eine Fehlermeldung kommt, dann existiert das Netzlaufwerk nicht. Sie hätten dann aber auch ein paar Fehlermeldungen auf dem Bildschirm sehen müssen, die Ihnen das verdeutlichen.

  6. Das obere stand in meiner alten Startnet.cmd Datei damit lief es problemfrei.
    Jetzt mit dem Umbau auf UEFI habe ich ja die Startnet.cmd von ihnen mit eingebaut und da steht ja nur das er die Setup.exe ausführen soll. Den Befehl habe ich noch einmal erweitert das er jetzt so aussieht: setup.exe /unattend:autounattend.xml

    Aber das System sagt mit immer das er die autounattend.xml nicht findet.

    1. Warum findet er die setup.exe denn nun doch nicht. Sie haben doch gesagt, er würde nur die autounattend.xml nicht finden. Der /unattend Parameter ist bei den Windows Version meins Wissens nach immer gleich geblieben. Es gibt nur einen kleinen Unterschied bezüglich der Namensnennung der XML Datei. Es gibt die Varianten autounattend.xml und unattend.xml.

      Ihr Problem beruht aber wieder darauf, das die Pfade falsch sind.

      Zum testen müssen Sie Ihr WinPE auch nicht immer neu starten! Wenn Sie die Befehle live in der WinPE Eingabeaufforderung testen, dann wissen sie ja irgendwann, woran es liegt.

      Wenn Sie mein Beispiel verwenden, dann ist die Einbindung des Windows-Shares schon falsch. In meinem Beispiel wird das Netzlaufwerk eingebunden, welches auf den WSources Ordner zeigt. Darin gibt es weitere Ordner wie “Windows 7″,”Windows 8″,”Windows 10” usw. . Schauen Sie sich dafür einfach nochmal die Anleitung an.

      In der Startnet, wird je nachdem was sie dort in dem Auswahlmenü auswählen, über Kommandozeilenbefehle innerhalb der Datei mittels “cd Ordnername” in die Verzeichnisse gewechselt und dann die setup.exe ausgeführt. Haben Sie diese geändert? Wenn Sie die Ordner wieder anders genannt haben, dann müssen sie das dort auch wieder händisch ändern.

      Mein Auswahlmenü funktioniert nicht, wenn das Netzlaufwerk direkt in den Windows 7 64 Bit Ordner zeigt. Was würden Sie denn machen, wenn Sie Windows 10 installieren wollen? Ein komplett eigenes WinPE erstellen? Das ist nicht nötig, denn durch das Auswahlmenü haben Sie bereits die Möglichkeit, alles über ein WinPE machen zu können.

      Posten Sie doch einfach mal den gesamten Inhalt der Startnet! Benutzernamen und Passwörter bitte vorher entfernen. Denn so drehen wir uns nur im Kreis.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.