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:
@@ -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',
|
||||
|
||||
@@ -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";
|
||||
|
||||
Reference in New Issue
Block a user