I'm trying to setup diskless UEFI + PXE + NFS booting for CentOS 7 on ARM. Generally, the process looks like this:
- Client CPU boots UEFI firmware
- Client UEFI's PXE firmware requests DHCP from the network
- Server supplies IP, TFTP server IP, PXE NBP (network bootstrap program) filename
- Client UEFI loads NBP from TFTP server
- Client UEFI executes NBP, which loads kernel image from TFTP server
- Client NBP executes kernel image, which mounts filesystem via NFS
Every PXE boot guide I can find eventually requires pxelinux.0, from Syslinux, as the NBP (steps 3, 4, 5). Syslinux doesn't support ARM (afaik?). With that in mind:
Can someone describe how to PXE boot an aarch64?
Best Answer
Here are my eventual findings and solution, with lots of help from the comments!
pxelinux.0
only applied to BIOS, not UEFIAssuming the PXE (DHCP + TFTP) server(s) are already setup according to many guides,
/var/lib/tftpboot
)grubaa64.efi
from/boot/efi/EFI/centos/
to your TFTP root dir (or./boot/
subdir)Create a config file,
grub.cfg
, in the same directory(GRUB treats
/
as your TFTP root dir. Changelinux
&initrd
as needed)Point your DHCP server to
grubaa64.efi
instead ofpxelinux.0
grub.cfg
on the TFTP server, then choosing "Refresh GRUB menu" to see that it pulls in the new config