Porting Pantavisor
This section covers how to add support for a new device or hardware platform to meta-pantavisor.
Build System Overview
meta-pantavisor uses Yocto/OpenEmbedded with KAS as the configuration and orchestration layer: builds run through ./kas-container build <config.yaml>, where the config is composed from layered YAML fragments — base settings (kas/bsp-base.yaml), a Yocto release (kas/scarthgap.yaml), a platform (kas/platforms/<family>.yaml), and a machine (kas/machines/<device>.yaml). See the Build system overview for the full hierarchy.
Supported Yocto releases (both LTS): scarthgap (primary, CI-tested) and kirkstone (supported).
Porting Process
Adding a new device involves three steps, each covered in its own page:
-
Platform — Create
kas/platforms/<family>.yamlto declare the vendor BSP layers for a new hardware family. Skip this step if a suitable platform file already exists (checkkas/platforms/). -
Machine — Create
kas/machines/<device>.yamlto bind the platform to a specific YoctoMACHINEname and set any device-specific BitBake variables. -
Building — Run the build, locate the output artifacts, and flash the image to the board.
Registering a Machine for CI
After creating a machine file:
- Add an entry to
.github/machines.json. - Regenerate the workflow files with
.github/scripts/makeworkflows. - Run
.github/scripts/makemachinesto generate the pinned release lockfilekas/build-configs/release/<machine>-scarthgap.yaml. - Commit
machines.json, the generated workflows, and the lockfile together.
See the CI overview for the machine entry format and optional properties.
Existing Platforms and Machines
Before starting, check whether your hardware is already supported:
- Platforms:
kas/platforms/— includesfreescale.yaml,toradex.yaml,raspberrypi.yaml,rockchip.yaml,sunxi.yaml,ti.yaml,variscite.yaml, and more - Machines:
kas/machines/— includes Raspberry Pi, Variscite, Toradex Verdin/Colibri, NXP MEK, Rockchip, RISC-V VisionFive2, and QEMU targets