Skip to content
Oleksii Moisieiev edited this page Jul 30, 2024 · 19 revisions

Overview

The Xen-Troops RPI 5 Xen demonstration project is intended to demonstrate how RPI 5 can be used to run with Xen.

It includes the following components:

  • Zephyr operated control domain which is a thin Zephyr Dom0 zephyr-dom0-xt application with shell and SD-card storage support (SDHC). It also supports dom0less functionality. This domain is responsible for Xen domains control. It includes xen-tools library which gives an ability to control other domains.
  • Linux operated driver domain. This domain managing hardware and provides access to some of this hardware to other domains using PV backends. It has access to USB and rootfs is placed on USB storage. It's started in Xen dom0less mode.
  • A set of guest domains kernel images to be started from the control domain.

Once Zephyr control domain zephyr-dom0-xt booted it can start other guest domains.

The Zephyr Dom0 zephyr-dom0-xt provides following guest domain configurations:

  • rpi_5_domd: The Xen guest domain configuration which uses real RPI5 GPIO HW /soc/gpio@7d517c00. It's based on Zephyr Blinky sample.
  • rpi_5_domu: The Xen guest domain configuration which is starts Xen guest domain without using real RPI5 HW. It's based on Zephyr samples/synchronization sample.
  • helloworld_xen-arm64: The Xen guest domain configuration without using real RPI5 HW which starts Unikraft kernel. It is based on "Unikraft helloworld" and "monkey" examples.
  • linux_pv_domu: The Linux based Xen guest domain with initrams and PV network support.

Boot process:

  • RPI5 bootloder started u-boot
  • u-boot executes boot script:
    • loads Zephyr Dom0 binary
    • loads RPI 5 Linux operated driver domain binary (DomU0)
    • loads Xen Passthrough device tree binary (DomU0)
    • Linux System device tree device tree binary is provided by RPI5 bootloder and reused
    • applies changes to Linux System device tree device tree for Xen dom0less boot mode
    • loads Xen binary and starts Xen
  • Xen is booted and starts Zephyr Dom0 zephyr-dom0-xt and RPI 5 Linux operated driver domain DomU0

Build for the Linux operated driver domain is based on RPI5 BSP yocto build: meta-raspberrypi

Status

This is release 0.1.0. This release supports the following features:

  • Zephyr operated control domain:
    • xen libraries integration that allows control of the other domains.
    • domd with running OCI containers as Aos services capability.
  • Linux operated driver domain:
    • controls hardware;
    • provides PV backends for the domains.
  • rpi_5_domd domain
    • zephyr-based domain built on top of zephyr-blinky sample;
    • GPIO device passedthrough to the domain to control onboard LED;
    • do not start automatically.
  • rpi_5_domu domain
    • zephyr-based domain built on top of zephyr-sync sample;
    • do not start automatically.
  • helloworld_xen-arm64 domain:
    • demonstrates work of unikernel images as a domains.
  • linux_pv_domu domain:
    • Simple linux-based domain with initramfs
    • implements PVnet interface to access other domains via pv network;
    • impelments PVblock interface which allows to mount block devices to the domains.

Testing pvnet connection instruction: linux_pv_domu testing

Building and testing

Please refer to the following link to gen build and test instructions: README

Releases

Date Version Direct Link
07 June 2024 0.1.0 curl -O https://raw.githubusercontent.com/xen-troops/meta-xt-prod-devel-rpi5/rpi5-v0.1.0/rpi5.yaml
20 June 2024 0.1.1 curl -O https://raw.githubusercontent.com/xen-troops/meta-xt-prod-devel-rpi5/v0.1.1/rpi5.yaml
29 July 2024 0.1.2 curl -O https://raw.githubusercontent.com/xen-troops/meta-xt-prod-devel-rpi5/v0.1.2/rpi5.yaml
30 July 2024 0.2.0 curl -O https://raw.githubusercontent.com/xen-troops/meta-xt-prod-devel-rpi5/v0.2.0/rpi5.yaml

Changelog

Date Version Changes
07 June 2024 0.1.0 Initial release
20 June 2024 0.1.1 Stabilizing versions for the following components:
- xen
- fatfs for zephyr-dom0-xt
29 July 2024 0.1.2 fix incompatibility with new rpi5 fw
30 July 2024 0.2.0 - add nvme storage for DomD rootfs support
- OP-TEE integration enhancements
- u-boot: fix initialization when several PCIe
devices enabled
- add vchan utilities to the DomD
- XSM security labeld configuration