OS Builds
RadBuild 0.2.1 supports three OS build families:
os.radpxfor RADPx OS images, packagegroups, SDK/sysroot export, and QEMUlinux.petalinuxfor Xilinx/Zynq MPSoC projects that already rely onlinux.buildrootfor projects that need a smaller generated Buildroot
verification.
PetaLinux tooling.
external tree.
The RADPx provider is the most integrated path. It owns source checkout, feature selection, rkconfig, .radpm package staging, rootfs generation, SDK export, and VM launch scripts. PetaLinux and Buildroot support remain useful FPGA/Linux companion flows, but they do not currently expose the same packagegroup and RADPx rootfs automation.
RADPx From Scratch
Starting with only the packaged RadBuild CLI installed:
mkdir -p ~/radpx-work
radbuild project create ~/radpx-work --non-interactive --template radpx-os-terminal --project-name radpx-terminal
cd ~/radpx-work/radpx-terminal
radbuild menuconfig --settings settings.json
radbuild build os --settings settings.json --json-events
./artifacts/radpx/x86_64-grub-terminal/run-radpx-vm.sh
The template pulls RADPx OS from the configured Git branch, resolves the selected RadicalPackages .radpm packagegroups, creates the ext4/FAT images, and emits a runnable x86_64 GRUB VM bundle.
Terminal Profile
radbuild build os --settings settings.terminal.json --json-events
Expected artifacts:
radpxkernel-x86-64-grub-terminal.iso
radpxkernel-x86-64-grub-terminal
radpx-rootfs.ext4
radpx-fat32.img
run-radpx-vm.sh
SHA256SUMS
Window Manager Profile
radbuild build os --settings settings.wm.json --json-events
The window-manager profile enables RADCompositor and Slint shell chunks while keeping the same package and artifact flow.
RADPx Menuconfig
radbuild menuconfig --settings settings.terminal.json --list
radbuild menuconfig --settings settings.terminal.json --apply-profile wm --json
radbuild menuconfig --settings settings.terminal.json --enable-packagegroup radpx-networking --resolve-packages --json
radbuild menuconfig --settings settings.terminal.json --enable-package radlib-ui --resolve-packages --json
Packagegroup edits select coherent RADPx OS feature sets from the configured .radpm repository. Individual package edits stay explicit: RadBuild reports missing dependencies with the package or packagegroup that can satisfy them instead of silently mutating the project.
The VSCode extension exposes the same state through RadBuild: Configure RADPx OS. It reads menuconfig --json --list, edits rkconfig, source checkout, image, SDK, packagegroup, and package fields, then writes changes back through non-interactive radbuild menuconfig flags. This keeps VSCode and terminal configuration behavior identical.
PetaLinux Profile
Use fpga-mpsoc-petalinux when a Vivado hardware handoff should feed a PetaLinux project. RadBuild generates and validates the graph, carries the XSA directory and firmware/module lists, and can drive PetaLinux commands when the Xilinx tools are installed on the host.
radbuild project create ./workspace --non-interactive --template fpga-mpsoc-petalinux --project-name zynq-demo
radbuild generate --settings ./workspace/zynq-demo/settings.json
radbuild build linux --settings ./workspace/zynq-demo/settings.json --system petalinux --json-events
Important fields live under the linux.petalinux system config: target_ip, modules, firmware, xsa_dir, template, bsp_release_dir, and fast_update_dir.
Buildroot Profile
Use fpga-mpsoc-buildroot when a project needs a generated Buildroot external tree without the heavier PetaLinux flow.
radbuild project create ./workspace --non-interactive --template fpga-mpsoc-buildroot --project-name buildroot-demo
radbuild generate --settings ./workspace/buildroot-demo/settings.json
radbuild build linux --settings ./workspace/buildroot-demo/settings.json --system buildroot --json-events
Important fields live under the linux.buildroot system config: board and external_tree. This path is intentionally simple today; board defconfigs and full package policy should stay in the generated external tree until RadBuild adds deeper Buildroot package orchestration.