In addition to containers, Pantavisor is in charge of the life-cycle of the Linux kernel, modules and firmware. To allow upgrading all this plus Pantavisor itself, all these binaries have been included under the BSP denomination in the state JSON.
The Pantavisor binary and dependency tree are part of the revision BSP in the state JSON.
Additional files can be added to Pantavisor initrd rootfs without having to do it during compile time.
It is important to remark that the binary file has to be under cpio.xz4 compression. That is, cpio.xz with 4 Byte alignment. You can take a look at how we do the cpio.xz4 compression at this example. For the rest of gdbserver installation and use, go here.
The Linux Kernel, modules and firmware are also part of the revision BSP of the state JSON.
Pantavisor offers a declarative way to define a list of drivers at BSP level, each driver being just a set of one to many Kernel modules. Parameters for Kernel loading are supported too by mapping drivers to device or user metadata.
Containers can then make use of these BSP managed drivers by referencing them.
To natively run Pantavisor on a device, it is necessary to have some on-disk artifacts that fall out of the umbrella of Pantavisor revisions. This is the case of the bootloader, which will load the Linux kernel and directly execute the initrd (Pantavisor) after that. Both the bootloader an Pantavisor will interact with Pantavisor storage to communicate with each other.
We support a number of boards, using both u-boot and grub bootloaders. These include all the bring up stuff that is necessary to run Pantavisor in its minimal form. You can take a look at the supported boards here. Contact us if you need support for your board!