UEFI HTTPboot provisioning fails with 404s when trying to install Rocky 9.7

Problem:

UEFI HTTPboot provisioning fails with 404s when trying to install Rocky 9.7

Expected outcome:

Provisioning loads necessary files and starts to install the OS

Foreman and Proxy versions:

Both 3.17.0

Foreman and Proxy plugin versions:

  • foreman-tasks: 11.0.6
  • foreman_remote_execution: 16.3.1
  • katello: 4.19.0.1

Distribution and version:

I assume this means the Foreman server: Rocky 9.7

Other relevant data:

Proxy log output:

2026-01-19T22:16:09 d23ee8ab [I] Finished HEAD /httpboot/grub2/grubx64.efi with 200 (0.8 ms)
2026-01-19T22:16:09 7898bbd0 [I] Started GET /httpboot/grub2/grubx64.efi
2026-01-19T22:16:09 7898bbd0 [I] Finished GET /httpboot/grub2/grubx64.efi with 200 (0.34 ms)
2026-01-19T22:16:09 adc4fc88 [I] Started HEAD /httpboot/grub2/grub.cfg
2026-01-19T22:16:09 adc4fc88 [I] Finished HEAD /httpboot/grub2/grub.cfg with 200 (0.47 ms)
2026-01-19T22:16:09 fca5c727 [I] Started GET /httpboot/grub2/grub.cfg
2026-01-19T22:16:09 fca5c727 [I] Finished GET /httpboot/grub2/grub.cfg with 200 (0.41 ms)
2026-01-19T22:16:09 c0abbce8 [I] Started HEAD /EFI/rocky/x86_64-efi/command.lst
2026-01-19T22:16:09 c0abbce8 [E] Not found
2026-01-19T22:16:09 c0abbce8 [W] Error details for Not found: <Exception>: Not found
2026-01-19T22:16:09 c0abbce8 [W] Not found: <Exception>: Not found
2026-01-19T22:16:09 c0abbce8 [I] Finished HEAD /EFI/rocky/x86_64-efi/command.lst with 404 (0.69 ms)
2026-01-19T22:16:09 9323fb22 [I] Started HEAD /EFI/rocky/x86_64-efi/fs.lst
2026-01-19T22:16:09 9323fb22 [E] Not found
2026-01-19T22:16:09 9323fb22 [W] Error details for Not found: <Exception>: Not found
2026-01-19T22:16:09 9323fb22 [W] Not found: <Exception>: Not found
2026-01-19T22:16:09 9323fb22 [I] Finished HEAD /EFI/rocky/x86_64-efi/fs.lst with 404 (0.6 ms)
2026-01-19T22:16:09 8a9e55e7 [I] Started HEAD /EFI/rocky/x86_64-efi/crypto.lst
2026-01-19T22:16:09 8a9e55e7 [E] Not found
2026-01-19T22:16:09 8a9e55e7 [W] Error details for Not found: <Exception>: Not found
2026-01-19T22:16:09 8a9e55e7 [W] Not found: <Exception>: Not found
2026-01-19T22:16:09 8a9e55e7 [I] Finished HEAD /EFI/rocky/x86_64-efi/crypto.lst with 404 (0.65 ms)
2026-01-19T22:16:09 b8082545 [I] Started HEAD /EFI/rocky/x86_64-efi/terminal.lst
2026-01-19T22:16:09 b8082545 [E] Not found
2026-01-19T22:16:09 b8082545 [W] Error details for Not found: <Exception>: Not found
2026-01-19T22:16:09 b8082545 [W] Not found: <Exception>: Not found
2026-01-19T22:16:09 b8082545 [I] Finished HEAD /EFI/rocky/x86_64-efi/terminal.lst with 404 (0.75 ms)
2026-01-19T22:16:09 13a15260 [I] Started HEAD /httpboot/grub2/grub.cfg
2026-01-19T22:16:09 13a15260 [I] Finished HEAD /httpboot/grub2/grub.cfg with 200 (0.47 ms)
2026-01-19T22:16:09 43c73d71 [I] Started GET /httpboot/grub2/grub.cfg
2026-01-19T22:16:09 43c73d71 [I] Finished GET /httpboot/grub2/grub.cfg with 200 (0.38 ms)

