Build Output

Understanding the Yocto Build Output

After a successful build with kas, the primary artifacts for your target machine are placed in the build/tmp/deploy/images/<machine-name>/ directory. For this guide, we’ll use raspberrypi-armv8 as the example machine.

This directory contains a mix of standard Yocto Project outputs and files specific to Pantavisor. You’ll notice that many files are symbolic links (e.g., Image -> Image-1-6.6.63...). This is a standard Yocto practice to provide a stable, generic filename that points to the latest versioned build artifact.

Here is a breakdown of the output, organized by group.

1) Deployable Disk Images

These are the main output files you will use to flash your device. The filenames are prefixed with the image recipe name you built, such as pantavisor-starter-, pantavisor-remix-, or core-image-base-.

  • .wic.bz2: This is the most important file for deployment. It is a compressed, complete disk image containing all necessary partitions (bootloader, kernel, rootfs, and data). You can decompress it and flash it directly to an SD card or eMMC.

  • .wic.bmap: A block map file used by tools like bmap-tools to flash the image more efficiently, by only writing the parts of the disk that contain data.

  • .ext3 / .ext4: Raw images of the root filesystem partition.

  • .tar.bz2: A tarball of the root filesystem, which can be used for various purposes, including creating containers or populating a filesystem manually.

Example Files:

  • pantavisor-starter-raspberrypi-armv8.rootfs.wic.bz2

  • pantavisor-starter-raspberrypi-armv8.rootfs.ext3

2) Pantavisor Container Objects

These are the individual containers that were built by Yocto and are ready to be managed by Pantavisor. The meta-pantavisor build system packages each container’s root filesystem into a compressed tarball.

  • .pvrexport.tgz: A tarball containing a container’s complete root filesystem. These are used by Pantavisor to construct the final system image and can be deployed in updates.

Example Files:

  • pv-pvr-sdk.pvrexport.tgz

  • pv-pvwificonnect.pvrexport.tgz

  • core-image-base.pvrexport.tgz (if you chose to build a Yocto image as a root container)

3) Kernel and Modules

These are the core components of the Linux operating system.

  • Image or zImage: The compiled Linux kernel binary.

  • modules-*.tgz: A compressed archive containing all the kernel modules (.ko files) that were built for the kernel. Pantavisor automatically includes these in the BSP.

Example Files:

  • Image-raspberrypi-armv8.bin

  • modules-raspberrypi-armv8.tgz

4) Bootloader Files (U-Boot)

These files are responsible for the initial hardware initialization and loading the Linux kernel.

  • u-boot.bin: The U-Boot bootloader binary.

  • boot.scr: A U-Boot script with instructions on how to load the kernel and device tree.

  • u-boot-initial-env: A file containing the default U-Boot environment variables.

Example Files

  • u-boot.bin

  • boot.scr

5) Device Tree Files

Device Tree files describe the hardware components of a board to the Linux kernel, allowing a single kernel binary to support multiple hardware variations.

  • .dtb (Device Tree Blob): A compiled file that describes the main board hardware (e.g., which CPU, memory, and peripherals are on a Raspberry Pi 3 B+).

  • .dtbo (Device Tree Blob Overlay): Smaller, compiled files that describe optional hardware components, like HATs or specific peripherals, which can be loaded at runtime.

Example Files:

  • bcm2711-rpi-4-b.dtb

  • vc4-kms-v3d.dtbo (an overlay for the VideoCore graphics driver)

  • disable-wifi.dtbo (an overlay to disable the onboard Wi-Fi)

6) Pantavisor Core Components

These are files essential for Pantavisor’s own boot and runtime operation.

  • pantavisor-initramfs-*.cpio.gz: The initial RAM filesystem. This is a minimal filesystem loaded into memory during boot, which contains the pantavisor binary and is responsible for finding, mounting, and running the containerized system from storage.

  • pantavisor-bsp-pvs: A directory containing default security credentials for Pantavisor, such as default certificates (.pem, .crt) and private keys used for initial device provisioning.

7) Configuration Files

These are plain-text files used for system configuration.

  • fw_env.config: Configuration for the U-Boot environment, specifying where the bootloader should store its variables on the storage device.

  • oemEnv.txt: A file for defining default OEM-specific variables.

  • *.env: Environment files for different image types (e.g., pantavisor-starter.env).

8) Development & Debug Artifacts

These files are not deployed to the target device but are generated for development, debugging, and license compliance.

  • .manifest: A list of all software packages installed in an image.

  • .spdx.tar.zst: A Software Package Data Exchange (SPDX) bill of materials, useful for license compliance.

  • .testdata.json: Data used for automated testing.