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