2
0
mirror of https://github.com/xcat2/xcat-core.git synced 2026-09-09 14:36:43 +00:00

docs(riscv64): document Ubuntu 24.04 and 26.04 support

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>
This commit is contained in:
Vinícius Ferrão
2026-09-06 00:17:05 -03:00
parent c32c941ed7
commit 79cddca53e
10 changed files with 122 additions and 57 deletions
@@ -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
--------------------------------------------------------------------------------------
@@ -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`.
@@ -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``.
@@ -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:
@@ -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 <node> boot`` the firmware boots the installed
system because the per-node ``grub2-<node>`` loader link is removed.
Ubuntu
~~~~~~
Import the Ubuntu 24.04 or 26.04 riscv64 live-server ISO with ``copycds``; it
creates the ``ubuntu<version>-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<site.defserialport>``; boards whose
firmware exposes the console on another device need
``linuximage.addkcmdline`` or the serial settings adjusted.
@@ -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
@@ -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
@@ -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
+1 -1
View File
@@ -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
+2 -2
View File
@@ -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.