we have successfully integrated Windows PE 2.0 in our existing pxelinux
based PXE environment - no major problems with that.
However, there is one point we did not achieve yet:
We want to be able to boot different Windows PE environments (eg. depending
on the IP address or a user selection).
For example, our default image is a very basic Windows PE without any major
modifications. However, in our labs we want to start an environment that
automatically reinstalls the computers. And other computers do not need the
x86 but the amd64 version of Windows PE.
Our problem is that we did not find a way to cleanly do this, as Windows PE
at least at one point seems to have a hard coded path entry and we do not
know how/if we can change this.
I will try to describe our installation and the PXE boot to make clear what
exactly our problem is:
To create the Windows PE image for a PXE deployment, we used the following
(with some help from
We copied the files to the right place at our TFTP server.
When a client boots, the following happens:
The client gets its TFTP server and the file to load using PXE. This way the
client boots a boot menu (using pxelinux and (vesa)menu.c32). In this boot
menu, a user can select different boot entries; the menu displayed depends on
the clients (eg. staff vs. computer labs).
Now one of these boot entries is Windows PE. If this is selected, the
following steps are run:
- the PXE boot system loads pxeboot.n12 (that we had to rename to pxeboot.0)
- pxeboot.n12 loads the boot manager, bootmgr.exe
This path (in the root of the TFTP server) seems to be predefined.
- the boot manager loads Boot\BCD
This path seems to bbe predefined, too.
- The boot manager reads the config file (BCD)
It loads the ramdisk boot.sdi and the WIM file (WinPE.wim).
The WIM file can be specified using the options ramdiskath and
device ramdisk= using bcdedit.
- Windows PE starts.
The problem is that the path to the BCD file is hard coded.
We could change the BCD file to provide multiple different WIM files.
However, this is one step too late for us:
The BCD file is not client specific. It is not possible to specify different
WIM files for different clients. Therefore we cannot boot different
environments on different hosts without user intervention.
Therefore, what we would need is a possibility to change the path to or the
name of the BCD file. Then we could load different Windows PE configurations
The problem is, that the file- and pathnames up to this point are all fixed
- at least I did not find a documented way to change them.
I even had a look at bootmgr using a hex editor, but I could not find where
it is loaded there ...
Is there any way to change that filename or path?
Ideally this would be some kind of environment variable (passed using the
"append" statement of pxelinux).