From 6eba1277fe8e2c29baeaf85fd1adb24a8c7c530a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vin=C3=ADcius=20Ferr=C3=A3o?= <2031761+viniciusferrao@users.noreply.github.com> Date: Thu, 20 Aug 2026 16:51:22 -0300 Subject: [PATCH] docs(riscv64): document EL10 riscv64 compute node support Add the riscv64 page to the cluster management guide (UEFI + grub2 boot path, discovery through mknb's grub2 network configurations, stateful and stateless provisioning, the dependency picture for a management node on riscv64, limitations), list riscv64 in the node object attributes and in the support matrices, add the architecture to the cross-build page for stateless images, extend the grub2 install guide (and fix its swapped x86_64/aarch64 file names), the uninstall package lists, the DHCP backend validation matrix and the mknb/genimage man pages, and carry the riscv64 schema values into the generated nodetype, osimage, noderes, node and group references. --- .../building_stateless_images.rst | 11 +- .../advanced/mixed_cluster/support_matrix.rst | 75 ++++++------ docs/source/developers/guides/code/builds.rst | 6 + .../code/dhcp_backend_validation_matrix.rst | 16 +++ .../basic_concepts/xcat_object/node.rst | 6 +- .../admin-guides/manage_clusters/index.rst | 1 + .../manage_clusters/riscv64/index.rst | 108 ++++++++++++++++++ .../references/man1/genimage.1.rst | 2 +- .../references/man5/noderes.5.rst | 1 + .../references/man5/nodetype.5.rst | 2 +- .../references/man5/osimage.5.rst | 2 +- .../admin-guides/references/man7/group.7.rst | 3 +- .../admin-guides/references/man7/node.7.rst | 3 +- .../references/man7/osimage.7.rst | 2 +- .../admin-guides/references/man8/mknb.8.rst | 2 + .../guides/install-guides/yum/grub2.rst | 15 ++- docs/source/overview/differentiators.rst | 2 +- docs/source/overview/support_matrix.rst | 40 ++++--- xCAT-client/pods/man1/genimage.1.pod | 2 +- xCAT-client/pods/man8/mknb.8.pod | 2 + 20 files changed, 224 insertions(+), 77 deletions(-) create mode 100644 docs/source/guides/admin-guides/manage_clusters/riscv64/index.rst diff --git a/docs/source/advanced/mixed_cluster/building_stateless_images.rst b/docs/source/advanced/mixed_cluster/building_stateless_images.rst index b08f855e0..c3a1ffa5a 100644 --- a/docs/source/advanced/mixed_cluster/building_stateless_images.rst +++ b/docs/source/advanced/mixed_cluster/building_stateless_images.rst @@ -9,15 +9,16 @@ 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* and aarch64 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. -Cross-build ppc64*/aarch64 stateless/statelite image on x86_64 management node ------------------------------------------------------------------------------- +Cross-build ppc64*/aarch64/riscv64 stateless/statelite image on x86_64 management node +-------------------------------------------------------------------------------------- -#. Download qemu-user-static binaries for ppc64le and/or aarch64: :: +#. Download qemu-user-static binaries for ppc64le, aarch64 and/or riscv64: :: wget https://github.com/multiarch/qemu-user-static/releases/latest/download/qemu-ppc64le-static -P /usr/bin wget https://github.com/multiarch/qemu-user-static/releases/latest/download/qemu-aarch64-static -P /usr/bin + wget https://github.com/multiarch/qemu-user-static/releases/latest/download/qemu-riscv64-static -P /usr/bin chmod 755 /usr/bin/qemu-*-static #. Configure systemd-binfmt accordingly: :: @@ -26,7 +27,7 @@ Cross-build ppc64*/aarch64 stateless/statelite image on x86_64 management node bash qemu-binfmt-conf.sh --systemd 'ALL' --qemu-path '/usr/bin' --qemu-suffix '-static' --persistent 'yes' systemctl restart systemd-binfmt.service -#. Make sure ``osimage.osarch`` of your image is set to your target architecture eg. ``ppc64le`` or ``aarch64``. +#. Make sure ``osimage.osarch`` of your image is set to your target architecture eg. ``ppc64le``, ``aarch64`` or ``riscv64``. Now, ``genimage`` will use systemd-binfmt and the qemu-user-static binary to build the image for the specified architecture. diff --git a/docs/source/advanced/mixed_cluster/support_matrix.rst b/docs/source/advanced/mixed_cluster/support_matrix.rst index 8fcbacfd0..8bf5e69e7 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 | -| | ppc64 | ppc64 | x86_64 | x86_64 | x86_64 | ppc64le | ppc64le | ppc64el | aarch64 | aarch64 | aarch64 | -| | CN | CN | CN | CN | CN | CN | CN | CN | CN | CN | CN | -+=========+=========+=========+=========+=========+=========+=========+=========+=========+=========+=========+=========+ -| RHEL | | | | | | | | | | | | -| ppc64 | yes | yes | yes | yes | yes | yes | yes | yes | no | no | no | -| MN/SN | | | [1]_ | [1]_ | [1]_ | | | | | | | -+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+ -| SLES | | | | | | | | | | | | -| ppc64 | yes | yes | yes | yes | yes | yes | yes | yes | no | no | no | -| MN/SN | | | [1]_ | [1]_ | [1]_ | | | | | | | -+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+ -| RHEL | | | | | | | | | | | | -| x86_64 | yes | yes | yes | yes | yes | yes | yes | yes | yes | no | no | -| MN/SN | [4]_ | [4]_ | | | | | | | | | | -+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+ -| SLES | | | | | | | | | | | | -| x86_64 | yes | yes | yes | yes | yes | yes | yes | yes | yes | no | no | -| MN/SN | [4]_ | [4]_ | | | | | | | | | | -+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+ -| Ubuntu | | | | | | | | | | | | -| x86_64 | yes | yes | yes | yes | yes | yes | yes | yes | yes | no | no | -| MN/SN | [5]_ | [5]_ | | | | | | | | | | -+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+ -| RHEL | | | | | | | | | | | | -| ppc64le | yes | yes | yes | yes | yes | yes | yes | yes | no | no | no | -| MN/SN | [2]_ | [2]_ | | | | | | | | | | -+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+ -| SLES | | | | | | | | | | | | -| ppc64le | no | no | yes | yes | yes | yes | yes | yes | no | no | no | -| MN/SN | | | | | | | | | | | | -+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+ -| Ubuntu | | | | | | | | | | | | -| ppc64el | yes | yes | yes | yes | yes | yes | yes | yes | no | no | no | -| MN/SN | [3]_ | [3]_ | | | | | | | | | | -+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+ ++---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+ +| | 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]_ | | | | | | | | | | | ++---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+ Notes: @@ -53,3 +53,4 @@ Notes: .. [3] If the compute nodes are DFM managed systems, will need xCAT 2.10 or high versions and the ppc64le DFM and ppc64le hardware server on the management node. .. [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`. diff --git a/docs/source/developers/guides/code/builds.rst b/docs/source/developers/guides/code/builds.rst index 9f7f5cbe3..6e016881c 100644 --- a/docs/source/developers/guides/code/builds.rst +++ b/docs/source/developers/guides/code/builds.rst @@ -20,6 +20,12 @@ binary rpms for each architecture. ``rpmbuild`` does not need the packages named in ``BuildRequires`` to make a source rpm, so this also builds on a machine that cannot complete a full build. ``SRCONLY`` is not supported on AIX. +``buildcore.sh`` builds the architecture specific packages (``xCAT``, ``xCATsn``, +``xCAT-genesis-scripts``) for every supported architecture, riscv64 included, with +``rpmbuild --target``. The build host therefore needs an rpm that knows the riscv64 +architecture and the ``Recommends:`` tag (EL8 or later); an older host fails the riscv64 +builds and, as the script only publishes when every architecture built, produces no rpms. + xcat-deps --------- diff --git a/docs/source/developers/guides/code/dhcp_backend_validation_matrix.rst b/docs/source/developers/guides/code/dhcp_backend_validation_matrix.rst index 8bb769b15..5b3515d4d 100644 --- a/docs/source/developers/guides/code/dhcp_backend_validation_matrix.rst +++ b/docs/source/developers/guides/code/dhcp_backend_validation_matrix.rst @@ -226,6 +226,22 @@ paths. - package installation on ``ppc64el``; DHCP offer; boot file handoff; POWER boot-path correctness; Genesis shell when live validation is in scope + * - EL10 + - ``riscv64`` + - ``Kea`` + - ``UEFI grub2 handoff`` + - DHCP offer carries ``boot/grub2/grub2.riscv64`` for client + architecture 27 (``0x001b``); ``grub2.riscv64`` fetches + ``boot/grub2/grub.cfg-`` for discovery and the + per-node ``grub.cfg-`` after ``nodeset``; Genesis shell when + Genesis payload validation is in scope + * - EL10 + - ``riscv64`` + - ``ISC`` + - ``UEFI grub2 handoff`` + - same as the Kea row through the ISC subnet branch for client + architecture ``00:1b``; the riscv64 branch must answer before the + ``/yaboot`` fallback Current Lab Baseline -------------------- 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 15f3d48d3..c72a78d42 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 @@ -13,7 +13,7 @@ Key Attributes The operating system deployed on this node. Valid values: AIX, rhels*, rhelc*, rhas*, centos*, SL*, fedora*, sles* (where * is the version #) * arch: - The hardware architecture of this node. Valid values: x86_64, ppc64, x86, ia64, aarch64. + The hardware architecture of this node. Valid values: x86_64, ppc64, x86, ia64, aarch64, riscv64. * groups: Usually, there are a set of nodes with some attributes in common, xCAT admin can define a node group containing these nodes, so that the management task can be issued against the group instead of individual nodes. A node can be a member of different groups, so the value of this attributes is a comma-delimited list of groups. At least one group is required to create a node. The new created group names should not be prefixed with "__" as this token has been preserved as the internal group name. @@ -44,7 +44,9 @@ Key Attributes | ppc64le PowerKVM Guest | ALL | grub2,grub2-http,grub2-tftp | +--------------------------+----------------------+-----------------------------------+ | aarch64 | >=el8 | grub2 | - +-------------------------------------------------+-----------------------------------+ + +--------------------------+----------------------+-----------------------------------+ + | riscv64 | >=el10 | grub2,grub2-http,grub2-tftp | + +--------------------------+----------------------+-----------------------------------+ * postscripts: Comma separated list of scripts, that should be run on this node after diskful installation or diskless boot, finish some system configuration and maintenance work. For installation of RedHat, CentOS, Fedora, the scripts will be run before the reboot. For installation of SLES, the scripts will be run after the reboot but before the init.d process. diff --git a/docs/source/guides/admin-guides/manage_clusters/index.rst b/docs/source/guides/admin-guides/manage_clusters/index.rst index d44e4a099..e9e8b0d11 100644 --- a/docs/source/guides/admin-guides/manage_clusters/index.rst +++ b/docs/source/guides/admin-guides/manage_clusters/index.rst @@ -11,3 +11,4 @@ The sections are organized based on hardware architecture. ppc64le/index.rst x86_64/index.rst + riscv64/index.rst diff --git a/docs/source/guides/admin-guides/manage_clusters/riscv64/index.rst b/docs/source/guides/admin-guides/manage_clusters/riscv64/index.rst new file mode 100644 index 000000000..4279b4596 --- /dev/null +++ b/docs/source/guides/admin-guides/manage_clusters/riscv64/index.rst @@ -0,0 +1,108 @@ +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 +:doc:`/guides/admin-guides/manage_clusters/common/index` applies; this page +only covers what is specific to the architecture. + +What riscv64 nodes need +----------------------- + +* **UEFI firmware that can PXE boot.** riscv64 nodes boot through UEFI and + grub2 only: there is no BIOS/PXELINUX, petitboot or xNBA path. The firmware + 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. +* ``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. + It is provided by the ``grub2-xcat`` package where available; otherwise copy + ``EFI/BOOT/grubriscv64.efi`` from the EL10 riscv64 BaseOS media as described + in :doc:`/guides/install-guides/yum/grub2`. +* The riscv64 Genesis image (``xCAT-genesis-base-riscv64`` and + ``xCAT-genesis-scripts-riscv64``) for discovery, BMC setup and flashing. Its + kernel must be loadable by grub2, that is, built with the EFI stub. + +The management node itself can be x86_64 or ppc64le; riscv64 is managed like +any other mixed-architecture cluster (see +:doc:`/advanced/mixed_cluster/support_matrix`). + +Node discovery +-------------- + +``mknb riscv64`` publishes the Genesis kernel and initramfs as +``/tftpboot/xcat/genesis.kernel.riscv64`` and +``/tftpboot/xcat/genesis.fs.riscv64.gz`` and writes one grub2 configuration per +network, ``/tftpboot/boot/grub2/grub.cfg-``. A net booted +``grub2.riscv64`` looks for ``grub.cfg-01-``, then ``grub.cfg-<8 hex digit +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. +``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. + +Discovered riscv64 nodes get ``nodetype.arch=riscv64`` and, when no compatible +method is set, ``noderes.netboot=grub2``. Use the discovery procedures documented +for the other architectures. + +Stateful (diskful) installation +-------------------------------- + +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. The default +kickstart templates and package lists are shared with the other architectures; +``service.rocky10.riscv64.otherpkgs.pkglist`` pulls the service node packages +from the ``rh10/riscv64`` xcat-dep repository. + +The installer creates the UEFI boot entry for the installed system; after +``nodeset boot`` the firmware falls through to it because the per-node +``grub2-`` loader link is removed. + +Stateless (diskless) images +--------------------------- + +``genimage`` builds riscv64 images with the ``compute.rocky10.riscv64.*`` and +``compute.rhels10.riscv64.*`` profiles (package list, exclude list and +postinstall). On an x86_64 management node this needs ``qemu-user-static`` +registered for riscv64 through ``systemd-binfmt``; see +:doc:`/advanced/mixed_cluster/building_stateless_images`. EL10 has no +``qemu-user-static`` package of its own, so take the static riscv64 emulator +from a distribution that ships one. The default network driver list for +riscv64 images covers virtio, Intel, Realtek, Broadcom and Mellanox adapters; +add others through ``linuximage.netdrivers``. + +Management node on riscv64 +-------------------------- + +The EL10 riscv64 BaseOS, AppStream and CRB repositories provide every +dependency that xCAT takes from the distribution on x86_64, including ``kea``. +EPEL has no riscv64 build, so the packages xCAT otherwise takes from EPEL must +come from the riscv64 xcat-dep repository together with the usual xcat-dep +packages: + +* from EPEL on x86_64: ``perl-Digest-SHA1``, ``perl-Net-DNS``, + ``perl-Crypt-CBC``, ``perl-Crypt-Rijndael``, ``perl-DB_File``; optional + features also use ``perl-Expect``, ``perl-HTML-Form``, ``perl-Sys-Virt``, + ``perl-Mail-Sender``, ``perl-SOAP-Lite``, ``perl-Crypt-Blowfish``, + ``perl-Net-IP`` and ``conserver``; +* always from xcat-dep: ``perl-Net-Telnet``, ``perl-IO-Stty``, + ``perl-Net-HTTPS-NB``, ``perl-HTTP-Async``, ``perl-Crypt-SSLeay``, + ``goconserver``, ``ipmitool-xcat``, ``conserver-xcat`` and ``grub2-xcat``. + +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. +* Ubuntu riscv64 is not supported yet. +* 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/man1/genimage.1.rst b/docs/source/guides/admin-guides/references/man1/genimage.1.rst index 1d13e6ede..31022bf89 100644 --- a/docs/source/guides/admin-guides/references/man1/genimage.1.rst +++ b/docs/source/guides/admin-guides/references/man1/genimage.1.rst @@ -72,7 +72,7 @@ OPTIONS \ **-a**\ \ *arch*\ - The hardware architecture of this node: ppc64le, x86_64, ppc64, x86, ia64, aarch64 etc. If omitted, the current hardware architecture will be used. + The hardware architecture of this node: ppc64le, x86_64, ppc64, x86, ia64, aarch64, riscv64 etc. If omitted, the current hardware architecture will be used. 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 67bb5fde7..733a5afab 100644 --- a/docs/source/guides/admin-guides/references/man5/noderes.5.rst +++ b/docs/source/guides/admin-guides/references/man5/noderes.5.rst @@ -62,6 +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 diff --git a/docs/source/guides/admin-guides/references/man5/nodetype.5.rst b/docs/source/guides/admin-guides/references/man5/nodetype.5.rst index 72e6d6f4b..bf10c8f87 100644 --- a/docs/source/guides/admin-guides/references/man5/nodetype.5.rst +++ b/docs/source/guides/admin-guides/references/man5/nodetype.5.rst @@ -50,7 +50,7 @@ nodetype Attributes: \ **arch**\ - The hardware architecture of this node. Valid values: x86_64, ppc64, x86, ia64, aarch64. + The hardware architecture of this node. Valid values: x86_64, ppc64, x86, ia64, aarch64, riscv64. diff --git a/docs/source/guides/admin-guides/references/man5/osimage.5.rst b/docs/source/guides/admin-guides/references/man5/osimage.5.rst index 5ec6a150e..4586a84f2 100644 --- a/docs/source/guides/admin-guides/references/man5/osimage.5.rst +++ b/docs/source/guides/admin-guides/references/man5/osimage.5.rst @@ -115,7 +115,7 @@ osimage Attributes: \ **osarch**\ - The hardware architecture of this node. For netboot/statelite images, QEMU emulation for non-native architectures is used if qemu-user-static is installed and configured via systemd-binfmt. Valid values: x86_64, ppc64, x86, ia64, aarch64. + The hardware architecture of this node. For netboot/statelite images, QEMU emulation for non-native architectures is used if qemu-user-static is installed and configured via systemd-binfmt. Valid values: x86_64, ppc64, x86, ia64, aarch64, riscv64. 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 655dbfc8c..477bda943 100644 --- a/docs/source/guides/admin-guides/references/man7/group.7.rst +++ b/docs/source/guides/admin-guides/references/man7/group.7.rst @@ -47,7 +47,7 @@ group Attributes: \ **arch**\ (nodetype.arch) - The hardware architecture of this node. Valid values: x86_64, ppc64, x86, ia64, aarch64. + The hardware architecture of this node. Valid values: x86_64, ppc64, x86, ia64, aarch64, riscv64. @@ -547,6 +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 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 14ca6699f..6c290d1d7 100644 --- a/docs/source/guides/admin-guides/references/man7/node.7.rst +++ b/docs/source/guides/admin-guides/references/man7/node.7.rst @@ -59,7 +59,7 @@ node Attributes: \ **arch**\ (nodetype.arch) - The hardware architecture of this node. Valid values: x86_64, ppc64, x86, ia64, aarch64. + The hardware architecture of this node. Valid values: x86_64, ppc64, x86, ia64, aarch64, riscv64. @@ -547,6 +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 diff --git a/docs/source/guides/admin-guides/references/man7/osimage.7.rst b/docs/source/guides/admin-guides/references/man7/osimage.7.rst index cb31b767e..db91bb9d9 100644 --- a/docs/source/guides/admin-guides/references/man7/osimage.7.rst +++ b/docs/source/guides/admin-guides/references/man7/osimage.7.rst @@ -230,7 +230,7 @@ osimage Attributes: \ **osarch**\ (osimage.osarch) - The hardware architecture of this node. For netboot/statelite images, QEMU emulation for non-native architectures is used if qemu-user-static is installed and configured via systemd-binfmt. Valid values: x86_64, ppc64, x86, ia64, aarch64. + The hardware architecture of this node. For netboot/statelite images, QEMU emulation for non-native architectures is used if qemu-user-static is installed and configured via systemd-binfmt. Valid values: x86_64, ppc64, x86, ia64, aarch64, riscv64. diff --git a/docs/source/guides/admin-guides/references/man8/mknb.8.rst b/docs/source/guides/admin-guides/references/man8/mknb.8.rst index de6f39c38..acb753076 100644 --- a/docs/source/guides/admin-guides/references/man8/mknb.8.rst +++ b/docs/source/guides/admin-guides/references/man8/mknb.8.rst @@ -46,6 +46,8 @@ OpenEmbedded images use the exact architecture names \ ``x86``\ , \ ``x86_64``\ Canonical \ ``ppc64``\ images are big-endian. xCAT marks them so \ ``ppc64le``\ nodes do not use them as a legacy little-endian fallback. \ **mknb**\ also refuses to replace a marked \ ``ppc64``\ image with that fallback. +riscv64 nodes boot through UEFI firmware and grub2. For riscv64, \ **mknb**\ publishes the Genesis kernel and initramfs and writes one grub2 configuration per network under ``/tftpboot/boot/grub2``, named ``grub.cfg-`` followed by the network hex prefix, so that ``grub2.riscv64`` loaded by the firmware can start node discovery. The per-node files written by \ **nodeset**\ take priority over these network files. Networks served by a ``:noboot`` interface in ``site.dhcpinterfaces`` get no discovery configuration. + ******* OPTIONS diff --git a/docs/source/guides/install-guides/yum/grub2.rst b/docs/source/guides/install-guides/yum/grub2.rst index ff0b498a3..ff12e1539 100644 --- a/docs/source/guides/install-guides/yum/grub2.rst +++ b/docs/source/guides/install-guides/yum/grub2.rst @@ -1,17 +1,20 @@ -grub2 support for x86_64 and aarch64 -==================================== +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 both architectures. +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. + #. Download files from an BaseOS EL repository mirror - For EL these files are named ``grubx64.efi`` (x86_64) and ``grubaa64.efi`` (aarch64) and usually in ``BaseOS//os/EFI/BOOT``. + For EL these files are named ``grubx64.efi`` (x86_64), ``grubaa64.efi`` (aarch64) and ``grubriscv64.efi`` (riscv64) and usually in ``BaseOS//os/EFI/BOOT``. For very recent hardware you might need to use a newer grub version. Therefore, it's recommended to use a binary from the latest operationg system release available. You can use Red Hat Enterprise Linux, AlmaLinux, Rocky Linux or even Fedora repositories to download the grub files. #. Copy downloaded files to ``/tftpboot/boot/grub2``: - * x86_64: ``/tftpboot/boot/grub2/grub2.aarch64`` - * aarch64: ``/tftpboot/boot/grub2/grub2.x86_64`` + * x86_64: ``/tftpboot/boot/grub2/grub2.x86_64`` + * aarch64: ``/tftpboot/boot/grub2/grub2.aarch64`` + * riscv64: ``/tftpboot/boot/grub2/grub2.riscv64`` diff --git a/docs/source/overview/differentiators.rst b/docs/source/overview/differentiators.rst index 2f4fe5e49..7e9e68206 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) + IBM Power, IBM Power LE, x86_64, aarch64 (alpha support), riscv64 (EL10, UEFI + grub2) * Support Multiple Virtualization Infrastructures diff --git a/docs/source/overview/support_matrix.rst b/docs/source/overview/support_matrix.rst index d458c6167..6d360f634 100644 --- a/docs/source/overview/support_matrix.rst +++ b/docs/source/overview/support_matrix.rst @@ -1,22 +1,24 @@ Operating System & Hardware Support Matrix ========================================== -+-------+-------+-------+-----+-------+--------+--------+--------+----------+ -| | Power | Power | zVM | Power | x86_64 | x86_64 | x86_64 | aarch64 | -| | | LE | | KVM | | KVM | Esxi | | -+=======+=======+=======+=====+=======+========+========+========+==========+ -|RHEL | yes | yes | yes | yes | yes | yes | yes | yes | -| | | | | | | | | | -+-------+-------+-------+-----+-------+--------+--------+--------+----------+ -|SLES | yes | yes | yes | yes | yes | yes | yes | no | -| | | | | | | | | | -+-------+-------+-------+-----+-------+--------+--------+--------+----------+ -|Ubuntu | no | yes | no | yes | yes | yes | yes | no | -| | | | | | | | | | -+-------+-------+-------+-----+-------+--------+--------+--------+----------+ -|CentOS | no | no | no | no | yes | yes | yes | no | -| | | | | | | | | | -+-------+-------+-------+-----+-------+--------+--------+--------+----------+ -|Windows| no | no | no | no | yes | yes | yes | no | -| | | | | | | | | | -+-------+-------+-------+-----+-------+--------+--------+--------+----------+ ++-------+-------+-------+-----+-------+--------+--------+--------+----------+----------+ +| | Power | Power | zVM | Power | x86_64 | x86_64 | x86_64 | aarch64 | riscv64 | +| | | LE | | KVM | | KVM | Esxi | | | ++=======+=======+=======+=====+=======+========+========+========+==========+==========+ +|RHEL | yes | yes | yes | yes | yes | yes | yes | yes | yes | +| | | | | | | | | | | ++-------+-------+-------+-----+-------+--------+--------+--------+----------+----------+ +|SLES | yes | yes | yes | yes | yes | yes | yes | no | no | +| | | | | | | | | | | ++-------+-------+-------+-----+-------+--------+--------+--------+----------+----------+ +|Ubuntu | no | yes | no | yes | yes | yes | yes | no | no | +| | | | | | | | | | | ++-------+-------+-------+-----+-------+--------+--------+--------+----------+----------+ +|CentOS | no | no | no | no | yes | yes | yes | no | no | +| | | | | | | | | | | ++-------+-------+-------+-----+-------+--------+--------+--------+----------+----------+ +|Windows| no | no | no | no | yes | yes | yes | no | no | +| | | | | | | | | | | ++-------+-------+-------+-----+-------+--------+--------+--------+----------+----------+ + +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. diff --git a/xCAT-client/pods/man1/genimage.1.pod b/xCAT-client/pods/man1/genimage.1.pod index 60d9c78be..48633e597 100644 --- a/xCAT-client/pods/man1/genimage.1.pod +++ b/xCAT-client/pods/man1/genimage.1.pod @@ -50,7 +50,7 @@ I specifies the name of an os image definition to be used. The specif =item B<-a> I -The hardware architecture of this node: ppc64le, x86_64, ppc64, x86, ia64, aarch64 etc. If omitted, the current hardware architecture will be used. +The hardware architecture of this node: ppc64le, x86_64, ppc64, x86, ia64, aarch64, riscv64 etc. If omitted, the current hardware architecture will be used. =item B<-o> I diff --git a/xCAT-client/pods/man8/mknb.8.pod b/xCAT-client/pods/man8/mknb.8.pod index 1e377b0cc..6ffa74517 100644 --- a/xCAT-client/pods/man8/mknb.8.pod +++ b/xCAT-client/pods/man8/mknb.8.pod @@ -28,6 +28,8 @@ OpenEmbedded images use the exact architecture names C, C, C Canonical C images are big-endian. xCAT marks them so C nodes do not use them as a legacy little-endian fallback. B also refuses to replace a marked C image with that fallback. +riscv64 nodes boot through UEFI firmware and grub2. For riscv64, B publishes the Genesis kernel and initramfs and writes one grub2 configuration per network under C, named C followed by the network hex prefix, so that C loaded by the firmware can start node discovery. The per-node files written by B take priority over these network files. Networks served by a C<:noboot> interface in C get no discovery configuration. + =head1 OPTIONS =over 12