For some reason the client is trying to get files rooted in /EFI instead of /httpboot.
However, the files it’s looking for aren’t there anyway.
I did find them in /usr/lib/grub/x86_64-efi so I could put them in the foreman-proxy’s web root, but I can’t figure out where that is.

One other thing I just noticed, this message in the Grub client output:

Click on 'Build PXE Default' in the Foreman interface
to create the default global grub.cfg configuration.

However I can’t find this to click on in the Foreman interface.

I think you might be looking for this item:
Hosts / Templates / Provisioning Templates

Cheers,

Thanks, I have clicked that and it says the default is set.
Now when I try to do the OS install it just drops to a grub prompt.

The proxy logs just show grub being downloaded:

2026-01-20T17:34:21 6445dc35 [I] Started HEAD /httpboot/grub2/grubx64.efi
2026-01-20T17:34:21 6445dc35 [I] Finished HEAD /httpboot/grub2/grubx64.efi with 200 (1.48 ms)
2026-01-20T17:34:21 89a0ff7e [I] Started GET /httpboot/grub2/grubx64.efi
2026-01-20T17:34:21 89a0ff7e [I] Finished GET /httpboot/grub2/grubx64.efi with 200 (0.31 ms)

This is the grub.cfg for the server I’m trying to install:

# This file was deployed via 'Kickstart default PXEGrub2' template

set default=0
set timeout=0
                                                                                                                                                                                                                 menuentry 'Kickstart default PXEGrub2' {
  linux boot/baseos-x86_64-kickstart-129-vmlinuz  BOOTIF=01-1c-72-1d-ff-22-62 inst.ks=https://foreman.sjcvirt.rti.com/unattended/provision?token=d6f81881-3d01-4fdc-a640-97ee47e62ae4 inst.ks.sendmac ip=::::sjc01minio01.rti.com::dhcp nameserver=10.10.1.20 nameserver=10.10.1.21
  initrd boot/baseos-x86_64-kickstart-129-initrd.img
}

menuentry 'Kickstart default PXEGrub2 EFI HTTP' --id efi_http {
  linux (http,10.2.95.232:8000)/httpboot/boot/baseos-x86_64-kickstart-129-vmlinuz  BOOTIF=01-1c-72-1d-ff-22-62 inst.ks=https://foreman.sjcvirt.rti.com/unattended/provision?token=d6f81881-3d01-4fdc-a640-97ee47e62ae4 inst.ks.sendmac ip=::::sjc01minio01.rti.com::dhcp nameserver=10.10.1.20 nameserver=10.10.1.21
  initrd (http,10.2.95.232:8000)/httpboot/boot/baseos-x86_64-kickstart-129-initrd.img
}

menuentry 'Kickstart default PXEGrub2 EFI HTTPS' --id efi_https {
  linux (https,10.2.95.232:9090)/httpboot/boot/baseos-x86_64-kickstart-129-vmlinuz  BOOTIF=01-1c-72-1d-ff-22-62 inst.ks=https://foreman.sjcvirt.rti.com/unattended/provision?token=d6f81881-3d01-4fdc-a640-97ee47e62ae4 inst.ks.sendmac ip=::::sjc01minio01.rti.com::dhcp nameserver=10.10.1.20 nameserver=10.10.1.21
  initrd (https,10.2.95.232:9090)/httpboot/boot/baseos-x86_64-kickstart-129-initrd.img
}

Another thing I’ve noticed is if I try to curl the inst.ks URL, it is “Not found”. There must be something I’m missing on the Foreman config, but it’s proving very hard to troubleshoot.

$ curl http://foreman.sjcvirt.rti.com:8000/unattended/provision?token=4202f094-91ad-40b2-a548-7f1a77454e7f
Not found