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

docs(riscv64): describe HTTP boot, the HTTP discovery payload and the media boot loader

This commit is contained in:
Vinícius Ferrão
2026-08-21 00:55:27 -03:00
parent aade148d49
commit 040283f7a9
3 changed files with 30 additions and 8 deletions
@@ -242,6 +242,15 @@ paths.
- same as the Kea row through the ISC subnet branch for client
architecture ``00:1b``; the riscv64 branch must answer before the
``/yaboot`` fallback
* - EL10
- ``riscv64``
- ``Kea``, ``ISC``
- ``UEFI HTTP boot``
- firmware configured for HTTP boot sends client architecture 28
(``0x001c``) and only accepts an offer whose boot file is a URL and
whose reply carries the ``HTTPClient`` vendor class; the class is per
subnet, so the URL must name the management node address of that
network and honour ``site.httpport``
Current Lab Baseline
--------------------
@@ -15,21 +15,24 @@ What riscv64 nodes need
sends DHCP option 93 (client system architecture) value 27 (``0x001b``) and
xCAT answers with the boot file ``boot/grub2/grub2.riscv64``, from both the
Kea and the ISC DHCP backends.
Firmware configured for UEFI HTTP boot (client architecture 28, ``0x001c``)
is served the same image over HTTP.
* ``noderes.netboot`` is one of ``grub2``, ``grub2-tftp`` or ``grub2-http``.
``grub2-http`` is recommended for installers, whose initrd is large.
* ``nodetype.arch`` and ``osimage.osarch`` are ``riscv64``. No alias is
needed: ``uname -m``, rpm and dpkg all use the same token.
* ``/tftpboot/boot/grub2/grub2.riscv64``: the EL grub2 UEFI image for riscv64
(the ``EFI/BOOT/grubriscv64.efi`` of the EL10 riscv64 BaseOS tree). It is
provided by the ``grub2-xcat`` package where available; otherwise copy it as
described in :doc:`/guides/install-guides/yum/grub2`.
(the ``EFI/BOOT/grubriscv64.efi`` of the EL10 riscv64 BaseOS tree).
``copycds`` publishes it from the installation media when the management node
does not have it yet, the ``grub2-xcat`` package installs the same image, and
:doc:`/guides/install-guides/yum/grub2` describes copying it by hand. An image
that is already there is never replaced.
* The riscv64 Genesis image (``xCAT-genesis-openembedded-riscv64``) for
discovery, BMC setup and flashing. Its kernel is loaded by grub2 through the
EFI stub. ``go-xcat`` installs the package; on a management node built another
way, install it explicitly (``dnf install xCAT-genesis-openembedded-riscv64``),
the same way the images of other architectures are installed for a mixed
cluster. ``xcatconfig`` runs ``mknb riscv64`` for every installed image.
The management node itself is x86_64 (the validated combination, see
:doc:`/advanced/mixed_cluster/support_matrix`) or riscv64 (see below); riscv64
nodes are managed like any other mixed-architecture cluster.
@@ -45,9 +48,15 @@ network, ``/tftpboot/boot/grub2/grub.cfg-<hex network prefix>``. A net booted
ip>``, then shorter prefixes of that ip; the per-node files written by
``nodeset`` therefore take priority and the network file is only used by nodes
that have no configuration yet, which is exactly the discovery case.
Each configuration holds two entries. The default one fetches the Genesis kernel
and initramfs over HTTP, because a TFTP server hands the image to one client at a
time and the initramfs is tens of megabytes; the second entry loads the same
files over TFTP and is there for a management node that does not serve the TFTP
root over HTTP. ``site.httpport`` is honoured.
``mknb`` runs automatically when the riscv64 Genesis packages are installed or
updated; run ``mknb riscv64`` yourself after changing ``site.master``,
``site.dhcpinterfaces`` or the serial console settings.
``site.dhcpinterfaces`` or the serial console settings. It also warns when
``grub2.riscv64`` is missing, since nothing would reach these configurations.
Discovered riscv64 nodes get ``nodetype.arch=riscv64`` and, when no compatible
method is set, ``noderes.netboot=grub2``. Use the discovery procedures documented
@@ -136,8 +145,12 @@ xCAT does not install anything from CPAN; every dependency is an rpm.
Limitations
-----------
* UEFI HTTP boot (client architecture 28, ``0x001c``) is not configured yet;
use PXE (TFTP) to load ``grub2.riscv64`` and ``grub2-http`` for the payload.
* UEFI HTTP boot (client architecture 28, ``0x001c``): a client without a
reservation is offered the boot loader as a URL with the ``HTTPClient`` vendor
class, which is what such firmware requires. It has not been exercised against
HTTP boot firmware yet, and a node that ``nodeset`` has configured is offered
its per-node boot loader over TFTP, as on the other architectures, so keep PXE
boot enabled in the firmware.
* Ubuntu riscv64 is not supported yet.
* The serial console defaults to ``ttyS<site.defserialport>``; boards whose
firmware exposes the console on another device need
@@ -4,7 +4,7 @@ grub2 support for x86_64, aarch64 and riscv64
xCAT 2.17 enables grub2 boot support for x86_64 and aarch64 but does not ship the necessary grub2 binaries for those architectures.
If you want to use grub2 for x86_64 or aarch64 you need to download the binaries from some EL OS repository.
riscv64 nodes can only boot through UEFI firmware and grub2, so they always need ``grub2.riscv64``. Recent ``grub2-xcat`` packages from xcat-dep install it; if the package on your management node does not (``ls /tftpboot/boot/grub2/grub2.riscv64``), copy the binary by hand as described below.
riscv64 nodes can only boot through UEFI firmware and grub2, so they always need ``grub2.riscv64``. ``copycds`` publishes it from the riscv64 installation media, and recent ``grub2-xcat`` packages from xcat-dep install the same image; if your management node has neither (``ls /tftpboot/boot/grub2/grub2.riscv64``), copy the binary by hand as described below.
#. Download files from an BaseOS EL repository mirror