Deleting xCAT-genesis-builder/README.md removed 99 lines that describe the build path this branch keeps: the kas virtualenv, the architectures `oe/build` accepts, the console keys, `oe/export`, the signed-extension workflow with `oe/export-extension`, and the `oe/report` baseline comparison. Only the legacy RPM builder half was dead. The reader is now told nothing about how to build a Genesis image. xCAT-genesis-base/README.md carries that half with its paths on the new directory. The legacy RPM builder chapter stays deleted. go-xcat keeps xCAT-genesis-builder in GO_XCAT_UNINSTALL_LIST. No build produces that rpm any more, but a management node installed before 2.19 still has it, and the list is what `go-xcat uninstall` hands to the package manager. genesis_readme_paths.t asserts every in-tree path the README names exists, and that its link to the architecture plan resolves. It reads the file because the file is the artifact: the text is the instruction. It matches any xCAT-* directory rather than the new name alone, so a path left on the old name fails instead of going uncollected, and it bails below a fixed floor so a pattern that stops matching cannot pass on an empty plan. Signed-off-by: Daniel Hilst <392820+dhilst@users.noreply.github.com>
3.6 KiB
xCAT Genesis
OpenEmbedded builder
OpenEmbedded is the current Genesis build path. It builds a small, pinned system instead of copying files from the build host.
Install the host packages required by OpenEmbedded, then install kas in a
Python virtual environment:
python3 -m venv .venv
. .venv/bin/activate
pip install -r xCAT-genesis-base/oe/requirements.txt
xCAT-genesis-base/oe/build x86_64
The build command accepts x86, x86_64, ppc64, ppc64le, armv7hf,
aarch64, riscv64, and s390x. Multiple architectures are built in the
order given.
Run xCAT-genesis-base/oe/build --list-architectures to print this list.
Artifacts are written below xCAT-genesis-base/oe/.work/build/tmp/deploy/images.
The x86 artifact uses an i686 CPU baseline. The build carries the reviewed
Yocto release key in oe/keys and verifies its fingerprint locally.
The serial console normally opens a read-only Newt status screen. F1 shows
help, F2 shows diagnostics, and F3 shows live logs. F12 opens a confirmed
root maintenance shell; exiting returns to the status screen. Add
xcat.console=plain to the kernel command line for line output. In plain mode,
type shell and press Enter to open the same confirmed maintenance shell.
Export an image for xCAT after the build:
xCAT-genesis-base/oe/export x86_64 \
xCAT-genesis-base/oe/.work/build/tmp/deploy \
/tmp/xcat-genesis-x86_64
Copy the exported directory intact to the management node at
/opt/xcat/share/xcat/netboot/genesis/x86_64, then publish it:
mknb x86_64
mknb verifies the kernel and initramfs checksums before replacing the files
under the configured TFTP root.
Signed extensions
Build an extension recipe with the same machine configuration as the Genesis image. Then export it with the site's Ed25519 release key:
xCAT-genesis-base/oe/export-extension x86_64 my-extension \
xCAT-genesis-base/oe/.work/build/tmp/deploy \
/secure/genesis-extension.key /secure/genesis-extension.pub \
/tmp/my-extension-bundle
The private key stays outside the source tree. The exported bundle contains the extension image, manifest, signature, public key, and checksums.
A site layer can include that directory in its Genesis image with a small append file:
FILESEXTRAPATHS:prepend := "${THISDIR}/files:"
SRC_URI += "file://my-extension-bundle"
XCAT_GENESIS_EXTENSION_BUNDLE = "my-extension-bundle"
Place the exported directory below the append file's files directory.
Genesis verifies every bundled extension before registration and stops the
boot workflow if the image, manifest, signature, key, release, or architecture
does not match.
Genesis records registration time and memory use in /run/xcat/metrics.env.
After copying that file from a test VM, create a report with image sizes and
runtime measurements:
xCAT-genesis-base/oe/report --runtime /tmp/metrics.env \
x86_64 /tmp/xcat-genesis-x86_64 > /tmp/report.env
Compare a later build with the saved report:
xCAT-genesis-base/oe/report --runtime /tmp/metrics.env \
--baseline /tmp/report.env \
x86_64 /tmp/xcat-genesis-x86_64
Positive deltas mean a larger image, more memory use, or a slower registration.
See the architecture plan for the network, hardware, license, and signed-extension contracts.
Open Source License
xCAT is made available under the EPL license: https://opensource.org/licenses/eclipse-1.0.php
Developers
Want to help? Check out the developers guide!