Multiple WinPE

It's possible to setup a PXE server to boot more than one version of WinPE - one method was covered in the wimboot section of this guide (here). It's also possible to use a BCD Store with multiple entries as an alternative to wimboot - this is covered below.

WinPE operating system files are contained in a .wim file - despite most instructions specifying the use of boot.wim the name of the .wim file is irrelevant. One of the main reasons for using boot.wim (in the path \sources\boot.wim) is convenience - the BCD Store that ships with WinPE usually uses this path and it saves building a new store. Provided that the BCD store contains a corresponding entry for the file an alternative name (to boot.wim) and path can be used.

The majority of rules applying to WinPE boot files and file paths on other media also apply to PXE Booting - with some exceptions -

The following sections are covered in this page -

BCD Store examples (each section includes a link to a sample batch file used to create the store and a link to download the BCD) -

My personal preference is to keep all WinPE files in one directory - all of the BCD stores in this section consequently use the \boot path for both .sdi and .wim files.

Fonts

Some font files may be required in order to display error messages. When booting WinPE via PXE the Windows boot loader boot.exe will attempt to load \boot\fonts\wgl4_boot.ttf - if this file is missing WinPE will still boot, however there will be an error in the Tiny PXE Server log. E.g. -

Based on information on the wimboot website (see here) the following font files are required -

boot.sdi

As stated previously, the WinPE operating system files are contained in a .wim file. The ramdisk used to mount the .wim file so that the filesystem is accessible once WinPE has booted is contained in an .sdi file - usually \boot\boot.sdi. Again, this filename and path can be changed as long as the BCD store contains a corresponding entry. In my own tests I have been able to use the same .sdi file for booting WinPE 3.*/4.0/5.* on UEFI and BIOS systems and have consequently used the \boot\boot.sdi file\path in the examples below out of lazyness convenience.

Improve Loading Speeds

It's possible to add additional settings to a BCD store to improve file transfer speeds when booting WinPE via TFTP. The following settings need to be added to the ramdisksdidevice entry in the BCD store -

Supported values for ramdisktftpblocksize include -

The following information is from the Windows Deployment Services Deployment Guide -

"...The default TFTP block size value is 1432 bytes...We recommend that you go up in multiples (4096, 8192, 16384, and so on) and that you not set a value higher than 16384...."

Supported values for ramdisktftpwindowsize include -

Changing either of these settings may cause issues - depending on the network infrastructure. There are reports of issues with PXE booting in VMware using a RamDiskTFTPBlockSize larger than 1432.

"...VMware does not appear to support RamDiskTFTPBlockSize above 1432 due to no support to deal with IP Fragmentation. However, it has been found that it is much better to adjust RamDiskTFTPWindowSize instead of RamDiskTFTPBlockSize to speed up TFTP (reduces amount of ACKs required and does not cause IP Fragmentation). VMware and other vendors all appear to handle this scenario perfectly..."

I carried out some test to ascertain WinPE load speeds using a BCD Store containing four separate entries - for use on BIOS systems (download the BCD store here - batch file here). Menu options -

The following (approximate) boot times were recorded on a test system (time was recorded from selecting the menu entry until the "Windows is loading files..." screen closed) -

boot.wim (BIOS)

This BCD Store contains one entry for use on BIOS systems - download here (batch file - here). The following files are required -

boot.wim (UEFI)

This BCD Store contains one entry for use on UEFI systems - download here (batch file - here). The following files are required -

boot.wim (BIOS & UEFI)

This BCD Store contains two entries - one entry for use on BIOS systems (menu option WinPE (boot.wim - BIOS)) and one entry for use on UEFI systems (menu option WinPE (boot.wim - UEFI)). Download here (batch file - here). The following files are required -

x86.wim and x64.wim (BIOS)

This BCD Store contains two entries - both for use on BIOS systems. Menu options -

Download here (batch file - here). The following files are required -

x86.wim and x64.wim (UEFI)

This BCD Store contains two entries - both for use on UEFI systems. Menu options -

Download here (batch file - here). The following files are required -

x86.wim and x64.wim (BIOS & UEFI)

This BCD Store contains four entries - two for use on UEFI systems and two for use on BIOS systems. Menu options -

Download here (batch file - here). The following files are required -

Document date - 28th February 2017(DRAFT)