Good to Know Database

WinPE 5.0: Windows PE 5.0 via PXE booten


Microsoft Windows Preinstallation Environment (WinPE) 5.0 ist ein abgespecktes Windows Betriebssystem welches auf Windows 8.1 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 5.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.1. Den Installer für das Windows Assessment and Deployment Kit (ADK) für Windows 8.1 können Sie von der folgenden Webseite herunterladen.

http://www.microsoft.com/de-de/download/details.aspx?id=39982

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 5.0 System erstellen welches für Rechner mit x86-Architektur gedacht ist.

C:\Program Files (x86)\Windows Kits\8.1\Assessment and Deployment Kit\Deployment Tools>cd "..\Windows Preinstallation Environment"
C:\Program Files (x86)\Windows Kits\8.1\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

Wie Sie sehen erstelle ich auch einen weiteren Unterordner. Da man oft verschiedene Systeme von einem PXE-Server starten möchte, wird hier WinPE 5.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.1\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.1\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.1\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"

Hinweis: Hier wird das original WinPE 5.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

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 5.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}

Zum Schluss werden noch die Einstellungen für den Bootmanager eingetragen.

C:\WinPE_x86>bcdedit -store C:\BCD -create {bootmgr} /d "Windows 8.1 Boot Manager"
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 WinPE5.0_4_PXE
rem
rem 20131005 v1.0 Build WinPE5.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.1\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 5.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.1 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 5.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";

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 [\] /

Ö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

Damit wären die Vorbereitungen abgeschlossen und Sie können die Server-Dienste starten.

[root@centos6 ~]# service xinetd restart
[root@centos6 ~]# service dhcpd restart

Testen Sie anschließend ob WinPE 5.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 5.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 5.0 zeigen.

Wenn Sie Tftpd32 unter Windows 7 starten, müssen Sie Tftpd32 den Zugriff auf das Netzwerk erlauben.

Windows PE 5.0 via PXE booten 1

Sobald Tftpd32 gestartet ist, klicken auf Settings.

Windows PE 5.0 via PXE booten 2

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.

Windows PE 5.0 via PXE booten 3

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

Windows PE 5.0 via PXE booten 4

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

Windows PE 5.0 via PXE booten 5

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 5.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 5.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_37_2392.html

[ Zur Startseite ]   [ Zur Kategorie ]


Valid XHTML 1.0 Transitional Valid CSS Valid Atom 1.0

© 2004-2018 by Georg Kainzbauer