This week I had the great fortune of hanging out with fellow MVP Dave Kawula and OSD guru Emile Cabot during the #OSDWeek in Calgary. Yesterday we installed and configured the 1E PXE Lite software that allows normal Windows clients act as PXE servers for ConfigMgr 2012. Though it worked perfectly well, I thought the boot image download process was much slower than it used to be (almost 80 seconds in a virtual machine), and after some research I noted that the PXE Lite setup didn't set the TFTP Ramdisk blocksize in the default .bcd file, but instead was using the default of 1456 bytes. Well, cranking it up to 16384 makes it much faster.
Modifying the .bcd entry to speed up the network boot.
After doing the following changes, my 80 seconds download, went down to about 20 seconds.
Note: This may very well be unsupported by 1E so please don't call their support about issues with this 🙂
- Figure out where your PXE Lite enabled boot image is, in my environment it was in the C:\ProgramData\1E\PXELite\TftpRoot\Images\PS100019 folder
- Make a backup copy of the .bcd file (boot.PS100019.bcd in my example).
- Open an elevated command prompt, and type the following command:
bcdedit /store C:\ProgramData\1E\PXELite\TftpRoot\Images\PS100019boot.PS100019.bcd /set {ramdiskoptions} ramdisktftpblocksize 16384
- Done, now the boot image downloads much quicker. If you want to verify the configuration, you can run the following command:
bcdedit /enum all /store C:\ProgramData\1E\PXELite\TftpRoot\Images\PS100019\boot.PS100019.bcd
The bcdedit commands executed.
The PXELiteServer.log showing the new block size.
Happy deployment, / Johan
This change ended up biting me in the behind after months of success on all my systems.
But then I got a HP Elitebook 745 G2 and it would not PXE boot. Luckily I remember making this change so I set it back to the default 1456 and restarted WDS services. Then it worked fine again.
Be careful setting this value.
Possibly a BIOS update would resolve this, but I'm not about to update all our systems BIOS for a few seconds saving on boot time.
Keep in mind, CreateBCD.exe should be run as a task step in a task sequence which has the desired 1E PXE Everywhere boot image assigned to it. To set the tftpBlocksize, follow these instructions – help.1e.com/display/PXE22/CreateBCD.exe+command-line+switches If you've already deployed PXE Everywhere and you'd like to modify the tftpBlocksize, you will need to first modify the CreateBCD.exe task step in the task sequence and then rerun the advertisement/deployment on the targeted PXE Everywhere local host workstation(s). Note/WARNING: As Johan eluded to earlier: Some hardware may not support block size values higher than 16384 bytes and hence may fail to PXE… Read more »
After testing real quick, it looks like the above reg key only sets the maximum allowed, it doesn't actually specify the block size to be used. Johan's trick is still necessary to speed up the process!
There is a MaxBlockSize DWORD registry key you can set under the HKLMSoftwareWow6432Node1EPXELite key to control this but I haven't done any testing with it. Might be worth a shot.
I haven't tried doing this en masse, and I'm note sure if running that command on all PXE Lite Clients is the best approach… It could be that there are other mechanisms in the product that can be used to create/update the package.bcd file. Also, please not that you may have hardware out there not capabale of reading 16 kb packages, so you need to test. Most machines new than 3 – 4 years normally works fine, but there can be expceptions, as well as older BIOS versions that does not support it. If 16 kb block size fails, you… Read more »
We currently have PXE Lite deployed throughout our environment. Do you know how I can apply this setting to all current pxe lite clients?
Never mind.
So, I tired this out and I keep getting an error:
An error occurred while attempting to reference the specified entry.
The system cannot find the file specified.
The "/enum all" command works fine.
So, I tired this out and I keep getting an error:
An error occurred while attempting to reference the specified entry.
The system cannot find the file specified.
The "/enum all" command works fine.