ERROR: Boot option loading failed

When PXE Booting an AARCH64 server, the above message probably means that you are fetching an x86_64 image for iPXE, not ARM64. Here’s how I debugged it.

You can check by looking in the DHCP messages for the file. I track this using tcpdump:

sudo  tcpdump -i enP4p4s0f0  port 67 or port 68 -e -n -vv

In my case (Using Ironic)

    BF Option 67, length 10: "/ipxe.efi^@"

I can fetch that using curl:

curl tftp:// --output /tmp/y

And check the file:

# file /tmp/y
/tmp/y: MS-DOS executable PE32+ executable (DLL) (EFI application) x86-64, for MS Windows

If I do it with the right file:

$ curl tftp:// --output /tmp/z
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 1000k  100 1000k    0     0  28.7M      0 --:--:-- --:--:-- --:--:-- 28.7M
100 1000k  100 1000k    0     0  28.7M      0 --:--:-- --:--:-- --:--:-- 28.7M
ansible@openstack02-r116:/tmp$ file z
z: MS-DOS executable PE32+ executable (DLL) (EFI application) Aarch64, for MS Windows

On Ubuntu 20.04, You can confirm that the file is downloaded via tftp in the syslog. Go to the end and search backwards using ?tftp

Apr  7 02:38:48 openstack02-r116 dnsmasq-tftp[280480]: sent /var/lib/tftpboot/ipxe.efi to

If it works correctly, you will see output like this:

>>Checking Media Presence......
>>Media Present......
>>Start PXE over IPv4 on MAC: 0C-42-A1-52-19-B0.
  Station IP address is
  Server IP address is
  NBP filename is /ipxe.efi
  NBP filesize is 1024000 Bytes

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.