Some useful things to try / consider when troubleshooting ipxe errors
- The ipxe error code contains a URL. Use it! Often not too helpful, but it will link to source code and you can perhaps trace through to understand why the error code is generated (check evaluations, if statements etc)
- Check DNS (sometimes a resource may be chain loaded or included using FQDN, whereas the initial iPXE load might be using IP address only)
- Curl the URL (i.e. the resource iPXE is loading) from another host (to check if the HTTP error code is more useful)
- If a curl fails, Check for IIS (or other web service) denying access to certain types of files - if the fiel (e.g. kernel) doesn't have an extension, try replace it with a dummy file with an extension (e.g. test.txt) and see if it allows some types but not others (then check MIME types - may need to add a "." plain/text entry)
- Switch on verbose access logs
- PCAP - capture packets on the iPXE server and verify what connections are being attempted. (and/or mirror the port in ESX, etc to capture all traffic in/out)
- Try adding another dhcp renewal after a menu. I found this helped with certain breeds of workstations
- Check DHCP scope options (ensure everything is correctly set for gateway, PXE, DNS, etc)
- Check for URL rewrites
- iPXE kernel type - ipxe can be custom built with various capabilities. sometimes iPXE may be overwritten (e.g. by an upgrade of related software) with a newer version. Ensure that all protocols you desire (e.g. HTTP, NFS, TFTP etc) are compiled into your iPXE kernel.
- https://rom-o-matic.eu/ - plenty of resources online to help build custom iPXE images. You don't really need to bother doing anything yourself manually anymore.