Sequence of Windows OS files read at the time of installation

I have absolutly no confidence that the default windows EFI bootloader is able to boot from a PXE/tftp system but there are a few thing that need to be verified first:

  • the module msdos_part is supposed to read a local drive msdos-type partition (opposed to a gpt type partition), since you are net-booting this has no business to do here

  • Unix is case sensitive, win_files and Win_files isn't the same folder

  • there is no bootx64.efi on the root of the windows 10 iso i have, there is however a bootmgr.efi there, and a bootx64.efi in efi/boot/

  • What is your TFTP root ? if it is '/tftboot' then your chainloader should probably be something more like

    • chainloader nbi_image/win_files/bootmgr.efi or
    • hainloader nbi_image/win_files/efi/boot/bootmgr.efi

I figured out the solution:

sudo vim /etc/tftp.remap

Add the following lines:

# Map the paths
r ^\\boot\\ EFI/winpe/Boot/
r ^\\Boot\\ EFI/winpe/Boot/
r ^\\sources\\ EFI/winpe/sources/
# Convert backslashes to slashes
rg \\ /

Open tftp-hpa file:

sudo vim /etc/default/tftpd-hpa

Modify accordingly:

TFTP_OPTIONS="-vvv --secure --ipv4 --map-file /etc/tftpd.remap"

Run:

sudo service tftpd-hpa restart

dhcp configuration:

 sudo vim /etc/dhcpd.conf

Modify accordingly:

if option arch = 00:06 {
    filename "bootia32.efi";
} else if option arch = 00:07 {
    filename "EFI/grub2/grubnetx64.efi";
    #filename "bootx64.efi";

The grubnetx64.efi is from the archive link: Ubuntu Archive.

sudo mkdir grub
cd grub/
sudo vim grub.cfg

Add the following line:

configfile grub-efi.cfg/grub.cfg

Edit the file:

sudo vim grub-efi.cfg/grub.cfg

Add:

menuentry "Windows 10 RS4" --id win10rs4 {
  echo "Entering windows installation environment..."
  insmod chain
  insmod fat
  insmod part_gpt
  chainloader /EFI/Boot/bootx64.efi
}

The sequence of files to execute (including PXE menu selection) is:

grubnetx64.efi -> bootx64.efi -> BCD -> boot.sdi -> winpe.wim