Fixed failed Rocky 9 post-install boot with a hack

Some of our older IBM nodes were failing to boot after the image had been deployed. The UEFI PXE boot would fail with this:

UEFI PXE PciRoot (0x0)/Pci(0x1,0x0)/Pci(0x0,0x0)/MAC(<MAC>)/IPv4(0.0.0.0,UDP,DHCP,0.0.0.0)

>>Start PXE over IPv4.
Station IP address is <IP>
Server IP address is <IP>
NBP filename is bootx64.efi
NBP filesize is 960472 Bytes
Downloading NBP file...

Succeed to download NBP file.
Fetching Netboot Image
Booting local disk...
/EndEntire
Failed to open \efi\boot\grubx64.efi - Not Found
Failed to load image : Not Found
start_image() returned Not Found, falling back to default loader
Failed to open \efi\boot\grubx64.efi - Not Found
Failed to load image : Not Found
start_image() returned Not Found
start_image() returned Not Found
error: unknown error
error: no such device: /efi/ubuntu/shimx64.efi
error: no such device: /efi/ubuntu/grubx64.efi
error: no such device: /efi/Microsoft/Boot/bootmgfw.efi
Secure boot is disabled, trying chainloader...
error: no such device: /efi/centos/shimx64.efi
error: no such device: /efi/centos/grubx64.efi
error: no such device: /efi/redhat/shimx64.efi
error: no such device: /efi/redhat/grubx64.efi
error: no such device: /efi/rhel/shimx64.efi
error: no such device: /efi/rhel/grubx64.efi
error: no such device: /efi/suse/shim.efi
error: no such device: /efi/suse/grubx64.efi
error: no such device: /efi/ol/shim.efi
error: no such device: /efi/ol/grubx64.efi
error: no such device: /efi/red/grubx64.efi

After looking at what was present in the EFI partition, I applied this hack of a patch on my rack server and it worked:

--- /var/lib/snapd/snap/maas/current/lib/python3.10/site-packages/provisioningserver/templates/uefi/config.local.amd64.template 2024-12-18 10:20:56.000000000 -0500
+++ /var/lib/snapd/snap/maas/fixes/provisioningserver/templates/uefi/config.local.amd64.template        2025-02-11 13:19:13.340617402 -0500
@@ -26,6 +26,8 @@
                 redhat/grubx64.efi \
                 rhel/shimx64.efi \
                 rhel/grubx64.efi \
+                rocky/shimx64.efi \
+                rocky/grubx64.efi \
                 suse/shim.efi \
                 suse/grubx64.efi \
                 ol/shim.efi \

Is there a better way to solve this, or would it be a reasonable patch for the project to apply?

Hey, yes I think so. Feel free to send a merge proposal on Launchpad!

Thanks

I’m patching the live code rather than the source code, so I might not get around to the whole process of checking out the repo, testing, etc. Feel free to implement if it’s a good idea.

1 Like