Problem:
I’m trying to provision and install Rocky 8.5 onto a bare metal host. This host’s BIOS does not provide a “Legacy BIOS” option for booting. Therefore, I am stuck supporting a UEFI solution. Upon powering on the bare metal host, I can see that it properly obtains it’s IP address and next-server over DHCP. It also successfully pulls the grub2/grubx64.efi file over TFTP.
It then requests the “/EFI/rocky/grub.cfg-MACDDRESS” file over TFTP from the foreman-proxy. However, that file is not found in that location under the tftpboot root directory on the foreman-proxy.
Foreman creates the “grub.cfg-MACADDRESS” file and places it in the “/grub2” directory under the tftp root.
How do I get the host to request its “grub.cfg-MACADDRESS” file from the /grub2 directory?
Expected outcome:
After the host has pulled the grub2/grubx64.efi from the foreman-proxy, it should then pull the “grub.cfg-MACADDRESS” file from the grub2 directory as well. It should not be looking in a non-existent “/EFI/rocky/” directory.
Foreman and Proxy versions:
Both Foreman and Foreman-Proxy are on 3.1.2
Foreman and Proxy plugin versions:
No plugins are installed.
The Foreman-Proxy has the tftp, dhcp, Logs, and Templates features enabled.
Distribution and version:
Rocky Linux version 8.5
Other relevant data:
Packet capture on the Foreman-Proxy at the time in which the host is powered on:
IP (tos 0x0, ttl 64, id 41497, offset 0, flags [none], proto UDP (17), length 375)
0.0.0.0.68 > 255.255.255.255.67: [udp sum ok] BOOTP/DHCP, Request from a4:bb:6d:81:73:3f, length 347, xid 0xe102f083, secs 28, Flags [Broadcast] (0x8000)
Client-Ethernet-Address a4:bb:6d:81:73:3f
Vendor-rfc1048 Extensions
Magic Cookie 0x63825363
DHCP-Message Option 53, length 1: Discover
MSZ Option 57, length 2: 1472
Parameter-Request Option 55, length 35:
Subnet-Mask, Time-Zone, Default-Gateway, Time-Server
IEN-Name-Server, Domain-Name-Server, Hostname, BS
Domain-Name, RP, EP, RSZ
TTL, BR, YD, YS
NTP, Vendor-Option, Requested-IP, Lease-Time
Server-ID, RN, RB, Vendor-Class
TFTP, BF, GUID, Option 128
Option 129, Option 130, Option 131, Option 132
Option 133, Option 134, Option 135
GUID Option 97, length 17: 0.68.69.76.76.76.0.16.66.128.50.195.192.79.75.68.51
NDI Option 94, length 3: 1.3.16
ARCH Option 93, length 2: 7
Vendor-Class Option 60, length 32: "PXEClient:Arch:00007:UNDI:003016"
END Option 255, length 0
IP (tos 0x10, ttl 128, id 0, offset 0, flags [none], proto UDP (17), length 337)
100.99.97.7.67 > 255.255.255.255.68: [udp sum ok] BOOTP/DHCP, Reply, length 309, xid 0xe102f083, secs 28, Flags [Broadcast] (0x8000)
Your-IP 100.99.97.48
Server-IP 100.99.97.7
Client-Ethernet-Address a4:bb:6d:81:73:3f
file "grub2/grubx64.efi"
Vendor-rfc1048 Extensions
Magic Cookie 0x63825363
DHCP-Message Option 53, length 1: Offer
Server-ID Option 54, length 4: 100.99.97.7
Lease-Time Option 51, length 4: 43200
Subnet-Mask Option 1, length 4: 255.255.0.0
Default-Gateway Option 3, length 4: 100.99.0.1
Domain-Name-Server Option 6, length 8: 100.99.97.4,100.99.97.5
Hostname Option 12, length 20: "workstation1.mts.sys"
Domain-Name Option 15, length 7: "mts.sys"
END Option 255, length 0
IP (tos 0x0, ttl 64, id 41498, offset 0, flags [none], proto UDP (17), length 387)
0.0.0.0.68 > 255.255.255.255.67: [udp sum ok] BOOTP/DHCP, Request from a4:bb:6d:81:73:3f, length 359, xid 0xe102f083, secs 28, Flags [Broadcast] (0x8000)
Client-Ethernet-Address a4:bb:6d:81:73:3f
Vendor-rfc1048 Extensions
Magic Cookie 0x63825363
DHCP-Message Option 53, length 1: Request
Server-ID Option 54, length 4: 100.99.97.7
Requested-IP Option 50, length 4: 100.99.97.48
MSZ Option 57, length 2: 65280
Parameter-Request Option 55, length 35:
Subnet-Mask, Time-Zone, Default-Gateway, Time-Server
IEN-Name-Server, Domain-Name-Server, Hostname, BS
Domain-Name, RP, EP, RSZ
TTL, BR, YD, YS
NTP, Vendor-Option, Requested-IP, Lease-Time
Server-ID, RN, RB, Vendor-Class
TFTP, BF, GUID, Option 128
Option 129, Option 130, Option 131, Option 132
Option 133, Option 134, Option 135
GUID Option 97, length 17: 0.68.69.76.76.76.0.16.66.128.50.195.192.79.75.68.51
NDI Option 94, length 3: 1.3.16
ARCH Option 93, length 2: 7
Vendor-Class Option 60, length 32: "PXEClient:Arch:00007:UNDI:003016"
END Option 255, length 0
IP (tos 0x10, ttl 128, id 0, offset 0, flags [none], proto UDP (17), length 337)
100.99.97.7.67 > 255.255.255.255.68: [udp sum ok] BOOTP/DHCP, Reply, length 309, xid 0xe102f083, secs 28, Flags [Broadcast] (0x8000)
Your-IP 100.99.97.48
Server-IP 100.99.97.7
Client-Ethernet-Address a4:bb:6d:81:73:3f
file "grub2/grubx64.efi"
Vendor-rfc1048 Extensions
Magic Cookie 0x63825363
DHCP-Message Option 53, length 1: ACK
Server-ID Option 54, length 4: 100.99.97.7
Lease-Time Option 51, length 4: 43200
Subnet-Mask Option 1, length 4: 255.255.0.0
Default-Gateway Option 3, length 4: 100.99.0.1
Domain-Name-Server Option 6, length 8: 100.99.97.4,100.99.97.5
Hostname Option 12, length 20: "workstation1.mts.sys"
Domain-Name Option 15, length 7: "mts.sys"
END Option 255, length 0
IP (tos 0x0, ttl 64, id 41499, offset 0, flags [none], proto UDP (17), length 88)
100.99.97.48.1822 > 100.99.97.7.69: [udp sum ok] 60 RRQ "grub2/grubx64.efi" octet tsize 0 blksize 1468 windowsize 4
IP (tos 0x0, ttl 64, id 41501, offset 0, flags [none], proto UDP (17), length 80)
100.99.97.48.1823 > 100.99.97.7.69: [udp sum ok] 52 RRQ "grub2/grubx64.efi" octet blksize 1468 windowsize 4
IP (tos 0x0, ttl 255, id 9217, offset 0, flags [none], proto UDP (17), length 98)
100.99.97.48.25300 > 100.99.97.7.69: [udp sum ok] 70 RRQ "/EFI/rocky/grub.cfg-01-a4-bb-6d-81-73-3f" octet blksize 1024 tsize 0
IP (tos 0x0, ttl 255, id 9218, offset 0, flags [none], proto UDP (17), length 86)
100.99.97.48.25301 > 100.99.97.7.69: [udp sum ok] 58 RRQ "/EFI/rocky/grub.cfg-64636130" octet blksize 1024 tsize 0
IP (tos 0x0, ttl 255, id 9219, offset 0, flags [none], proto UDP (17), length 85)
100.99.97.48.25302 > 100.99.97.7.69: [udp sum ok] 57 RRQ "/EFI/rocky/grub.cfg-6463613" octet blksize 1024 tsize 0
IP (tos 0x0, ttl 255, id 9220, offset 0, flags [none], proto UDP (17), length 84)
100.99.97.48.25303 > 100.99.97.7.69: [udp sum ok] 56 RRQ "/EFI/rocky/grub.cfg-646361" octet blksize 1024 tsize 0
IP (tos 0x0, ttl 255, id 9221, offset 0, flags [none], proto UDP (17), length 83)
100.99.97.48.25304 > 100.99.97.7.69: [udp sum ok] 55 RRQ "/EFI/rocky/grub.cfg-64636" octet blksize 1024 tsize 0
IP (tos 0x0, ttl 255, id 9222, offset 0, flags [none], proto UDP (17), length 82)
100.99.97.48.25305 > 100.99.97.7.69: [udp sum ok] 54 RRQ "/EFI/rocky/grub.cfg-6463" octet blksize 1024 tsize 0
IP (tos 0x0, ttl 255, id 9223, offset 0, flags [none], proto UDP (17), length 81)
100.99.97.48.25306 > 100.99.97.7.69: [udp sum ok] 53 RRQ "/EFI/rocky/grub.cfg-646" octet blksize 1024 tsize 0
IP (tos 0x0, ttl 255, id 9224, offset 0, flags [none], proto UDP (17), length 80)
100.99.97.48.25307 > 100.99.97.7.69: [udp sum ok] 52 RRQ "/EFI/rocky/grub.cfg-64" octet blksize 1024 tsize 0
IP (tos 0x0, ttl 255, id 9225, offset 0, flags [none], proto UDP (17), length 79)
100.99.97.48.25308 > 100.99.97.7.69: [udp sum ok] 51 RRQ "/EFI/rocky/grub.cfg-6" octet blksize 1024 tsize 0
IP (tos 0x0, ttl 255, id 9226, offset 0, flags [none], proto UDP (17), length 77)
100.99.97.48.25309 > 100.99.97.7.69: [udp sum ok] 49 RRQ "/EFI/rocky/grub.cfg" octet blksize 1024 tsize 0
IP (tos 0x0, ttl 255, id 9227, offset 0, flags [none], proto UDP (17), length 91)
100.99.97.48.25310 > 100.99.97.7.69: [udp sum ok] 63 RRQ "/EFI/rocky/x86_64-efi/command.lst" octet blksize 1024 tsize 0
IP (tos 0x0, ttl 255, id 9228, offset 0, flags [none], proto UDP (17), length 86)
100.99.97.48.25311 > 100.99.97.7.69: [udp sum ok] 58 RRQ "/EFI/rocky/x86_64-efi/fs.lst" octet blksize 1024 tsize 0
IP (tos 0x0, ttl 255, id 9229, offset 0, flags [none], proto UDP (17), length 90)
100.99.97.48.25312 > 100.99.97.7.69: [udp sum ok] 62 RRQ "/EFI/rocky/x86_64-efi/crypto.lst" octet blksize 1024 tsize 0
IP (tos 0x0, ttl 255, id 9230, offset 0, flags [none], proto UDP (17), length 92)
100.99.97.48.25313 > 100.99.97.7.69: [udp sum ok] 64 RRQ "/EFI/rocky/x86_64-efi/terminal.lst" octet blksize 1024 tsize 0
Directory structure of /var/lib/tftpboot on the Foreman-Proxy (other, already working, host configuration files excluded):
.
├── boot
│ ├── rocky8-5-MxYLsytBkvSG-initrd.img
│ ├── rocky8-5-MxYLsytBkvSG-vmlinuz
├── chain.c32
├── grub
├── grub2
│ ├── boot → /var/lib/tftpboot/boot
│ ├── grub.cfg
│ ├── grub.cfg-01-a4-bb-6d-81-73-3f
│ ├── grub.cfg-a4:bb:6d:81:73:3f
│ ├── grubx64.efi
│ ├── shim.efi → /var/lib/tftpboot/grub2/shimx64.efi
│ └── shimx64.efi
├── ldlinux.c32
├── libcom32.c32
├── libutil.c32
├── memdisk
├── menu.c32
├── poap.cfg
├── pxelinux.0
├── pxelinux.cfg
│ └── 01-a4-bb-6d-81-73-3f
└── ztp.cfg