Why can I not get a WDS-originated PXE boot to progress past the first file download?

I’m trying to work out an automated Windows install process, and thought I’d give WDS a look. After some promising initial progress, I seem to have hit a wall. I imported the boot and install WIMs, and created the capture WIM successfully. However, whenever I try to PXE boot the reference machine against the WDS server, it kinda craps out. It finds the server and downloads WDSNBP.COM successfully, and then gives the message “TFTP download failed.”

According to WireShark, the only communication between the WDS box and the client box is the successful TFTP request and download of boot\x86\WDSNBP.COM. No further requests are sent. The WDS log on the server shows the same thing, one successful download and no more activity.

I’ve tried every combination of the following, with exactly zero change in behaviour:

  • Win Server 2008R2 vs 2012 vs 2012R2

  • WDS virtualized on KVM, ESXi, VirtualBox, VMWare Workstation

  • Client virtualized on KVM, ESXi, VirtualBox, VMWare Workstation

  • Every network adaptor type offered by the virtualization platforms.

  • “Actual” network vs isolated, virtual network.

  • MS DHCP server vs Linux isc-dhcp-server

  • Joined to a domain vs Stand-alone

I tried changing the boot filename in DHCP to pxeboot.com instead, and it has no problem downloading that file instead, but it then crabs about Boot\BCD being corrupted. Also, with 2012, it doesnt appear that WDSNBP.com does the architecture detection, or at least does’nt report that it did. 2008 reports that it found x64, and then errors.

I find myself out of things to check, and I dont see anything immediately wrong. Where do I go from here?

WDS server is at, DHCP/DNS at

Console of the client computer after the boot:

MAC: 52:54:00:28:94:0E UUID: blah blah
Searching for server (DHCP).....
Me:, DHCP:, Gateway
Loading\x86\wdsnbp.com ...(PXE).................done

Downloaded WDSNCP...

TFPT download failed

Interesting parts of /etc/dhcp/dhcpd.conf on the Linux DHCP server:

allow booting;
allow bootp;
option option-60 code 60 = string;
option option-66 code 66 = string;
option option-67 code 67 = string;

subnet netmask {
    option tftp-server-name "";
    option option-60 "PXEClient";
    filename "boot\\x86\\wdsnbp.com";
    option bootfile-name "boot\\x86\\wdsnbp.com";


Leave a Reply