mirror of
https://github.com/xcat2/xcat-core.git
synced 2026-09-04 20:17:55 +00:00
033b16d522
mknb only knew how to publish a discovery boot configuration for x86 (PXELINUX and xNBA) and POWER (petitboot). Any other architecture got a Genesis kernel and initramfs under /tftpboot/xcat and nothing that would make a firmware boot them, so riscv64 discovery could not start. riscv64 nodes boot through UEFI and grub2. Write one grub2 configuration per network, /tftpboot/boot/grub2/grub.cfg-<network hex prefix>, using the same network keys as the PXELINUX files. A net-booted grub2.riscv64 searches grub.cfg-01-<mac>, grub.cfg-<8 hex ip> and then shorter prefixes of the ip, so the per-node files that nodeset writes keep priority and the network file is only reached by clients without a node configuration. The file is regenerated from the published Genesis artifacts (lzma preferred over gzip), guarded by $grub_cpu so other grub2 architectures can share it later, carries the xcatd endpoint, the serial console and BOOTIF=$net_default_mac, and is dropped for networks served by a :noboot interface. It is written by name rather than into an existing file, because on a /32 network nodeset's hard link for the node carries the same name. Publishing a Genesis image now also drops the other compression variant of that architecture, so a leftover genesis.fs.<arch>.lzma can no longer be paired with a freshly published kernel by this configuration or by --configfileonly. And since these configurations are only reachable through grub2.<arch>, which xCAT does not build, a missing boot loader is reported instead of leaving the nodes to time out in firmware. xcatconfig now also runs mknb riscv64 when xCAT-genesis-base-riscv64 is installed, and the usage text lists the architecture.