Skip to main content
Version: 029-rc4

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:

  1. Platform — Create kas/platforms/<family>.yaml to declare the vendor BSP layers for a new hardware family. Skip this step if a suitable platform file already exists (check kas/platforms/).

  2. Machine — Create kas/machines/<device>.yaml to bind the platform to a specific Yocto MACHINE name and set any device-specific BitBake variables.

  3. 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:

  1. Add an entry to .github/machines.json.
  2. Regenerate the workflow files with .github/scripts/makeworkflows.
  3. Run .github/scripts/makemachines to generate the pinned release lockfile kas/build-configs/release/<machine>-scarthgap.yaml.
  4. 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/ — includes freescale.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