File Not Found Resolution
-
This was perhaps a bit of an obscure case, but just in case this helps anyone…
I had an old thin-client terminal (not sure how old, but probably circa 2005). I was getting so frustrated because I couldn’t get it to successfully PXE network boot. It kept giving the error
File not found
. I tried many different tftpboot files (ipxe.pxe
,undionly.pxe
, etc.). It wasn’t until I started live monitoring tftp traffic that I found the problem.By running this command in a terminal on the Fog Server:
tcpdump port 69
, I was able to detect that for some reason the client was requesting a filename that was missing the last character. For example, if my DHCP config was set to request filenameipxe.pxe
, the problem client would actually end up requestiongipxe.px
(missing thee
on the end). It’s so odd because only one client was doing this and another client was working fine. To get this client to work I had to add an extra character on the end in the DHCP config (for example,ipxe.pxez
). -
@jmcooper The fault probably exists with the PXE boot rom on the device.
The answer is probably a bit complicated to explain so I’ll try to keep it simple.
PXE booting can use one of the two protocols bootp or dhcp. Its up to the hardware manufacturer to decide which set of fields it looks at for the pxe boot information.
The second part is kind of a dhcp server / pxe rom issue. On each dhcp/or bootp fields there is a byte counter that tells the pxe rom how many characters are in the field name. Common convention also marks the end of a text string with a null (0x00) character. Its up to the dhcp server and pxe rom programmer to decide which method to use (I’m sure there is an RFC document that describes this). I have personally seen this in which someone was not using a mainstream dhcp server, where it only populated the byte counter field and then never terminated the string with a null character. In this case the pxe rom used the null character as end of string and the name requested from the target computer was ipxe.kpxe<with extra characters at the end until a null byte was found>
While I can explain it, it still sucks that the pxe rom firmware is doing this to you.