2
0
mirror of https://github.com/xcat2/xcat-core.git synced 2026-09-04 20:17:55 +00:00

feat(dhcp): boot RISC-V 64-bit UEFI clients with grub2

RISC-V 64-bit UEFI firmware identifies itself with DHCP option 93
client-system-architecture 27 (0x001b, IANA processor architecture
types). Neither DHCP backend knew the value: Kea handed such clients no
boot file and ISC dhcpd fell through to the /yaboot catch-all.

Add an xcat-riscv64 Kea client class and an ISC subnet branch that send
them boot/grub2/grub2.riscv64, the same shape as the aarch64 entries.
The UEFI HTTP boot id (0x001c) is left alone: it needs a URL boot file
and the HTTPClient vendor class, which is a separate change.
This commit is contained in:
Vinícius Ferrão
2026-08-20 16:32:27 -03:00
parent be44015c3f
commit 9549e660f9
2 changed files with 8 additions and 0 deletions
+5
View File
@@ -36,6 +36,11 @@ sub kea_client_classes {
test => 'option[93].hex == 0x000b',
'boot-file-name' => 'boot/grub2/grub2.aarch64',
},
{
name => 'xcat-riscv64',
test => 'option[93].hex == 0x001b',
'boot-file-name' => 'boot/grub2/grub2.riscv64',
},
{
name => 'xcat-ppc64',
test => 'option[93].hex == 0x000c',
+3
View File
@@ -4467,6 +4467,9 @@ sub addnet
push @netent,
" } else if option client-architecture = 00:0b { #aaarch64\n ";
push @netent, " filename \"boot/grub2/grub2.aarch64\";\n";
push @netent,
" } else if option client-architecture = 00:1b { #riscv64 uefi\n ";
push @netent, " filename \"boot/grub2/grub2.riscv64\";\n";
push @netent,
" } else if option client-architecture = 00:0e { #OPAL-v3\n ";
push @netent, " option conf-file = \"http://$tftp$portsuffix/tftpboot/pxelinux.cfg/p/" . $net . "_" . $maskbits . "\";\n";