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 192.168.1.50, DHCP/DNS at 192.168.1.7.
Console of the client computer after the boot:
MAC: 52:54:00:28:94:0E UUID: blah blah
Searching for server (DHCP).....
Me: 192.168.1.155, DHCP: 192.168.1.7, Gateway 192.168.1.1
Loading 192.168.1.50:boot\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 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.110 192.168.1.253;
next-server 192.168.1.50;
option tftp-server-name "192.168.1.50";
option option-60 "PXEClient";
filename "boot\\x86\\wdsnbp.com";
option bootfile-name "boot\\x86\\wdsnbp.com";
}