Client PC,Notebooks and Tablets can PXE boot and download the images from a server. This method supports both UEFI and Legacy modes. For that to work on a single server, the PXE boot menu will provide 4 boot options.

WinPE PXE Boot UEFI and Legacy
In this example server 2012 standard operating system was used.
DHCP server installed within server 2012 installation on the same unit

Set a a static IP address for the Server

-attach a network cable going to a switch- often static address does not take effect without this

-default gateway and DNS leave blank-

Change Server name to something more memorable- as this name will be used in later steps
-change it to Imageserver

Add DHCP server

in Server manager Dashboard- Manage–Add Roles and Features-
-changed server name and static IP address should be visible – Just follow the prompts- select DHCP and select Features pop up
Once DHCP installation is complete- in the same screen select ‘Complete DHCP Configuration’ commit.

start DHCP- add a new scope to exclude server IP
-select configure other options later-
if there is a red mark on scope-right click scope and ‘Activate’

Install Solarwinds TFTP server

It may ask for Net Framework 3.5- install from server Manager Dashboard-Manage- add roles and Features-Select features this time- check network 3.5 features box — Must select ‘specify an alternate source path’ at the bottom of this window put your server installation media, DVD or USB and specify this path with correct drive letter
D:\Sources\sxs\ install solarwinds TFTP now

Solarwinds TFTP server will create a folder in C:\ called TFTP-Root. This is the Solarwind’s default folder for boot files.
Create another folder called ‘ Boot’ in this folder. This folder will host all the PXE boot files.

Create another folder inside C:\TFTP-Root and name it ‘Boot’
Make TFTP-Root a shared folder.
‘Boot’ folder will keep the PXE capable boot files and when a client PXE boots, it will boot from the files compiled here.
Mount the boot.wim file from the ‘Media’ folder created when making a bootable USB
Refer to this article for making USB and mounting boot.wim. ADK installation is required. It is explained in this article

How To Create Windows 10 Image – UEFI Legacy on Bootable USB

In the mounted boot.wim -windows-Boot folder. There is a PXE folder. Copy all the contents of PXE folder to C:\TFP-Root\Boot folder.

Copy boot.sdi from Media\Boot to C:\TFTP-Root\Boot
This is optional, Copy true type Fonts folder from Media \Boot to TFTP-Root\Boot

Copy boot.wim from Media\Source to C:\TFTP-Root\Boot
-You have to copy both 64-bit and 32-bit. Since both are named boot.wim and cannot be in the same folder, name the 32-bit x86.wim and 64-bit x64.wim. Both these wim files are not ready yet. These need to be mounted and commands added to connect to the images folder
EDIT wim Files
Mount x86.wim
In the mounted folder windows-syatem32 , you have to add two files winpeshl.ini and connect.cmd
You can download the files from here -or use the script to create
Change connect.cmd to reflect your server name password, drive letter and share name
Unmount the wim file with commit command
Do the same for x64.wim
Copy both files to TFTP-Root\Boot folder
BCD Store
A boot configuration Data file needs to be created and copied to TFTP-Root\Boot folder. This BCD file will show multiple operating systems to boot, as in the screenshot at the top
I have created this BCD file and it can be downloaded from below. –or batch file to create –or script of batch file

Copy BCD file to TFTP-Root\Boot folder.
IF DHCP was set correctly, TFTP server is running without errors, all the necessary files are in the boot folder and sharing is enabled, pxe boot client machine, it should connect to the server show the boot manager’s four options screen. Select the applicable one.

How to Setup Mixed Mode Boot on the same Server- UEFI and Legacy

For Legacy and UEFI to work together in a single server vendor classes needs to be defined

In DHCP – right click on IPV4 and select Define Vendor Classes, select Add

Define Vendor Classes PXE
Give it a display name of UEFI64- description can be UEFI 64 boot or any other-
Under ASCII type PXECLIent:Arch:00007 this will appear in multiple lines and will generate a code on the other side- Type exactly as shown . It is case sensitive. -and click OK

Case Sensitive
Create another one for UEFIx86 – right click IPV4 again and select Define vendor classes Give display name UEFIx86
Description any- Type uder ASCII PXECLient:Arch:00006 – and click OK
The above two are for UEFI
Foe legacy create another ,type under ASCII PXEClient:Arch:00000


Create Policies

select add new policy

In DHCP-right click Policies-New Policy type a policy name i.e ‘UEFIx64’ in Description ‘UEFIx64 Policy’

Add Policy

Next- Add- in ‘value’ drop down menu select UEFIx64- check Append Wildcard- click ‘Add’-Next

Add Policy

set 066 to server IP address
067 to \boot\bootx64.efi     -click OK


PXE Boot Option )67

this needs to be repeated for UEFIx86 and Legacy- three policies will be created in the end

For UEFIx86 the 067 boot file name should be \boot\boootia32.efi

For Legacy 067 file name \boot\pxeboot.n12


—  if it seems that the policy settings are not taking effect, the indication is when it boots from the file name in server boot options instead of policy, then go to IPV4 right click and define vendor classes DELETE the offending entry- close – before creating vendor class delete the corresponding Policy entry as well. Now create first the ‘Define Vendor class’ and create policy for it again. This worked.–

shared image folder should be created-ghost 32 is in a ‘es’ folder in shared images folder

Note: Ghost here is shown as an example. It is a paid program; you have to purchase a license to use it. But it is the most user friendly and reliable program for imaging on the planet. Ghost 12 fully supports UEFI architecture. You can use any other program here that works similar to ghost if you already have the license for it.

Please share your thoughts below. This may not be as detailed but if you have any questions please let me know.