WinPE 4.0: Windows PE 4.0 via PXE booten
Microsoft Windows Preinstallation Environment (WinPE) 4.0 ist ein abgespecktes Windows Betriebssystem welches auf Windows 8 basiert und von CD, USB-Stick, WDS, PXE oder von der HDD gebootet werden kann. Windows PE wurde für Computerhersteller und Administratoren entwickelt um die Installation von Windows zu automatisieren.
In diesem Tutorial möchte ich Ihnen zeigen wie Sie WinPE 4.0 von einem PXE-Server booten können.
Voraussetzungen
Für diese Anleitung benötigen Sie das Windows Assessment and Deployment Kit (ADK) für Windows 8. Den Installer für das Windows Assessment and Deployment Kit (ADK) für Windows 8 können Sie von der folgenden Webseite herunterladen.
http://www.microsoft.com/de-de/download/details.aspx?id=30652
Nachdem Sie den Installer für das Windows Assessment and Deployment Kit (ADK) heruntergeladen haben, rufen Sie diesen auf und folgen den Anweisungen der Installations-Routine.
Für die weiteren Schritte öffnen Sie über das Startmenü die Umgebung für Bereitstellungs- und Imageerstellungstools (auf einem englischen System Deployment and Imaging Tools Environment) als Administrator.
Benötigte Boot-Dateien sammeln
In diesem Abschnitt werden wir die benötigten Bootdateien zusammen kopieren.
Mit Hilfe des Batch-Skriptes copype.cmd werden die benötigen Dateien für ein WinPE-Image bereitgestellt. Das Skript benötigt die Systemarchitektur und den Zielpfad als Argumente. In diesem Beispiel wollen wir ein Windows PE 4.0 System erstellen welches für Rechner mit x86-Architektur gedacht ist.
C:\Program Files (x86)\Windows Kits\8.0\Assessment and Deployment Kit\Windows Preinstallation Environment>copype.cmd x86 "C:\WinPE_x86"
Erstellen Sie jetzt einen temporären Ordner in welchem alle Dateien für den PXE-Server abgelegt werden.
C:\WinPE_x86>md C:\tftpboot
C:\WinPE_x86>md C:\tftpboot\Boot
C:\WinPE_x86>md C:\tftpboot\Boot
Wie Sie sehen erstelle ich auch einen weiteren Unterordner. Da man oft verschiedene Systeme von einem PXE-Server starten möchte, wird hier WinPE 4.0 in einem separatem Ordner abgelegt.
Um an die Bootdateien zu kommen, müssen Sie die Datei boot.wim mounten.
C:\WinPE_x86>"C:\Program Files (x86)\Windows Kits\8.0\Assessment and Deployment Kit\Deployment Tools\x86\DISM\dism.exe" /Mount-Wim /WimFile:"C:\WinPE_x86\media\sources\boot.wim" /Index:1 /MountDir:"C:\WinPE_x86\mount"
Anschließend kopieren Sie die Dateien aus C:\WinPE_x86\mount\Windows\Boot\PXE\ in das temporäre Verzeichnis.
C:\WinPE_x86>copy "WinPE_x86\mount\Windows\Boot\PXE\*.*" "C:\tftpboot\Boot"
Da wir keine weiteren Dateien aus dem WinPE-Image benötigen, sollten Sie dieses wieder unmounten.
C:\WinPE_x86>"C:\Program Files (x86)\Windows Kits\8.0\Assessment and Deployment Kit\Deployment Tools\x86\DISM\dism.exe" /Unmount-Wim /MountDir:"WinPE_x86\mount" /Commit
Jetzt benötigen Sie nur noch die boot.sdi aus dem ADK-Verzeichnis und das WinPE-Image.
C:\WinPE_x86>copy "C:\Program Files (x86)\Windows Kits\8.0\Assessment and Deployment Kit\Windows Preinstallation Environment\x86\Media\Boot\boot.sdi" "C:\tftpboot\Boot"
C:\WinPE_x86>copy "C:\WinPE_x86\media\sources\boot.wim" "C:\tftpboot\Boot"
C:\WinPE_x86>copy "C:\WinPE_x86\media\sources\boot.wim" "C:\tftpboot\Boot"
Hinweis: Hier wird das original WinPE 4.0 Image verwendet. Sollten Sie weitere Programme und Treiber in das Image implementieren wollen, so tauschen Sie später einfach die boot.wim auf dem PXE-Server aus.
BCD erstellen
In diesem Kapitel werden wir die Boot-Konfiguration mit Hilfe von BCDedit erstellen. Mit dem ersten Befehl wir die BCD-Datei erstellt in welche die nachfolgenden Einstellungen gespeichert werden.
C:\WinPE_x86>bcdedit -createstore C:\BCD
Durch die nächsten Befehle werden die Einstellungen für die Ramdisk eingefügt.
C:\WinPE_x86>bcdedit -store C:\BCD -create {ramdiskoptions} /d "Ramdisk Options"
C:\WinPE_x86>bcdedit -store C:\BCD -set {ramdiskoptions} ramdisksdidevice boot
C:\WinPE_x86>bcdedit -store C:\BCD -set {ramdiskoptions} ramdisksdipath \Boot\boot.sdi
C:\WinPE_x86>bcdedit -store C:\BCD -set {ramdiskoptions} ramdisksdidevice boot
C:\WinPE_x86>bcdedit -store C:\BCD -set {ramdiskoptions} ramdisksdipath \Boot\boot.sdi
Nachdem die Ramdisk-Einstellungen gespeichert wurden, erstellen Sie einen Eintrag für das WinPE-Image.
C:\WinPE_x86>bcdedit -store C:\BCD -create /d "WinPE 4.0 Boot Image" /application osloader
Dieser Befehl sollte nun eine Meldung ausgeben welche wie folgt aussieht.
Der Eintrag wurde erfolgreich in {b1cd684d-7331-11db-b049-dfaf511725d9} kopiert.
Den angezeigten Hex-Wert müssen Sie bei den nächsten Befehlen anstelle von %GUID1% eingeben.
Mit den folgenden Befehlen werden die Einstellungen für das WinPE-Image vorgenommen. Achten Sie bitte besonders auf die Schreibweise der Verzeichnis- und Dateinamen.
C:\WinPE_x86>bcdedit -store C:\BCD -set %GUID1% systemroot \Windows
C:\WinPE_x86>bcdedit -store C:\BCD -set %GUID1% detecthal Yes
C:\WinPE_x86>bcdedit -store C:\BCD -set %GUID1% winpe Yes
C:\WinPE_x86>bcdedit -store C:\BCD -set %GUID1% osdevice ramdisk=[boot]\Boot\boot.wim,{ramdiskoptions}
C:\WinPE_x86>bcdedit -store C:\BCD -set %GUID1% device ramdisk=[boot]\Boot\boot.wim,{ramdiskoptions}
C:\WinPE_x86>bcdedit -store C:\BCD -set %GUID1% detecthal Yes
C:\WinPE_x86>bcdedit -store C:\BCD -set %GUID1% winpe Yes
C:\WinPE_x86>bcdedit -store C:\BCD -set %GUID1% osdevice ramdisk=[boot]\Boot\boot.wim,{ramdiskoptions}
C:\WinPE_x86>bcdedit -store C:\BCD -set %GUID1% device ramdisk=[boot]\Boot\boot.wim,{ramdiskoptions}
Zum Schluss werden noch die Einstellungen für den Bootmanager eingetragen.
C:\WinPE_x86>bcdedit -store C:\BCD -create {bootmgr} /d "Windows 8 Boot Manager"
C:\WinPE_x86>bcdedit -store C:\BCD -set {bootmgr} timeout 30
C:\WinPE_x86>bcdedit -store C:\BCD -set {bootmgr} displayorder %GUID1%
C:\WinPE_x86>bcdedit -store C:\BCD -set {bootmgr} timeout 30
C:\WinPE_x86>bcdedit -store C:\BCD -set {bootmgr} displayorder %GUID1%
Wenn alle Befehle erfolgreich ausgeführt wurden, kopieren Sie die erstellte BCD-Datei in den temporären PXE-Ordner.
C:\WinPE_x86>copy "C:\BCD" "C:\tftpboot\Boot"
Da wir nun alle benötigten Dateien erstellt und zusammen kopiert haben, können Sie den Ordner C:\tftpboot auf ihren PXE-Server übertragen.
PXE-Umgebung automatisiert erstellen
Damit Sie die Befehle aus den beiden vorherigen Abschnitten nich von Hand eingeben müssen, stelle ich Ihnen hier mein Batch-Skript zur Verfügung welches Sie nur in eine *.cmd Datei kopieren und dann als Administrator aufrufen müssen.
@echo off
rem
rem Build WinPE4.0_4_PXE
rem
rem 20120825 v1.0 Build WinPE4.0_4_PXE from the source files
rem
rem Current working directory where also the SP1 executable is located
rem Please don't touch!
set WORKDIR=%~dp0
rem Architecture of the Windows 8 DVD
rem Set "x86" for 32 bit architecture
rem Set "amd64" for 64 bit architecture
set ARCH=x86
rem Temporary working directories
set TEMPDIR=C:\WinPE_%ARCH%
rem Path to the Windows Assessment and Deployment Kit
set KITPATH=C:\Program Files (x86)\Windows Kits\8.0\Assessment and Deployment Kit
if not exist "%KITPATH%" goto E_KITPATH
rem ###################################################################
rem # NORMALLY THERE IS NO NEED TO CHANGE ANYTHING BELOW THIS COMMENT #
rem ###################################################################
set WinPERoot=%KITPATH%\Windows Preinstallation Environment
set OSCDImgRoot=%KITPATH%\Deployment Tools\AMD64\Oscdimg
if exist C:\tftpboot rmdir /s /q C:\tftpboot
if errorlevel 1 goto E_DELTMP
if exist "%TEMPDIR%" rmdir /s /q "%TEMPDIR%"
if errorlevel 1 goto E_DELTMP
md C:\tftpboot
if errorlevel 1 goto E_MDOUT
md C:\tftpboot\Boot
if errorlevel 1 goto E_MDOUT
call "%KITPATH%\Windows Preinstallation Environment\copype.cmd" %ARCH% "%TEMPDIR%"
cd ..
"%KITPATH%\Deployment Tools\%ARCH%\DISM\dism.exe" /Mount-Wim /WimFile:"%TEMPDIR%\media\sources\boot.wim" /Index:1 /MountDir:"%TEMPDIR%\mount"
if errorlevel 1 goto E_MOUNT
copy "%TEMPDIR%\mount\Windows\Boot\PXE\*.*" "C:\tftpboot\Boot"
if errorlevel 1 goto E_COPY
"%KITPATH%\Deployment Tools\%ARCH%\DISM\dism.exe" /Unmount-Wim /MountDir:"%TEMPDIR%\mount" /Commit
if errorlevel 1 goto E_UNMOUNT
copy "%KITPATH%\Windows Preinstallation Environment\%ARCH%\Media\Boot\boot.sdi" "C:\tftpboot\Boot"
if errorlevel 1 goto E_COPY
copy "%TEMPDIR%\media\sources\boot.wim" "C:\tftpboot\Boot"
if errorlevel 1 goto E_COPY
bcdedit -createstore C:\BCD
if errorlevel 1 goto E_BCD
bcdedit -store C:\BCD -create {ramdiskoptions} /d "Ramdisk Options"
if errorlevel 1 goto E_BCD
bcdedit -store C:\BCD -set {ramdiskoptions} ramdisksdidevice boot
if errorlevel 1 goto E_BCD
bcdedit -store C:\BCD -set {ramdiskoptions} ramdisksdipath \Boot\boot.sdi
if errorlevel 1 goto E_BCD
for /f "tokens=1-3" %%a in ('bcdedit -store C:\BCD -create /d "WinPE 4.0 Boot Image" /application osloader') do set GUID1=%%c
if errorlevel 1 goto E_BCD
bcdedit -store C:\BCD -set %GUID1% systemroot \Windows
if errorlevel 1 goto E_BCD
bcdedit -store C:\BCD -set %GUID1% detecthal Yes
if errorlevel 1 goto E_BCD
bcdedit -store C:\BCD -set %GUID1% winpe Yes
if errorlevel 1 goto E_BCD
bcdedit -store C:\BCD -set %GUID1% osdevice ramdisk=[boot]\Boot\boot.wim,{ramdiskoptions}
if errorlevel 1 goto E_BCD
bcdedit -store C:\BCD -set %GUID1% device ramdisk=[boot]\Boot\boot.wim,{ramdiskoptions}
if errorlevel 1 goto E_BCD
bcdedit -store C:\BCD -create {bootmgr} /d "Windows 8 Boot Manager"
if errorlevel 1 goto E_BCD
bcdedit -store C:\BCD -set {bootmgr} timeout 30
if errorlevel 1 goto E_BCD
bcdedit -store C:\BCD -set {bootmgr} displayorder %GUID1%
if errorlevel 1 goto E_BCD
copy "C:\BCD" "C:\tftpboot\Boot"
if errorlevel 1 goto E_COPY
if exist "%TEMPDIR%" rmdir /s /q "%TEMPDIR%"
if errorlevel 1 goto E_DELTMP
if exist C:\BCD del C:\BCD
if errorlevel 1 goto E_DELBCD
if exist C:\BCD.LOG del /a C:\BCD.LOG
if errorlevel 1 goto E_DELBCD
if exist C:\BCD.LOG1 del /a C:\BCD.LOG1
if errorlevel 1 goto E_DELBCD
if exist C:\BCD.LOG2 del /a C:\BCD.LOG2
if errorlevel 1 goto E_DELBCD
goto DONE
:E_KITPATH
set MESSAGE=Could not find the Windows ADK folder!
goto END
:E_DELTMP
set MESSAGE=Could not delete temporary folder!
goto END
:E_MDOUT
set MESSAGE=Could not create output folder!
goto END
:E_MOUNT
set MESSAGE=Could not mount boot.wim!
goto END
:E_COPY
set MESSAGE=Could not copy this file(s) into the output folder!
goto END
:E_UNMOUNT
set MESSAGE=Could not unmount boot.wim!
goto END
:E_BCD
set MESSAGE=BCDEdit failed!
goto END
:E_DELBCD
set MESSAGE=Could not delete temporary BCD files!
goto END
:DONE
cls
set MESSAGE=Done
goto END
:END
echo.
echo %MESSAGE%
echo.
pause
exit
rem
rem Build WinPE4.0_4_PXE
rem
rem 20120825 v1.0 Build WinPE4.0_4_PXE from the source files
rem
rem Current working directory where also the SP1 executable is located
rem Please don't touch!
set WORKDIR=%~dp0
rem Architecture of the Windows 8 DVD
rem Set "x86" for 32 bit architecture
rem Set "amd64" for 64 bit architecture
set ARCH=x86
rem Temporary working directories
set TEMPDIR=C:\WinPE_%ARCH%
rem Path to the Windows Assessment and Deployment Kit
set KITPATH=C:\Program Files (x86)\Windows Kits\8.0\Assessment and Deployment Kit
if not exist "%KITPATH%" goto E_KITPATH
rem ###################################################################
rem # NORMALLY THERE IS NO NEED TO CHANGE ANYTHING BELOW THIS COMMENT #
rem ###################################################################
set WinPERoot=%KITPATH%\Windows Preinstallation Environment
set OSCDImgRoot=%KITPATH%\Deployment Tools\AMD64\Oscdimg
if exist C:\tftpboot rmdir /s /q C:\tftpboot
if errorlevel 1 goto E_DELTMP
if exist "%TEMPDIR%" rmdir /s /q "%TEMPDIR%"
if errorlevel 1 goto E_DELTMP
md C:\tftpboot
if errorlevel 1 goto E_MDOUT
md C:\tftpboot\Boot
if errorlevel 1 goto E_MDOUT
call "%KITPATH%\Windows Preinstallation Environment\copype.cmd" %ARCH% "%TEMPDIR%"
cd ..
"%KITPATH%\Deployment Tools\%ARCH%\DISM\dism.exe" /Mount-Wim /WimFile:"%TEMPDIR%\media\sources\boot.wim" /Index:1 /MountDir:"%TEMPDIR%\mount"
if errorlevel 1 goto E_MOUNT
copy "%TEMPDIR%\mount\Windows\Boot\PXE\*.*" "C:\tftpboot\Boot"
if errorlevel 1 goto E_COPY
"%KITPATH%\Deployment Tools\%ARCH%\DISM\dism.exe" /Unmount-Wim /MountDir:"%TEMPDIR%\mount" /Commit
if errorlevel 1 goto E_UNMOUNT
copy "%KITPATH%\Windows Preinstallation Environment\%ARCH%\Media\Boot\boot.sdi" "C:\tftpboot\Boot"
if errorlevel 1 goto E_COPY
copy "%TEMPDIR%\media\sources\boot.wim" "C:\tftpboot\Boot"
if errorlevel 1 goto E_COPY
bcdedit -createstore C:\BCD
if errorlevel 1 goto E_BCD
bcdedit -store C:\BCD -create {ramdiskoptions} /d "Ramdisk Options"
if errorlevel 1 goto E_BCD
bcdedit -store C:\BCD -set {ramdiskoptions} ramdisksdidevice boot
if errorlevel 1 goto E_BCD
bcdedit -store C:\BCD -set {ramdiskoptions} ramdisksdipath \Boot\boot.sdi
if errorlevel 1 goto E_BCD
for /f "tokens=1-3" %%a in ('bcdedit -store C:\BCD -create /d "WinPE 4.0 Boot Image" /application osloader') do set GUID1=%%c
if errorlevel 1 goto E_BCD
bcdedit -store C:\BCD -set %GUID1% systemroot \Windows
if errorlevel 1 goto E_BCD
bcdedit -store C:\BCD -set %GUID1% detecthal Yes
if errorlevel 1 goto E_BCD
bcdedit -store C:\BCD -set %GUID1% winpe Yes
if errorlevel 1 goto E_BCD
bcdedit -store C:\BCD -set %GUID1% osdevice ramdisk=[boot]\Boot\boot.wim,{ramdiskoptions}
if errorlevel 1 goto E_BCD
bcdedit -store C:\BCD -set %GUID1% device ramdisk=[boot]\Boot\boot.wim,{ramdiskoptions}
if errorlevel 1 goto E_BCD
bcdedit -store C:\BCD -create {bootmgr} /d "Windows 8 Boot Manager"
if errorlevel 1 goto E_BCD
bcdedit -store C:\BCD -set {bootmgr} timeout 30
if errorlevel 1 goto E_BCD
bcdedit -store C:\BCD -set {bootmgr} displayorder %GUID1%
if errorlevel 1 goto E_BCD
copy "C:\BCD" "C:\tftpboot\Boot"
if errorlevel 1 goto E_COPY
if exist "%TEMPDIR%" rmdir /s /q "%TEMPDIR%"
if errorlevel 1 goto E_DELTMP
if exist C:\BCD del C:\BCD
if errorlevel 1 goto E_DELBCD
if exist C:\BCD.LOG del /a C:\BCD.LOG
if errorlevel 1 goto E_DELBCD
if exist C:\BCD.LOG1 del /a C:\BCD.LOG1
if errorlevel 1 goto E_DELBCD
if exist C:\BCD.LOG2 del /a C:\BCD.LOG2
if errorlevel 1 goto E_DELBCD
goto DONE
:E_KITPATH
set MESSAGE=Could not find the Windows ADK folder!
goto END
:E_DELTMP
set MESSAGE=Could not delete temporary folder!
goto END
:E_MDOUT
set MESSAGE=Could not create output folder!
goto END
:E_MOUNT
set MESSAGE=Could not mount boot.wim!
goto END
:E_COPY
set MESSAGE=Could not copy this file(s) into the output folder!
goto END
:E_UNMOUNT
set MESSAGE=Could not unmount boot.wim!
goto END
:E_BCD
set MESSAGE=BCDEdit failed!
goto END
:E_DELBCD
set MESSAGE=Could not delete temporary BCD files!
goto END
:DONE
cls
set MESSAGE=Done
goto END
:END
echo.
echo %MESSAGE%
echo.
pause
exit
Nachdem Sie das Batch-Skript aufgerufen haben, finden Sie unter C:\tftpboot die erzeugten Dateien, welche Sie auf ihren PXE-Server übertragen können.
Linux PXE-Server für WinPE 4.0 konfigurieren
Bevor Sie mit der Konfiguration des PXE-Servers beginnen können, müssen Sie einen DHCP-Server und einen TFTP-Server installieren und konfigurieren. Wenn Sie diese Voraussetzungen erfüllt haben, fügen Sie in der Datei /etc/dhcpd.conf den folgenden Abschnitt ein.
allow booting;
allow bootp;
next-server 192.168.10.1;
filename "/Boot/pxeboot.n12";
allow bootp;
next-server 192.168.10.1;
filename "/Boot/pxeboot.n12";
Die Option next-server gibt den PXE-Server an und ist in diesem Fall auch die IP-Adresse des DHCP-Servers. Wie bereits hingewiesen, können Sie auch hier anstelle der pxeboot.n12 die pxeboot.com verwenden.
Anschließend erstellen Sie die Datei /etc/remap und fügen den folgenden Abschnitt ein.
re bootmgr\.exe /Boot/bootmgr.exe
rgG [\] /
rgG [\] /
Öffnen Sie jetzt die Datei /etc/xinetd.d/tftp und ergänzen die folgende Zeile.
server_args = -s /tftpboot -m /etc/remap
Jetzt müssen Sie nur noch das Verzeichnis für die Bootdateien erstellen und diese hinein kopieren.
[root@centos6 ~]# mkdir -p /tftpboot/Boot
In diesem Verzeichnis sollten nun die folgenden Dateien existieren.
abortpxe.com
BCD
boot.sdi
boot.wim
bootmgr.exe
hdlscom1.com
hdlscom1.n12
hdlscom2.com
hdlscom2.n12
pxeboot.com
pxeboot.n12
WdsConfig.inf
wdsmgfw.efi
wdsnbp.com
BCD
boot.sdi
boot.wim
bootmgr.exe
hdlscom1.com
hdlscom1.n12
hdlscom2.com
hdlscom2.n12
pxeboot.com
pxeboot.n12
WdsConfig.inf
wdsmgfw.efi
wdsnbp.com
Damit wären die Vorbereitungen abgeschlossen und Sie können die Server-Dienste starten.
[root@centos6 ~]# service xinetd restart
[root@centos6 ~]# service dhcpd restart
[root@centos6 ~]# service dhcpd restart
Testen Sie anschließend ob WinPE 4.0 vom PXE-Server gestartet wird. Sollte es Probleme geben, überprüfen Sie die exakte Schreibweise der Dateien und Verzeichnisse. Wenn Ihnen hier noch kein Fehler auffällt, können Sie mit Hilfe von tcpdump überprüfen bei welcher Datei der Bootvorgang abgebrochen wird.
[root@centos6 ~]# tcpdump -i eth0
Tftpd32 für WinPE 4.0 konfigurieren
Tftpd32 (http://tftpd32.jounin.net) ist ein Windows-Programm welches einen DHCP- und TFTP-Server zur Verfügung stellt. In diesem Abschnitt des Tutorials möchte ich Ihnen die Konfiguration von Tftpd32 v4.00 für WinPE 4.0 zeigen.
Wenn Sie Tftpd32 unter Windows 7 starten, müssen Sie Tftpd32 den Zugriff auf das Netzwerk erlauben.

Sobald Tftpd32 gestartet ist, klicken auf Settings.

Es öffnet sich jetzt ein Fenster in welchem Sie die Einstellungen für Tftpd32 vornehmen. Ändern Sie im Register GLOBAL die Einstellungen wie im folgenden Screenshot gezeigt.

Wechseln Sie anschließend zum Reiter TFTP und ändern die Einstellungen wie folgt.

Als nächstes müssen Sie den DHCP-Server im Register DHCP noch konfigurieren.

Hinweis: Wenn Sie anstelle der Datei pxeboot.n12 die pxeboot.com angeben, müssen Sie beim Bootvorgang F12 drücken damit WinPE gestartet wird.
Nachdem Sie alle Einstellungen vorgenommen haben, speichern Sie diese mit einem Klick auf OK ab und starten Tftpd32 neu. Sobald Tftpd32 wieder gestartet ist, können Sie bereits Windows PE 4.0 vom Netzwerk starten. Sollten Sie Probleme beim Bootvorgang haben, öffnen Sie einfach den Log viewer von Tftpd32. Hier sollten Sie anhand der Meldungen recht schnell das Problem finden.
Weiterführende Tutorials
Booten vom Netzwerk: WinPE 4.0 via PXE starten
Dieser Eintrag wurde am 19.10.2013 erstellt und zuletzt am 24.01.2016 bearbeitet.
Direkter Link zu dieser Seite: http://www.gtkdb.de/index_27_2390.html
[ Zur Startseite ] [ Zur Kategorie ]
© 2004-2021 by Georg Kainzbauer