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://192.168.116.64/ipxe.efi --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://192.168.116.64/ipxe.efi --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 192.168.116.64 |
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 192.168.116.119 Server IP address is 192.168.116.64 NBP filename is /ipxe.efi NBP filesize is 1024000 Bytes |