From 79cddca53e2ca2a119e4d08af795b11d2897ee11 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vin=C3=ADcius=20Ferr=C3=A3o?= <2031761+viniciusferrao@users.noreply.github.com> Date: Sun, 6 Sep 2026 00:17:05 -0300 Subject: [PATCH] docs(riscv64): document Ubuntu 24.04 and 26.04 support MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The guides said riscv64 covered EL10 only, and the riscv64 page listed Ubuntu as unsupported. Both support matrices now carry the architecture for Ubuntu, and the riscv64 page describes the Ubuntu paths: the loader copycd builds from the media, the installer needing none of the accommodations EL10 requires, the ports archive the packages come from, and a management node running on riscv64. The 26.04 media need the RVA23 profile, which is recorded as a limitation. Signed-off-by: Vinícius Ferrão <2031761+viniciusferrao@users.noreply.github.com> --- .../building_stateless_images.rst | 2 +- .../advanced/mixed_cluster/support_matrix.rst | 75 ++++++++--------- docs/source/developers/guides/code/builds.rst | 5 +- .../basic_concepts/xcat_object/node.rst | 2 +- .../manage_clusters/riscv64/index.rst | 83 ++++++++++++++++--- .../references/man5/noderes.5.rst | 2 +- .../admin-guides/references/man7/group.7.rst | 2 +- .../admin-guides/references/man7/node.7.rst | 2 +- docs/source/overview/differentiators.rst | 2 +- docs/source/overview/support_matrix.rst | 4 +- 10 files changed, 122 insertions(+), 57 deletions(-) diff --git a/docs/source/advanced/mixed_cluster/building_stateless_images.rst b/docs/source/advanced/mixed_cluster/building_stateless_images.rst index c3a1ffa5a..590829abd 100644 --- a/docs/source/advanced/mixed_cluster/building_stateless_images.rst +++ b/docs/source/advanced/mixed_cluster/building_stateless_images.rst @@ -9,7 +9,7 @@ In a homogeneous cluster, the management node is the same hardware architecture The issues arises in a heterogeneous cluster, where the management node is running a different level operating system *or* hardware architecture as the compute nodes in which to deploy the image. The ``genimage`` command that builds stateless images depends on various utilities provided by the base operating system and needs to be run on a node with the same hardware architecture and *major* Operating System release as the nodes that will be booted from the image. -When running xCAT >= 2.17 on EL >= 8 based management node with x86_64 architecture, qemu-user-static can be used to cross-build ppc64*, aarch64 and riscv64 osimages. Therefore, you don't need to build images on systems with the target architecture anymore. +When running xCAT >= 2.17 on EL >= 8 based management node with x86_64 architecture, qemu-user-static can be used to cross-build ppc64*, aarch64 and riscv64 osimages. Therefore, you don't need to build images on systems with the target architecture anymore. The same applies to an Ubuntu management node, where ``qemu-user-static`` and ``binfmt-support`` are packages of the distribution and register the handler on install. Cross-build ppc64*/aarch64/riscv64 stateless/statelite image on x86_64 management node -------------------------------------------------------------------------------------- diff --git a/docs/source/advanced/mixed_cluster/support_matrix.rst b/docs/source/advanced/mixed_cluster/support_matrix.rst index 8bf5e69e7..50a6d9ad4 100644 --- a/docs/source/advanced/mixed_cluster/support_matrix.rst +++ b/docs/source/advanced/mixed_cluster/support_matrix.rst @@ -1,43 +1,43 @@ Support Matrix ============== -+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+ -| | RHEL | SLES | RHEL | SLES | Ubuntu | RHEL | SLES | Ubuntu | RHEL | SLES | Ubuntu | RHEL | -| | ppc64 | ppc64 | x86_64 | x86_64 | x86_64 | ppc64le | ppc64le | ppc64el | aarch64 | aarch64 | aarch64 | riscv64 | -| | CN | CN | CN | CN | CN | CN | CN | CN | CN | CN | CN | CN | -+=========+=========+=========+=========+=========+=========+=========+=========+=========+=========+=========+=========+=========+ -| RHEL | | | | | | | | | | | | | -| ppc64 | yes | yes | yes | yes | yes | yes | yes | yes | no | no | no | no | -| MN/SN | | | [1]_ | [1]_ | [1]_ | | | | | | | | -+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+ -| SLES | | | | | | | | | | | | | -| ppc64 | yes | yes | yes | yes | yes | yes | yes | yes | no | no | no | no | -| MN/SN | | | [1]_ | [1]_ | [1]_ | | | | | | | | -+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+ -| RHEL | | | | | | | | | | | | | -| x86_64 | yes | yes | yes | yes | yes | yes | yes | yes | yes | no | no | yes | -| MN/SN | [4]_ | [4]_ | | | | | | | | | | [6]_ | -+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+ -| SLES | | | | | | | | | | | | | -| x86_64 | yes | yes | yes | yes | yes | yes | yes | yes | yes | no | no | no | -| MN/SN | [4]_ | [4]_ | | | | | | | | | | | -+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+ -| Ubuntu | | | | | | | | | | | | | -| x86_64 | yes | yes | yes | yes | yes | yes | yes | yes | yes | no | no | no | -| MN/SN | [5]_ | [5]_ | | | | | | | | | | | -+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+ -| RHEL | | | | | | | | | | | | | -| ppc64le | yes | yes | yes | yes | yes | yes | yes | yes | no | no | no | no | -| MN/SN | [2]_ | [2]_ | | | | | | | | | | | -+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+ -| SLES | | | | | | | | | | | | | -| ppc64le | no | no | yes | yes | yes | yes | yes | yes | no | no | no | no | -| MN/SN | | | | | | | | | | | | | -+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+ -| Ubuntu | | | | | | | | | | | | | -| ppc64el | yes | yes | yes | yes | yes | yes | yes | yes | no | no | no | no | -| MN/SN | [3]_ | [3]_ | | | | | | | | | | | -+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+ ++---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+ +| | RHEL | SLES | RHEL | SLES | Ubuntu | RHEL | SLES | Ubuntu | RHEL | SLES | Ubuntu | RHEL | Ubuntu | +| | ppc64 | ppc64 | x86_64 | x86_64 | x86_64 | ppc64le | ppc64le | ppc64el | aarch64 | aarch64 | aarch64 | riscv64 | riscv64 | +| | CN | CN | CN | CN | CN | CN | CN | CN | CN | CN | CN | CN | CN | ++=========+=========+=========+=========+=========+=========+=========+=========+=========+=========+=========+=========+=========+=========+ +| RHEL | | | | | | | | | | | | | | +| ppc64 | yes | yes | yes | yes | yes | yes | yes | yes | no | no | no | no | no | +| MN/SN | | | [1]_ | [1]_ | [1]_ | | | | | | | | | ++---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+ +| SLES | | | | | | | | | | | | | | +| ppc64 | yes | yes | yes | yes | yes | yes | yes | yes | no | no | no | no | no | +| MN/SN | | | [1]_ | [1]_ | [1]_ | | | | | | | | | ++---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+ +| RHEL | | | | | | | | | | | | | | +| x86_64 | yes | yes | yes | yes | yes | yes | yes | yes | yes | no | no | yes | no | +| MN/SN | [4]_ | [4]_ | | | | | | | | | | [6]_ | | ++---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+ +| SLES | | | | | | | | | | | | | | +| x86_64 | yes | yes | yes | yes | yes | yes | yes | yes | yes | no | no | no | no | +| MN/SN | [4]_ | [4]_ | | | | | | | | | | | | ++---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+ +| Ubuntu | | | | | | | | | | | | | | +| x86_64 | yes | yes | yes | yes | yes | yes | yes | yes | yes | no | no | no | yes | +| MN/SN | [5]_ | [5]_ | | | | | | | | | | | [7]_ | ++---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+ +| RHEL | | | | | | | | | | | | | | +| ppc64le | yes | yes | yes | yes | yes | yes | yes | yes | no | no | no | no | no | +| MN/SN | [2]_ | [2]_ | | | | | | | | | | | | ++---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+ +| SLES | | | | | | | | | | | | | | +| ppc64le | no | no | yes | yes | yes | yes | yes | yes | no | no | no | no | no | +| MN/SN | | | | | | | | | | | | | | ++---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+ +| Ubuntu | | | | | | | | | | | | | | +| ppc64el | yes | yes | yes | yes | yes | yes | yes | yes | no | no | no | no | no | +| MN/SN | [3]_ | [3]_ | | | | | | | | | | | | ++---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+ Notes: @@ -54,3 +54,4 @@ Notes: .. [4] If the compute nodes are DFM managed systems, will need the ppc64le DFM and ppc64le hardware server on the management node. .. [5] Does not support DFM managed compute nodes, hardware control does not work. .. [6] riscv64 compute nodes boot through UEFI firmware and grub2 only. The management node needs the riscv64 Genesis image (``xCAT-genesis-openembedded-riscv64``) and ``/tftpboot/boot/grub2/grub2.riscv64`` (see :doc:`/guides/install-guides/yum/grub2`). EL10 compute nodes are supported, validated from an EL10 x86_64 management node; a riscv64 management node is documented in :doc:`/guides/admin-guides/manage_clusters/riscv64/index`. +.. [7] Ubuntu 24.04 and 26.04 riscv64 compute nodes, stateful and stateless, validated from an Ubuntu x86_64 management node. The riscv64 packages that carry a binary (``goconserver``, ``ipmitool-xcat``, ``conserver-xcat``) come from a riscv64 xcat-dep apt repository; see :doc:`/guides/admin-guides/manage_clusters/riscv64/index`. diff --git a/docs/source/developers/guides/code/builds.rst b/docs/source/developers/guides/code/builds.rst index 607075ce5..1146e4225 100644 --- a/docs/source/developers/guides/code/builds.rst +++ b/docs/source/developers/guides/code/builds.rst @@ -60,7 +60,10 @@ the repository declares. Only ``xCAT``, ``xCATsn`` and ``xCAT-genesis-scripts`` carry an architecture, and there the difference is packaging metadata rather than compiled output. That is why this build needs no ``sbuild`` and no per-codename chroot -- unlike xcat-deps, whose packages are compiled and genuinely differ per -release. +release. ``xCAT`` and ``xCATsn`` are built for riscv64 as well as amd64 and +ppc64el, and every release the repository serves declares the architecture; +``xCAT-genesis-scripts`` keeps the two architectures it has control files for, +because riscv64 Genesis ships as an OpenEmbedded package instead. Helpers shared by both builders live in ``build-utils/lib/XCAT/BuildUtils.pm``. diff --git a/docs/source/guides/admin-guides/basic_concepts/xcat_object/node.rst b/docs/source/guides/admin-guides/basic_concepts/xcat_object/node.rst index c72a78d42..debe934e0 100644 --- a/docs/source/guides/admin-guides/basic_concepts/xcat_object/node.rst +++ b/docs/source/guides/admin-guides/basic_concepts/xcat_object/node.rst @@ -45,7 +45,7 @@ Key Attributes +--------------------------+----------------------+-----------------------------------+ | aarch64 | >=el8 | grub2 | +--------------------------+----------------------+-----------------------------------+ - | riscv64 | >=el10 | grub2,grub2-http,grub2-tftp | + | riscv64 | >=el10, >=ubuntu24.04| grub2,grub2-http,grub2-tftp | +--------------------------+----------------------+-----------------------------------+ * postscripts: diff --git a/docs/source/guides/admin-guides/manage_clusters/riscv64/index.rst b/docs/source/guides/admin-guides/manage_clusters/riscv64/index.rst index faa4ce191..1605ae0ae 100644 --- a/docs/source/guides/admin-guides/manage_clusters/riscv64/index.rst +++ b/docs/source/guides/admin-guides/manage_clusters/riscv64/index.rst @@ -1,9 +1,10 @@ RISC-V 64-bit (riscv64) ======================= -xCAT manages RISC-V 64-bit (``riscv64``) compute nodes running EL10. Rocky -Linux 10 is the reference distribution; the RHEL 10 RISC-V developer preview -uses the same media layout. The general cluster management documentation under +xCAT manages RISC-V 64-bit (``riscv64``) compute nodes running EL10 or Ubuntu. +Rocky Linux 10 is the reference EL distribution and the RHEL 10 RISC-V developer +preview uses the same media layout; on the Ubuntu side, 24.04 and 26.04 are +supported from the live-server media. The general cluster management documentation under :doc:`/guides/admin-guides/manage_clusters/index` applies; this page only covers what is specific to the architecture. @@ -21,16 +22,31 @@ What riscv64 nodes need ``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). - ``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. +* ``/tftpboot/boot/grub2/grub2.riscv64``: the grub2 UEFI image the firmware + loads. On EL media it is the ``EFI/BOOT/grubriscv64.efi`` of the riscv64 + BaseOS tree, which the ``grub2-xcat`` package also installs and + :doc:`/guides/install-guides/yum/grub2` describes copying by hand; ``copycds`` + publishes it when the management node does not have it yet and keeps an image + that is already there. + + Ubuntu media are different: the loader they carry boots only from the media, + because it holds a built-in configuration that searches for the live + filesystem and never reads the configuration ``nodeset`` writes. ``copycds`` + therefore builds a netboot image from the ``grub-efi-riscv64-bin`` package on + the media, with the network modules and the ``/boot/grub2`` prefix compiled + in, and installs it under that name. An image already there is kept when it + carries that prefix and those modules, which is what the loader this path + builds looks like; anything else is replaced, because the image the media + carry cannot reach the configuration. When the media cannot produce a + replacement, whatever is there is left untouched and ``copycds`` says so: + check that the nodes still boot, since the file was not built for this path. + Building the loader needs ``grub-mkimage``, which ``grub-common`` provides and + ``xcat-server`` requires. * 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``), + way, install it explicitly (``dnf install xCAT-genesis-openembedded-riscv64``, + or ``apt install xcat-genesis-openembedded-riscv64`` on Ubuntu), 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 @@ -65,6 +81,9 @@ for the other architectures. Stateful (diskful) installation -------------------------------- +EL10 +~~~~ + Import the Rocky Linux 10 riscv64 DVD with ``copycds``; it creates the ``rocky10.x-riscv64-install-compute`` osimage. The installer kernel and initrd come from ``images/pxeboot`` on the media, like x86_64 and aarch64. @@ -84,6 +103,28 @@ package lists add ``grub2-efi-riscv64`` and ``efibootmgr``, and the these files. After ``nodeset boot`` the firmware boots the installed system because the per-node ``grub2-`` loader link is removed. +Ubuntu +~~~~~~ + +Import the Ubuntu 24.04 or 26.04 riscv64 live-server ISO with ``copycds``; it +creates the ``ubuntu-riscv64-install-compute`` osimage. The installer +kernel and initrd come from ``casper/vmlinux`` and ``casper/initrd``, where the +riscv64 media keep them. + +The installer needs no riscv64 accommodation of the kind EL10 requires: Subiquity +installs ``grub-efi-riscv64`` itself, writes both ``\EFI\ubuntu\grubriscv64.efi`` +and the removable-media fallback ``\EFI\BOOT\BOOTRISCV64.EFI``, and registers the +UEFI boot entry. The shared ``compute.subiquity.tmpl`` is used unchanged. + +The autoinstall configuration is fetched from the management node over HTTP with +``ds=nocloud-net``. That argument holds a semicolon, which grub2 reads as a +command separator, so the boot loader configuration quotes it; a node whose +kernel command line ends before the seed URL is a sign of an unquoted separator. + +Packages the media do not carry are taken from ``ports.ubuntu.com``, which is +where every architecture other than amd64 and i386 is published. Set +``site.ubuntu_apt_mirror`` to point at a local mirror instead. + Crash dumps ~~~~~~~~~~~ @@ -116,6 +157,15 @@ management node needs the riscv64 user-mode emulator registered with systemd-binfmt, as described in :doc:`/advanced/mixed_cluster/building_stateless_images`. +On Ubuntu, ``genimage`` builds the image with ``debootstrap`` from the +``compute.ubuntu24.04.riscv64`` and ``compute.ubuntu26.04.riscv64`` package +lists. It bootstraps from ``ports.ubuntu.com``, because ``archive.ubuntu.com`` +publishes amd64 and i386 only; ``site.ubuntu_apt_mirror`` overrides that for a +local mirror serving every architecture. A management node of another +architecture needs the same ``qemu-user-static`` binfmt registration as EL, and +a release older than the one being built needs the target's ``debootstrap`` +script, which is a symlink to ``gutsy`` for every modern Ubuntu. + Management node on riscv64 -------------------------- @@ -142,6 +192,15 @@ that disables weak dependencies (``install_weak_deps=False``) has to install ``perl-DB_File`` explicitly to keep the Confluent client working. xCAT does not install anything from CPAN; every dependency is an rpm. +On Ubuntu the ``xcat`` and ``xcatsn`` packages are built for riscv64 and the +apt repository indexes the architecture, so ``apt install xcat`` brings up a +riscv64 management node. Everything else xCAT needs comes from the Ubuntu +riscv64 archive, except the xcat-dep packages that carry a binary: +``goconserver``, ``ipmitool-xcat`` and ``conserver-xcat`` must come from a +riscv64 xcat-dep apt repository. The remaining xcat-dep packages, including +``grub2-xcat`` and the x86-only boot loaders, are ``Architecture: all`` and +install anywhere. + Limitations ----------- @@ -151,7 +210,9 @@ Limitations 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. +* Ubuntu 26.04 riscv64 requires the RVA23 profile. A machine that implements + only the older profile stops with an illegal instruction early in userspace; + 24.04 runs on the older profile. * The serial console defaults to ``ttyS``; boards whose firmware exposes the console on another device need ``linuximage.addkcmdline`` or the serial settings adjusted. diff --git a/docs/source/guides/admin-guides/references/man5/noderes.5.rst b/docs/source/guides/admin-guides/references/man5/noderes.5.rst index 733a5afab..d10f8fd4b 100644 --- a/docs/source/guides/admin-guides/references/man5/noderes.5.rst +++ b/docs/source/guides/admin-guides/references/man5/noderes.5.rst @@ -62,7 +62,7 @@ noderes Attributes: ppc64le NonVirtualize ALL petitboot ppc64le PowerKVM Guest ALL grub2,grub2-http,grub2-tftp aarch64 >=el8 grub2 - riscv64 >=el10 grub2,grub2-http,grub2-tftp + riscv64 >=el10, >=ubuntu24.04 grub2,grub2-http,grub2-tftp diff --git a/docs/source/guides/admin-guides/references/man7/group.7.rst b/docs/source/guides/admin-guides/references/man7/group.7.rst index 477bda943..da1ae65dd 100644 --- a/docs/source/guides/admin-guides/references/man7/group.7.rst +++ b/docs/source/guides/admin-guides/references/man7/group.7.rst @@ -547,7 +547,7 @@ group Attributes: ppc64le NonVirtualize ALL petitboot ppc64le PowerKVM Guest ALL grub2,grub2-http,grub2-tftp aarch64 >=el8 grub2 - riscv64 >=el10 grub2,grub2-http,grub2-tftp + riscv64 >=el10, >=ubuntu24.04 grub2,grub2-http,grub2-tftp diff --git a/docs/source/guides/admin-guides/references/man7/node.7.rst b/docs/source/guides/admin-guides/references/man7/node.7.rst index 6c290d1d7..34067aaa5 100644 --- a/docs/source/guides/admin-guides/references/man7/node.7.rst +++ b/docs/source/guides/admin-guides/references/man7/node.7.rst @@ -547,7 +547,7 @@ node Attributes: ppc64le NonVirtualize ALL petitboot ppc64le PowerKVM Guest ALL grub2,grub2-http,grub2-tftp aarch64 >=el8 grub2 - riscv64 >=el10 grub2,grub2-http,grub2-tftp + riscv64 >=el10, >=ubuntu24.04 grub2,grub2-http,grub2-tftp diff --git a/docs/source/overview/differentiators.rst b/docs/source/overview/differentiators.rst index 7e9e68206..d8c335351 100644 --- a/docs/source/overview/differentiators.rst +++ b/docs/source/overview/differentiators.rst @@ -16,7 +16,7 @@ Differentiators * Support Multiple Hardware - IBM Power, IBM Power LE, x86_64, aarch64 (alpha support), riscv64 (EL10, UEFI + grub2) + IBM Power, IBM Power LE, x86_64, aarch64 (alpha support), riscv64 (EL10 and Ubuntu, UEFI + grub2) * Support Multiple Virtualization Infrastructures diff --git a/docs/source/overview/support_matrix.rst b/docs/source/overview/support_matrix.rst index 6d360f634..31b5ae63a 100644 --- a/docs/source/overview/support_matrix.rst +++ b/docs/source/overview/support_matrix.rst @@ -11,7 +11,7 @@ Operating System & Hardware Support Matrix |SLES | yes | yes | yes | yes | yes | yes | yes | no | no | | | | | | | | | | | | +-------+-------+-------+-----+-------+--------+--------+--------+----------+----------+ -|Ubuntu | no | yes | no | yes | yes | yes | yes | no | no | +|Ubuntu | no | yes | no | yes | yes | yes | yes | no | yes | | | | | | | | | | | | +-------+-------+-------+-----+-------+--------+--------+--------+----------+----------+ |CentOS | no | no | no | no | yes | yes | yes | no | no | @@ -21,4 +21,4 @@ Operating System & Hardware Support Matrix | | | | | | | | | | | +-------+-------+-------+-----+-------+--------+--------+--------+----------+----------+ -riscv64 support covers EL10 compute nodes (Rocky Linux 10 and the RHEL 10 RISC-V developer preview) that boot through UEFI firmware and grub2. See :doc:`/guides/admin-guides/manage_clusters/riscv64/index` for details. +riscv64 support covers EL10 (Rocky Linux 10 and the RHEL 10 RISC-V developer preview) and Ubuntu 24.04 and 26.04, on nodes that boot through UEFI firmware and grub2. Both stateful and stateless nodes are supported, and the management node itself can run on riscv64. See :doc:`/guides/admin-guides/manage_clusters/riscv64/index` for details.