2

Some time ago I configured network boot for my Raspberry Pi's, so that they boot off of my main server. Since the Pi's do things a little bit differently, I though it could be fun to get PXE Boot working on an x86 test machine. I found some guides that I read through, and it's not all that different from the Pi setup, except that it also involves Option 67 on the DHCP whereas the Pi's only use Option 66.

I have everything configured on the server, but I cannot really test it because the machines do not seem to read Option 66 from the DHCP. I tried on my test machine, my own workstation and I even setup a virtual machine. They read Option 67 just fine, but the server address targets the gateway (DHCP) itself.

I use a TP-Link ER605 router via Omada. Option 66 on the DHCP is set to the PXE Server at 192.168.69.59 while the Gateway is at 192.168.69.254. Option 67 is set to syslinux.efi.

This is the output when booting

>>Start PXE over IPv4.
  Station IP address is 192.168.69.101

  Server IP address is 192.168.69.254
  NBP filename is syslinux.efi
  NBP filesize is 0 bytes
  PXE-E99: Unexpected network error.

I know that the Option 66 is working as it should on the DHCP, because my RPI's are still booting just fine.

I have spent the day searching this problem. I cannot seam to fine anyone with this issue, and as far as I can tell, it should combine Option 66 and 67 into a full TFTP path for the syslinux boot file. However, every guide that I have found installs a separate DHCP on the PXE server itself, so if they target the server incorrectly in those guides, it does not mean anything as the IP would be correct anyway.

1
  • I found this answer quite helpful.
    – Thorreke
    Commented Dec 5, 2023 at 2:45

2 Answers 2

0

I found this article that may explain the issue. Seams like PXE and the Options 66/67 work a bit differently than most people seams aware of?

The DHCP server can fool most client firmware in this manner, but not all. Some firmware are too trusting. When it is time to download the boot files, it will try to download them from the DHCP server. After all, the DHCP server did say that IT IS the PXE server. This will of course fail - the DHCP server does not have any boot files.

I thought the idea of Option 66 was to pass that information to the client, when in fact it sounds more like it's internally used by the DHCP to forward the communication from client to server.

So if I get this right, it means that you will need to run a second DHCP on the PXE server, so that download request for the boot file targets the correct IP.

0

According to RFC2132, option 66 is the name of the TFTP server and option 67 is the filename to fetch from the TFTP server. So there is not necessarily the need for a separate server (or a second DHCP server) but for sure for a separate protocol: TFTP. Some DHCP servers have a TFTP server included, some not. There is no routing going on, at least not in the implied configuration, because everything seems to be on the same subnet. The client uses the DHCP servers answer to contact the TFTP server for the file. That‘s it and the client does not know nor does it care if the two protocols are hosted on the same device or within the same software.

RFC2132 also states that option 66 is a name with a minimum length of 1. If you specify an IP address and not a name, then it is (client side) implementation dependent if it works. My suspicion is that it works for the Raspis but not for the x86 box, because the Raspis interpret option 66 as an IP address and the x86 box does not. If my theory is right then after changing option 66 to a name it should work for both.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .