Boot WinPE from Linux PXE Server

The information in this article may be outdated

Get WAIK

Download [[https://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=94bb6e34-d890-4932-81a5-5b50c657de08|Automated Installation Kit (AIK) for Windows Vista SP1 and Windows Server 2008]] and install.

create mkWinPE.cmd and execute

“C:\Program Files\Windows AIK\Tools\x86\imagex.exe” /unmount /commit c:\winpe_x86\mount
if exist c:\WinPE_x86 rd c:\WinPE_x86 /S /Q
md c:\WinPE_x86
md c:\WinPE_x86\ISO
md c:\WinPE_x86\mount
if exist “C:\Program Files\Windows AIK\Tools\PETools\x86\bootmgr” copy “C:\Program Files\Windows AIK\Tools\PETools\x86\bootmgr” “c:\WinPE_x86\ISO”
if exist “C:\Program Files\Windows AIK\Tools\PETools\x86\bootmgr.efi” copy “C:\Program Files\Windows AIK\Tools\PETools\x86\bootmgr.efi” “c:\WinPE_x86\ISO”
if exist “C:\Program Files\Windows AIK\Tools\PETools\x86\boot\etfsboot.com”copy “C:\Program Files\Windows AIK\Tools\PETools\x86\boot\etfsboot.com” “c:\WinPE_x86”
if exist “C:\Program Files\Windows AIK\Tools\PETools\x86\boot\efisys.bin” copy “C:\Program Files\Windows AIK\Tools\PETools\x86\boot\efisys.bin” “c:\WinPE_x86”
if exist “C:\Program Files\Windows AIK\Tools\PETools\x86\boot” xcopy /cherky “C:\Program Files\Windows AIK\Tools\PETools\x86\boot” “c:\WinPE_x86\ISO\boot\”
if exist “C:\Program Files\Windows AIK\Tools\PETools\x86\EFI” xcopy /cherky “C:\Program Files\Windows AIK\Tools\PETools\x86\EFI” “c:\WinPE_x86\ISO\EFI\”
copy “C:\Program Files\Windows AIK\Tools\PETools\x86\winpe.wim” “c:\WinPE_x86\winpe.wim”
copy “C:\Program Files\Windows AIK\Tools\PETools\x86\winpe.wim” “c:\WinPE_x86\ISO\sources\boot.wim”

if exist c:\tftpboot rd c:\tftpboot /S /Q
md c:\tftpboot
md c:\tftpboot\Boot
md c:\tftpboot\Boot\Fonts

bcdedit -createstore c:\tftpboot\Boot\BCD
Bcdedit /store c:\tftpboot\Boot\BCD /create {ramdiskoptions} /d “Ramdisk options”
bcdedit /store c:\tftpboot\Boot\BCD /set {ramdiskoptions} ramdisksdidevice boot
bcdedit /store c:\tftpboot\Boot\BCD /set {ramdiskoptions} ramdisksdipath \Boot\boot.sdi
for /f “Tokens=3” %%i in (‘bcdedit /store c:\tftpboot\Boot\BCD /create /d “WinPE 2.0” /application osloader’) do set GUID=%%i
bcdedit /store c:\tftpboot\Boot\BCD /set %GUID% systemroot \Windows
bcdedit /store c:\tftpboot\Boot\BCD /set %GUID% detecthal Yes
bcdedit /store c:\tftpboot\Boot\BCD /set %GUID% winpe Yes
bcdedit /store c:\tftpboot\Boot\BCD /set %GUID% osdevice ramdisk=[boot]\Boot\winpe.wim,{ramdiskoptions}
bcdedit /store c:\tftpboot\Boot\BCD /set %GUID% device ramdisk=[boot]\Boot\winpe.wim,{ramdiskoptions}
bcdedit /store c:\tftpboot\Boot\BCD /create {bootmgr} /d “WinPE 2.0”
bcdedit /store c:\tftpboot\Boot\BCD /set {bootmgr} timeout 1
bcdedit /store c:\tftpboot\Boot\BCD /set {bootmgr} displayorder %GUID%
bcdedit /store c:\tftpboot\Boot\BCD

“C:\Program Files\Windows AIK\Tools\x86\imagex.exe” /mountrw c:\WinPE_x86\winpe.wim 1 c:\WinPE_x86\mount
“c:\Program Files\Windows AIK\Tools\PETools\peimg.exe” /install=WinPE-HTA-Package c:\winpe_x86\mount\Windows
“c:\Program Files\Windows AIK\Tools\PETools\peimg.exe” /install=WinPE-MDAC-Package c:\winpe_x86\mount\Windows
“c:\Program Files\Windows AIK\Tools\PETools\peimg.exe” /install=WinPE-Scripting-Package c:\winpe_x86\mount\Windows
“c:\Program Files\Windows AIK\Tools\PETools\peimg.exe” /install=WinPE-XML-Package c:\winpe_x86\mount\Windows
imagex /unmount c:\WinPE_x86\mount /commit

copy c:\winpe_x86\mount\Windows\Boot\PXE\*.* c:\tftpboot\
copy “c:\Program Files\Windows AIK\Tools\PETools\x86\boot\boot.sdi” c:\tftpboot\
copy c:\winpe_x86\winpe.wim c:\tftpboot\
copy “c:\WinPE_x86\ISO\boot\fonts\wgl4_boot.ttf” c:\tftpboot\Boot\Fonts

DHCP

<code>
apt-get install dhcp3-server
….
</code>

edit /etc/dhcpd/dhcpd.conf

host tftpclient {
hardware ethernet [MAC-Adresse des PXE Clients];
fixed-address [IP-Adresse des PXE Clients];
filename “Boot/pxeboot.n12”;

TFTP

apt-get install tftpd-hpa

edit /etc/default/tftpd-hpa

RUN_DAEMON=”yes”
OPTIONS=”-v -l -m /etc/default/tftpd.rules -s /tftpboot”

create /etc/default/tftpd.rules

rg \\ / # Convert backslashes to slashes

PXE

[[http://syslinux.zytor.com/pxe.php]]

….

/tftpdboot/pxelinux.cfg/default

label winpe2
kernel /Boot/pxeboot.n12