Bringing RAUC A/B Updates to More Linux Devices
Leon Anavi, Konsulko Group
Presented at the FOSDEM, February 2022
RAUC is a safe and secure open source software solution for A/B updates of embedded Linux devices. RAUC supports industry-leading build system: the Yocto Project and OpenEmbedded, Buildroot and PTXdist. Porting RAUC to a new device requires several advanced technical steps. Layer meta-rauc-community exists to speed up and simplify the integration process for Yocto and OpenEmbedded by providing examples for popular devices such as Rasperry Pi, Allwinner (Sunxi), NVIDIA Tegra and QEMU.
RAUC is a popular solution for A/B updates of embedded Linux devices because of its flexibility, safety and security features. It supports industry-leading build system: Yocto Project and OpenEmbedded, Buildroot and PTXdist. Upgrades are performed through RAUC bundles which can be installed either through the network or just using a USB stick.
To port RAUC to a new device, we need to go through several steps: setup appropriate bootloader like U-Boot, enable SquashFS in the Linux kernel configurations, use ext4 file system, create partitions and configure RAUC slots, generate certificates and setup bootloader environment configurations with a script to switch RAUC slots over upgrades. To simplify the getting started process of developers using RAUC with Yocto and OpenEmbedded in 2020 Leon Anavi created layer meta-rauc-community. In 2021 the layer was moved to the RAUC organization in GitHub. Initially it offered only Raspberry Pi support and over the time, thanks to numerous community contributions, the support was extended to more machines. As of the moment meta-rauc-community provides RAUC sample integrations for Raspberry Pi, Sunxi (Allwinner), QEMUx86 and NVIDIA Jetson TX2.
This presentation provides a brief introduction to RAUC and layers meta-rauc and meta-rauc-community. We go through the exact steps how build, flash and update an image using bitbake to the currently supported platforms. Furthermore we will discuss general guidelines for porting RAUC and adding new supported machines to meta-rauc-community in the future.
The talk is appropriate for anyone with basic knowledge about Linux. It will hopefully help other software developers in the community to overcame faster and easier similar technical difficulties while integrating the RAUC client on embedded Linux devices and hopefully contribute back to the Yocto/OpenEmbedded layer meta-rauc-community.