SlideShare a Scribd company logo
A/B Linux updates with RAUC and meta-
rauc-community: now & in the future
Leon Anavi
Konsulko Group
leon.anavi@konsulko.com
leon@anavi.org
Yocto Project Summit 2021.11
Yocto Project Summit 2021.11, Leon Anavi, RAUC and meta-rauc-community
Konsulko Group
 Services company specializing in Embedded Linux and Open Source Software
 Hardware/software build, design, development, and training services
 Based in San Jose, CA with an engineering presence worldwide
 http://konsulko.com/
Yocto Project Summit 2021.11, Leon Anavi, RAUC and meta-rauc-community
Agenda
 What is RAUC?
 Integrating RAUC on new hardware
 Yocto/OE layer meta-rauc-community
 Examples
 Conclusions
 Q&A
Yocto Project Summit 2021.11, Leon Anavi, RAUC and meta-rauc-community
What is RAUC?
 A lightweight update client that runs on an Embedded Linux device and reliably
controls the procedure of A/B updating the device with a new firmware revision
 Provides tool for the build system to create, inspect and modify update bundles
 Uses X.509 cryptography to sign update bundles
 Compatible with the Yocto Project and OpenEmbedded, PTXdist and Buildroot
 Started by Pengutronix in 2015, adopted by the community and the industry
Yocto Project Summit 2021.11, Leon Anavi, RAUC and meta-rauc-community
How Does RAUC Work?
Yocto Project Summit 2021.11, Leon Anavi, RAUC and meta-rauc-community
RAUC Licenses
 RAUC – LGPLv2.1
https://github.com/rauc/rauc
 meta-rauc - MIT
https://github.com/rauc/meta-rauc
 meta-rauc-community – MIT
https://github.com/rauc/meta-rauc-community
 rauc-hawkbit – LGPLv2.1
https://github.com/rauc/rauc-hawkbit
 rauc-hawkbit-updater – LGPLv2.1
https://github.com/rauc/rauc-hawkbit-updater
Yocto Project Summit 2021.11, Leon Anavi, RAUC and meta-rauc-community
Eclipse hawkBit
 Domain independent back-end framework for rolling out software updates to
constrained edge devices as well as more powerful controllers and gateways
connected to IP based networking infrastructure
 Written in Java
 Available in GitHub under EPL-1.0 License
 Compatible with RAUC and SWUpdate
 https://www.eclipse.org/hawkbit/
Yocto Project Summit 2021.11, Leon Anavi, RAUC and meta-rauc-community
Are there any RAUC open source alternatives?
 Mender
 SWUpdate
 Swupd
 UpdateHub
 Balena
 Snap
 OSTree
 Aktualizr
 Aktualizr-lite
 QtOTA
 Torizon
 FullMetalUpdate
 Rpm-ostree (used in Project Atomic)
Yocto Project Summit 2021.11, Leon Anavi, RAUC and meta-rauc-community
Common Embedded Linux Update Strategies
 A/B updates with dual redundant scheme (for example: RAUC)
 Delta updates
 Container-based updates
 Combined strategies
Yocto Project Summit 2021.11, Leon Anavi, RAUC and meta-rauc-community
Combined Update Strategies
 Container technology has changed the way application developers interact with the
cloud and some of the good practices are nowadays applied to the development
workflow for embedded devices and IoT
 Containers make applications faster to deploy, easier to update and more secure
through isolation
 Yocto/OE layer meta-virtualization provides support for building Xen, KVM, Libvirt,
docker and associated packages necessary for constructing OE-based virtualized
solutions
 There are use cases on powerful embedded devices where containers are
combined with RAUC A/B updates of the base Linux distribution built with Yocto/OE
Yocto Project Summit 2021.11, Leon Anavi, RAUC and meta-rauc-community
 Yocto/OpenEmbedded Layers for RAUC
 meta-rauc
Layer for RAUC, the embedded Linux update framework
 meta-rauc-community
Layer with examples for integration of RAUC, the embedded Linux A/B update
framework
Yocto Project Summit 2021.11, Leon Anavi, RAUC and meta-rauc-community
meta-rauc
 Yocto/OpenEmbedded meta layer for RAUC
 Supports releases Honister, Gatesgarth, Dunfell, Zeus, Warrior, Thud, Sumo,
Morty, Pyro and Krogoth
 Available under MIT license in GitHub: https://github.com/rauc/meta-rauc
 33 contributors, the RAUC co-maintainer Enrico Jörns from Pengutronix is the
leading contributor
Yocto Project Summit 2021.11, Leon Anavi, RAUC and meta-rauc-community
meta-rauc-community
Yocto/OpenEmbedded meta layer with demo examples for integration of RAUC,
the embedded Linux A/B update framework:
 meta-rauc-raspberrypi: for Raspberry Pi
 meta-rauc-qemux86: for QEMU (qemux86-64)
 meta-rauc-sunxi: for Allwinner sunxi SoCs
 meta-rauc-tegra: for NVIDIA Jetson platforms, based on L4T
https://github.com/rauc/meta-rauc-community
Yocto Project Summit 2021.11, Leon Anavi, RAUC and meta-rauc-community
Contributors
 meta-rauc-community started in 2020
 Moved to RAUC GitHub organization in 2021
 5 contributors
Yocto Project Summit 2021.11, Leon Anavi, RAUC and meta-rauc-community
Notable Contributions
Yocto Project Summit 2021.11, Leon Anavi, RAUC and meta-rauc-community
RAUC Integration Steps
 Select an appropriate bootloader
 Enable SquashFS in the Linux kernel configurations
 ext4 root file system (RAUC does not have an ext2 / ext3 file type)
 Create specific partitions that match the RAUC slots
 Configure Bootloader environment and create a script to switch RAUC slots
 Create a certificate and a keyring to RAUC’s system.conf
Yocto Project Summit 2021.11, Leon Anavi, RAUC and meta-rauc-community
RAUC Example with Raspberry Pi 4
 Download Poky, meta-openembedded and meta-raspberrypi:
git clone -b dunfell git://git.yoctoproject.org/poky poky-rpi-rauc
cd poky-rpi-rauc
git clone -b dunfell git://git.openembedded.org/meta-openembedded
git clone -b dunfell git://git.yoctoproject.org/meta-raspberrypi
 Download RAUC related layers:
git clone -b dunfell https://github.com/rauc/meta-rauc.git
git clone -b dunfell https://github.com/rauc/meta-rauc-community.git
 Initialize the build environment:
source oe-init-build-env
Yocto Project Summit 2021.11, Leon Anavi, RAUC and meta-rauc-community
RAUC Example with Raspberry Pi 4
 Add layers:
bitbake-layers add-layer ../meta-openembedded/meta-oe/
bitbake-layers add-layer ../meta-openembedded/meta-python/
bitbake-layers add-layer ../meta-openembedded/meta-networking/
bitbake-layers add-layer ../meta-openembedded/meta-multimedia/
bitbake-layers add-layer ../meta-raspberrypi/
bitbake-layers add-layer ../meta-rauc
bitbake-layers add-layer ../meta-rauc-community/meta-rauc-raspberrypi/
Yocto Project Summit 2021.11, Leon Anavi, RAUC and meta-rauc-community
RAUC Example with Raspberry Pi 4
 Add to local.conf:
MACHINE = "raspberrypi4"
DISTRO_FEATURES_append = " systemd"
VIRTUAL-RUNTIME_init_manager = "systemd"
DISTRO_FEATURES_BACKFILL_CONSIDERED = "sysvinit"
VIRTUAL-RUNTIME_initscripts = ""
IMAGE_INSTALL_append = " rauc"
IMAGE_FSTYPES="tar.bz2 ext4 wic.bz2 wic.bmap"
SDIMG_ROOTFS_TYPE="ext4"
ENABLE_UART = "1"
RPI_USE_U_BOOT = "1"
PREFERRED_PROVIDER_virtual/bootloader = "u-boot"
WKS_FILE = "sdimage-dual-raspberrypi.wks.in"
Yocto Project Summit 2021.11, Leon Anavi, RAUC and meta-rauc-community
RAUC Example with Raspberry Pi 4
 Build a minimal bootable image:
bitbake core-image-minimal
 Flash the image to a microSD card and boot it on Raspberry Pi 4:
sudo umount /dev/sdX*
bzcat tmp/deploy/images/raspberrypi4/core-image-minimal-raspberrypi4.wic.bz2 | sudo dd of=/dev/sdX
sync
 Attach USB to UART debug cable to Raspberry Pi 4, plug Ethernet cable and the microSD card.
Turn on Raspberry Pi 4. Verify that the system boots successfully.
Yocto Project Summit 2021.11, Leon Anavi, RAUC and meta-rauc-community
RAUC Update Bundle
 Add to conf/local.conf:
IMAGE_INSTALL_append = " nano"
 Build a RAUC bundle:
bitbake update-bundle
Yocto Project Summit 2021.11, Leon Anavi, RAUC and meta-rauc-community
Manual RAUC Update of Raspberry Pi 4
 On the build system:
cd tmp/deploy/images/raspberrypi4/
python3 -m http.server
 On the embedded device, in this case Raspberry Pi 4:
wget http://example.com:8000/update-bundle-raspberrypi4.raucb -P /tmp
rauc install /tmp/update-bundle-raspberrypi4.raucb
reboot
Yocto Project Summit 2021.11, Leon Anavi, RAUC and meta-rauc-community
Check RAUC Status After Update
Yocto Project Summit 2021.11, Leon Anavi, RAUC and meta-rauc-community
U-Boot Environment for RAUC
RAUC relies on the following U-Boot environment variables:
 BOOT_ORDER - a space-separated list of boot targets in the order they should be
tried
 BOOT_<bootname>_LEFT - contains the number of remaining boot attempts to
perform for the respective slot
 For details:
https://rauc.readthedocs.io/en/latest/integration.html#set-up-u-boot-environment-for-rauc
Yocto Project Summit 2021.11, Leon Anavi, RAUC and meta-rauc-community
boot.cmd.in for RAUC & Raspberry Pi
fdt addr ${fdt_addr} && fdt get value bootargs /chosen bootargs
test -n "${BOOT_ORDER}" || setenv BOOT_ORDER "A B"
test -n "${BOOT_A_LEFT}" || setenv BOOT_A_LEFT 3
test -n "${BOOT_B_LEFT}" || setenv BOOT_B_LEFT 3
test -n "${BOOT_DEV}" || setenv BOOT_DEV "mmc 0:1"
setenv bootpart
setenv raucslot
for BOOT_SLOT in "${BOOT_ORDER}"; do
if test "x${bootpart}" != "x"; then
# skip remaining slots
elif test "x${BOOT_SLOT}" = "xA"; then
if test ${BOOT_A_LEFT} -gt 0; then
setexpr BOOT_A_LEFT ${BOOT_A_LEFT} – 1
echo "Found valid RAUC slot A"
setenv bootpart "/dev/mmcblk0p2"
setenv raucslot "A"
setenv BOOT_DEV "mmc 0:2"
fi
elif test "x${BOOT_SLOT}" = "xB"; then
if test ${BOOT_B_LEFT} -gt 0; then
setexpr BOOT_B_LEFT ${BOOT_B_LEFT} – 1
echo "Found valid RAUC slot B"
setenv bootpart "/dev/mmcblk0p3"
setenv raucslot "B"
setenv BOOT_DEV "mmc 0:3"
fi
fi
done
if test -n "${bootpart}"; then
setenv bootargs "${bootargs} root=${bootpart} rauc.slot=${raucslot}"
saveenv
else
echo "No valid RAUC slot found. Resetting tries to 3"
setenv BOOT_A_LEFT 3
setenv BOOT_B_LEFT 3
saveenv
reset
fi
fatload mmc 0:1 ${kernel_addr_r} @@KERNEL_IMAGETYPE@@
if test ! -e mmc 0:1 uboot.env; then saveenv; fi;
@@KERNEL_BOOTCMD@@ ${kernel_addr_r} - ${fdt_addr}
Yocto Project Summit 2021.11, Leon Anavi, RAUC and meta-rauc-community
Generate RAUC Certificate
Use script openssl-ca.sh from meta-rauc to to create a certificate and a key:
 The target RAUC package must use the generated keyring file
 RAUC bundle recipe must use the generated key and certificate
 For details:
https://github.com/rauc/meta-rauc/blob/master/scripts/README
Yocto Project Summit 2021.11, Leon Anavi, RAUC and meta-rauc-community
RAUC Bundle Generator update-bundle.bb
DESCRIPTION = "RAUC bundle generator"
inherit bundle
RAUC_BUNDLE_COMPATIBLE = "RaspberryPi4"
RAUC_BUNDLE_VERSION = "v20200703"
RAUC_BUNDLE_DESCRIPTION = "RAUC Demo Bundle"
RAUC_BUNDLE_SLOTS = "rootfs"
RAUC_SLOT_rootfs = "core-image-minimal"
RAUC_SLOT_rootfs[fstype] = "ext4"
RAUC_KEY_FILE = "${THISDIR}/files/development-1.key.pem"
RAUC_CERT_FILE = "${THISDIR}/files/development-1.cert.pem"
Yocto Project Summit 2021.11, Leon Anavi, RAUC and meta-rauc-community
The New Kid on the Block: NVIDIA Jetson TX2
 An example RAUC integration has been added for NVIDIA Jetson TX2:
https://github.com/rauc/meta-rauc-community/tree/master/meta-rauc-tegra
 Based on Yocto/OE BSP meta-tegra: https://github.com/OE4T/meta-tegra
 Boot flow: Cboot > U-Boot > Kernel
 Patched include/configs/p2771-0000.h through u-boot-tegra to enable RAUC
Yocto Project Summit 2021.11, Leon Anavi, RAUC and meta-rauc-community
RAUC on NVIDIA Jetson TX2
 For the demo the U-Boot env is saved to MMC
beware of conflicts for atomic bootloader updates
Yocto Project Summit 2021.11, Leon Anavi, RAUC and meta-rauc-community
SquashFS & Loopback Device Support
 To install RAUC bundles the kernel used on the embedded device must support
both loop block devices and the SquashFS file system
 For example in linux-tegra_%.bbappend with a kernel configuration fragment:
FILESEXTRAPATHS:prepend := "${THISDIR}/files:"
SRC_URI += "file://rauc.cfg"
CONFIG_MD=y
CONFIG_BLK_DEV_DM=y
CONFIG_BLK_DEV_LOOP=y
CONFIG_DM_VERITY=y
CONFIG_SQUASHFS=y
CONFIG_CRYPTO_SHA256=y
CONFIG_SQUASHFS_FILE_DIRECT=y
SQUASHFS_DECOMP_MULTI=y
CONFIG_SQUASHFS_ZLIB=y
CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3
Yocto Project Summit 2021.11, Leon Anavi, RAUC and meta-rauc-community
Conclusions
 RAUC is a secure, reliable, free and open source framework for A/B software
updates of embedded Linux devices
 meta-rauc-community is the Yocto/OpenEmbedded layer providing RAUC
example integration on popular embedded devices
 As of the moment meta-rauc-community provides examples for Raspberry Pi,
QEMU x86-64, Allwinner (SunXi) and NVIDIA Jetson Tegra TX2
 More contributors wanted to extend the examples on more embedded devices
Yocto Project Summit 2021.11, Leon Anavi, RAUC and meta-rauc-community
Thank You!
Useful links
 Software Updates with RAUC, the Yocto Project and OpenEmbedded,
Leon Anavi Yocto Project Summit 2020
https://pretalx.com/yocto-project-summit-2020/talk/JJYPH3/
 Getting Started with RAUC on Raspberry Pi, an article at konsulko.com
https://www.konsulko.com/getting-started-with-rauc-on-raspberry-pi-2/
 Behind the Scenes of an Update Framework: RAUC, Enrico Jörns, ELCE 2019
https://www.youtube.com/watch?v=ZkumnNsWczM
 Embedded Recipes 2019 - Remote update adventures with RAUC, Yocto and
Barebox
https://www.youtube.com/watch?v=hS3Fjf7fuHM
 Secure and Safe Updates for Your Embedded Device, Enrico Jörns, FOSDEM
2017
https://archive.fosdem.org/2017/schedule/event/secure_safe_embedded_updates/

More Related Content

What's hot

A History of Linux
A History of LinuxA History of Linux
A History of Linux
Damian T. Gordon
 
Secure Boot on ARM systems – Building a complete Chain of Trust upon existing...
Secure Boot on ARM systems – Building a complete Chain of Trust upon existing...Secure Boot on ARM systems – Building a complete Chain of Trust upon existing...
Secure Boot on ARM systems – Building a complete Chain of Trust upon existing...
Linaro
 
Device Tree Overlay implementation on AOSP 9.0
Device Tree Overlay implementation on AOSP 9.0Device Tree Overlay implementation on AOSP 9.0
Device Tree Overlay implementation on AOSP 9.0
Cheng Wig
 
Linux Device Tree
Linux Device TreeLinux Device Tree
Linux Device Tree
艾鍗科技
 
An Introduction to Linux
An Introduction to LinuxAn Introduction to Linux
An Introduction to Linux
anandvaidya
 
Linux Internals - Part II
Linux Internals - Part IILinux Internals - Part II
Linux Internals - Part II
Emertxe Information Technologies Pvt Ltd
 
Linux
LinuxLinux
Static Partitioning with Xen, LinuxRT, and Zephyr: A Concrete End-to-end Exam...
Static Partitioning with Xen, LinuxRT, and Zephyr: A Concrete End-to-end Exam...Static Partitioning with Xen, LinuxRT, and Zephyr: A Concrete End-to-end Exam...
Static Partitioning with Xen, LinuxRT, and Zephyr: A Concrete End-to-end Exam...
Stefano Stabellini
 
L4 Microkernel :: Design Overview
L4 Microkernel :: Design OverviewL4 Microkernel :: Design Overview
L4 Microkernel :: Design Overview
National Cheng Kung University
 
XPDDS18: Real Time in XEN on ARM - Andrii Anisov, EPAM Systems Inc.
XPDDS18: Real Time in XEN on ARM - Andrii Anisov, EPAM Systems Inc.XPDDS18: Real Time in XEN on ARM - Andrii Anisov, EPAM Systems Inc.
XPDDS18: Real Time in XEN on ARM - Andrii Anisov, EPAM Systems Inc.
The Linux Foundation
 
Chips alliance omni xtend overview
Chips alliance omni xtend overviewChips alliance omni xtend overview
Chips alliance omni xtend overview
RISC-V International
 
Linux ppt
Linux pptLinux ppt
Linux ppt
lincy21
 
Implementation &amp; Comparison Of Rdma Over Ethernet
Implementation &amp; Comparison Of Rdma Over EthernetImplementation &amp; Comparison Of Rdma Over Ethernet
Implementation &amp; Comparison Of Rdma Over Ethernet
James Wernicke
 
Introduction to Ubuntu
Introduction to UbuntuIntroduction to Ubuntu
Introduction to Ubuntu
Khairul Aizat Kamarudzzaman
 
The Yocto Project
The Yocto ProjectThe Yocto Project
The Yocto Project
rossburton
 
Linux
LinuxLinux
Linux
dwarfyray
 
Making a Headless Android Device
Making a Headless Android DeviceMaking a Headless Android Device
Making a Headless Android Device
Patricia Aas
 
Android graphic system (SurfaceFlinger) : Design Pattern's perspective
Android graphic system (SurfaceFlinger) : Design Pattern's perspectiveAndroid graphic system (SurfaceFlinger) : Design Pattern's perspective
Android graphic system (SurfaceFlinger) : Design Pattern's perspective
Bin Chen
 
Mises à jour logicielles en environnement Linux Embarqué, petit guide et tour...
Mises à jour logicielles en environnement Linux Embarqué, petit guide et tour...Mises à jour logicielles en environnement Linux Embarqué, petit guide et tour...
Mises à jour logicielles en environnement Linux Embarqué, petit guide et tour...
Pierre-jean Texier
 
Linux kernel
Linux kernelLinux kernel
Linux kernel
Goutam Sahoo
 

What's hot (20)

A History of Linux
A History of LinuxA History of Linux
A History of Linux
 
Secure Boot on ARM systems – Building a complete Chain of Trust upon existing...
Secure Boot on ARM systems – Building a complete Chain of Trust upon existing...Secure Boot on ARM systems – Building a complete Chain of Trust upon existing...
Secure Boot on ARM systems – Building a complete Chain of Trust upon existing...
 
Device Tree Overlay implementation on AOSP 9.0
Device Tree Overlay implementation on AOSP 9.0Device Tree Overlay implementation on AOSP 9.0
Device Tree Overlay implementation on AOSP 9.0
 
Linux Device Tree
Linux Device TreeLinux Device Tree
Linux Device Tree
 
An Introduction to Linux
An Introduction to LinuxAn Introduction to Linux
An Introduction to Linux
 
Linux Internals - Part II
Linux Internals - Part IILinux Internals - Part II
Linux Internals - Part II
 
Linux
LinuxLinux
Linux
 
Static Partitioning with Xen, LinuxRT, and Zephyr: A Concrete End-to-end Exam...
Static Partitioning with Xen, LinuxRT, and Zephyr: A Concrete End-to-end Exam...Static Partitioning with Xen, LinuxRT, and Zephyr: A Concrete End-to-end Exam...
Static Partitioning with Xen, LinuxRT, and Zephyr: A Concrete End-to-end Exam...
 
L4 Microkernel :: Design Overview
L4 Microkernel :: Design OverviewL4 Microkernel :: Design Overview
L4 Microkernel :: Design Overview
 
XPDDS18: Real Time in XEN on ARM - Andrii Anisov, EPAM Systems Inc.
XPDDS18: Real Time in XEN on ARM - Andrii Anisov, EPAM Systems Inc.XPDDS18: Real Time in XEN on ARM - Andrii Anisov, EPAM Systems Inc.
XPDDS18: Real Time in XEN on ARM - Andrii Anisov, EPAM Systems Inc.
 
Chips alliance omni xtend overview
Chips alliance omni xtend overviewChips alliance omni xtend overview
Chips alliance omni xtend overview
 
Linux ppt
Linux pptLinux ppt
Linux ppt
 
Implementation &amp; Comparison Of Rdma Over Ethernet
Implementation &amp; Comparison Of Rdma Over EthernetImplementation &amp; Comparison Of Rdma Over Ethernet
Implementation &amp; Comparison Of Rdma Over Ethernet
 
Introduction to Ubuntu
Introduction to UbuntuIntroduction to Ubuntu
Introduction to Ubuntu
 
The Yocto Project
The Yocto ProjectThe Yocto Project
The Yocto Project
 
Linux
LinuxLinux
Linux
 
Making a Headless Android Device
Making a Headless Android DeviceMaking a Headless Android Device
Making a Headless Android Device
 
Android graphic system (SurfaceFlinger) : Design Pattern's perspective
Android graphic system (SurfaceFlinger) : Design Pattern's perspectiveAndroid graphic system (SurfaceFlinger) : Design Pattern's perspective
Android graphic system (SurfaceFlinger) : Design Pattern's perspective
 
Mises à jour logicielles en environnement Linux Embarqué, petit guide et tour...
Mises à jour logicielles en environnement Linux Embarqué, petit guide et tour...Mises à jour logicielles en environnement Linux Embarqué, petit guide et tour...
Mises à jour logicielles en environnement Linux Embarqué, petit guide et tour...
 
Linux kernel
Linux kernelLinux kernel
Linux kernel
 

Similar to A/B Linux updates with RAUC and meta-rauc-community: now & in the future

Integrating VNC in Weston with the Yocto Project and OpenEmbedded
Integrating VNC in Weston with the Yocto Project and OpenEmbeddedIntegrating VNC in Weston with the Yocto Project and OpenEmbedded
Integrating VNC in Weston with the Yocto Project and OpenEmbedded
Leon Anavi
 
Kubernetes_Webinar_Slide_Deck.pdf
Kubernetes_Webinar_Slide_Deck.pdfKubernetes_Webinar_Slide_Deck.pdf
Kubernetes_Webinar_Slide_Deck.pdf
AuliaFebrian2
 
Os Grossupdated
Os GrossupdatedOs Grossupdated
Os Grossupdatedoscon2007
 
Moby Open Source Summit North America 2017
Moby Open Source Summit North America 2017Moby Open Source Summit North America 2017
Moby Open Source Summit North America 2017
Patrick Chanezon
 
Kubernetes Introduction
Kubernetes IntroductionKubernetes Introduction
Kubernetes Introduction
Red Hat Developers
 
Automotive Grade Linux on Raspberry Pi: How Does It Work?
Automotive Grade Linux on Raspberry Pi: How Does It Work?Automotive Grade Linux on Raspberry Pi: How Does It Work?
Automotive Grade Linux on Raspberry Pi: How Does It Work?
Leon Anavi
 
Software Composition Analysis in PHP
Software Composition Analysis in PHP Software Composition Analysis in PHP
Software Composition Analysis in PHP
Piotr Horzycki
 
Red Hat Forum Benelux 2015
Red Hat Forum Benelux 2015Red Hat Forum Benelux 2015
Red Hat Forum Benelux 2015
Microsoft
 
Igalia Focus and Goals 2020 (2019 WebKit Contributors Meeting)
Igalia Focus and Goals 2020 (2019 WebKit Contributors Meeting)Igalia Focus and Goals 2020 (2019 WebKit Contributors Meeting)
Igalia Focus and Goals 2020 (2019 WebKit Contributors Meeting)
Igalia
 
Kubernetes for Java Developers
 Kubernetes for Java Developers Kubernetes for Java Developers
Kubernetes for Java Developers
Red Hat Developers
 
JavaOne 2016: Kubernetes introduction for Java Developers
JavaOne 2016: Kubernetes introduction for Java Developers JavaOne 2016: Kubernetes introduction for Java Developers
JavaOne 2016: Kubernetes introduction for Java Developers
Rafael Benevides
 
Screen Sharing on Raspberry Pi 5 Using VNC in Weston and Wayland with the Yoc...
Screen Sharing on Raspberry Pi 5 Using VNC in Weston and Wayland with the Yoc...Screen Sharing on Raspberry Pi 5 Using VNC in Weston and Wayland with the Yoc...
Screen Sharing on Raspberry Pi 5 Using VNC in Weston and Wayland with the Yoc...
Leon Anavi
 
Software, Over the Air (SOTA) for Automotive Grade Linux (AGL)
Software, Over the Air (SOTA) for Automotive Grade Linux (AGL)Software, Over the Air (SOTA) for Automotive Grade Linux (AGL)
Software, Over the Air (SOTA) for Automotive Grade Linux (AGL)
Leon Anavi
 
TDC2018FLN | Trilha Containers - Kubernetes para usuarios Docker.
TDC2018FLN | Trilha Containers - Kubernetes para usuarios Docker.TDC2018FLN | Trilha Containers - Kubernetes para usuarios Docker.
TDC2018FLN | Trilha Containers - Kubernetes para usuarios Docker.
tdc-globalcode
 
Open stack nova reverse engineer
Open stack nova reverse engineerOpen stack nova reverse engineer
Open stack nova reverse engineer
Vietnam Open Infrastructure User Group
 
Reactive Microservices with Spring 5: WebFlux
Reactive Microservices with Spring 5: WebFlux Reactive Microservices with Spring 5: WebFlux
Reactive Microservices with Spring 5: WebFlux
Trayan Iliev
 
What should you know about Net Core?
What should you know about Net Core?What should you know about Net Core?
What should you know about Net Core?
Damir Dobric
 
Docker network Present in VietNam DockerDay 2015
Docker network Present in VietNam DockerDay 2015Docker network Present in VietNam DockerDay 2015
Docker network Present in VietNam DockerDay 2015
Van Phuc
 
Run Qt on Linux embedded systems using Yocto
Run Qt on Linux embedded systems using YoctoRun Qt on Linux embedded systems using Yocto
Run Qt on Linux embedded systems using Yocto
Marco Cavallini
 
DockerとKubernetesをかけめぐる
DockerとKubernetesをかけめぐるDockerとKubernetesをかけめぐる
DockerとKubernetesをかけめぐる
Kohei Tokunaga
 

Similar to A/B Linux updates with RAUC and meta-rauc-community: now & in the future (20)

Integrating VNC in Weston with the Yocto Project and OpenEmbedded
Integrating VNC in Weston with the Yocto Project and OpenEmbeddedIntegrating VNC in Weston with the Yocto Project and OpenEmbedded
Integrating VNC in Weston with the Yocto Project and OpenEmbedded
 
Kubernetes_Webinar_Slide_Deck.pdf
Kubernetes_Webinar_Slide_Deck.pdfKubernetes_Webinar_Slide_Deck.pdf
Kubernetes_Webinar_Slide_Deck.pdf
 
Os Grossupdated
Os GrossupdatedOs Grossupdated
Os Grossupdated
 
Moby Open Source Summit North America 2017
Moby Open Source Summit North America 2017Moby Open Source Summit North America 2017
Moby Open Source Summit North America 2017
 
Kubernetes Introduction
Kubernetes IntroductionKubernetes Introduction
Kubernetes Introduction
 
Automotive Grade Linux on Raspberry Pi: How Does It Work?
Automotive Grade Linux on Raspberry Pi: How Does It Work?Automotive Grade Linux on Raspberry Pi: How Does It Work?
Automotive Grade Linux on Raspberry Pi: How Does It Work?
 
Software Composition Analysis in PHP
Software Composition Analysis in PHP Software Composition Analysis in PHP
Software Composition Analysis in PHP
 
Red Hat Forum Benelux 2015
Red Hat Forum Benelux 2015Red Hat Forum Benelux 2015
Red Hat Forum Benelux 2015
 
Igalia Focus and Goals 2020 (2019 WebKit Contributors Meeting)
Igalia Focus and Goals 2020 (2019 WebKit Contributors Meeting)Igalia Focus and Goals 2020 (2019 WebKit Contributors Meeting)
Igalia Focus and Goals 2020 (2019 WebKit Contributors Meeting)
 
Kubernetes for Java Developers
 Kubernetes for Java Developers Kubernetes for Java Developers
Kubernetes for Java Developers
 
JavaOne 2016: Kubernetes introduction for Java Developers
JavaOne 2016: Kubernetes introduction for Java Developers JavaOne 2016: Kubernetes introduction for Java Developers
JavaOne 2016: Kubernetes introduction for Java Developers
 
Screen Sharing on Raspberry Pi 5 Using VNC in Weston and Wayland with the Yoc...
Screen Sharing on Raspberry Pi 5 Using VNC in Weston and Wayland with the Yoc...Screen Sharing on Raspberry Pi 5 Using VNC in Weston and Wayland with the Yoc...
Screen Sharing on Raspberry Pi 5 Using VNC in Weston and Wayland with the Yoc...
 
Software, Over the Air (SOTA) for Automotive Grade Linux (AGL)
Software, Over the Air (SOTA) for Automotive Grade Linux (AGL)Software, Over the Air (SOTA) for Automotive Grade Linux (AGL)
Software, Over the Air (SOTA) for Automotive Grade Linux (AGL)
 
TDC2018FLN | Trilha Containers - Kubernetes para usuarios Docker.
TDC2018FLN | Trilha Containers - Kubernetes para usuarios Docker.TDC2018FLN | Trilha Containers - Kubernetes para usuarios Docker.
TDC2018FLN | Trilha Containers - Kubernetes para usuarios Docker.
 
Open stack nova reverse engineer
Open stack nova reverse engineerOpen stack nova reverse engineer
Open stack nova reverse engineer
 
Reactive Microservices with Spring 5: WebFlux
Reactive Microservices with Spring 5: WebFlux Reactive Microservices with Spring 5: WebFlux
Reactive Microservices with Spring 5: WebFlux
 
What should you know about Net Core?
What should you know about Net Core?What should you know about Net Core?
What should you know about Net Core?
 
Docker network Present in VietNam DockerDay 2015
Docker network Present in VietNam DockerDay 2015Docker network Present in VietNam DockerDay 2015
Docker network Present in VietNam DockerDay 2015
 
Run Qt on Linux embedded systems using Yocto
Run Qt on Linux embedded systems using YoctoRun Qt on Linux embedded systems using Yocto
Run Qt on Linux embedded systems using Yocto
 
DockerとKubernetesをかけめぐる
DockerとKubernetesをかけめぐるDockerとKubernetesをかけめぐる
DockerとKubernetesをかけめぐる
 

More from Leon Anavi

Как да играем компютърни игри с Nintendo Wii Nunchuk чрез Raspberry Pi RP2040...
Как да играем компютърни игри с Nintendo Wii Nunchuk чрез Raspberry Pi RP2040...Как да играем компютърни игри с Nintendo Wii Nunchuk чрез Raspberry Pi RP2040...
Как да играем компютърни игри с Nintendo Wii Nunchuk чрез Raspberry Pi RP2040...
Leon Anavi
 
Как да убием и последната дискета с Open Source технологии?
Как да убием и последната дискета с Open Source технологии?Как да убием и последната дискета с Open Source технологии?
Как да убием и последната дискета с Open Source технологии?
Leon Anavi
 
Linux обновления с RAUC и Docker
Linux обновления с RAUC и DockerLinux обновления с RAUC и Docker
Linux обновления с RAUC и Docker
Leon Anavi
 
Open Hardware Makers
Open Hardware MakersOpen Hardware Makers
Open Hardware Makers
Leon Anavi
 
Open Source Tools for Making Open Source Hardware
Open Source Tools for Making Open Source HardwareOpen Source Tools for Making Open Source Hardware
Open Source Tools for Making Open Source Hardware
Leon Anavi
 
Surfing on an Interactive Kiosk
Surfing on an Interactive KioskSurfing on an Interactive Kiosk
Surfing on an Interactive Kiosk
Leon Anavi
 
Linux дистрибуции и софтуерни обновления за вградени устройства
Linux дистрибуции и софтуерни обновления за вградени устройства Linux дистрибуции и софтуерни обновления за вградени устройства
Linux дистрибуции и софтуерни обновления за вградени устройства
Leon Anavi
 
Getting started with AGL using a Raspberry Pi
Getting started with AGL using a Raspberry PiGetting started with AGL using a Raspberry Pi
Getting started with AGL using a Raspberry Pi
Leon Anavi
 
Comparison of Open Source Software Home Automation Tools
Comparison of Open Source Software Home Automation ToolsComparison of Open Source Software Home Automation Tools
Comparison of Open Source Software Home Automation Tools
Leon Anavi
 
Практични примери за device tree overlays на Raspberry Pi
Практични примери за device tree overlays на Raspberry PiПрактични примери за device tree overlays на Raspberry Pi
Практични примери за device tree overlays на Raspberry Pi
Leon Anavi
 
The Software Developer’s Guide to Open Source Hardware
The Software Developer’s Guide to Open Source HardwareThe Software Developer’s Guide to Open Source Hardware
The Software Developer’s Guide to Open Source Hardware
Leon Anavi
 
Making Open Source Hardware for Retrogaming on Raspberry Pi
Making Open Source Hardware for Retrogaming on Raspberry PiMaking Open Source Hardware for Retrogaming on Raspberry Pi
Making Open Source Hardware for Retrogaming on Raspberry Pi
Leon Anavi
 
Вграждане на умни гласови асистенти в устройства с Linux
Вграждане на умни гласови асистенти в устройства с LinuxВграждане на умни гласови асистенти в устройства с Linux
Вграждане на умни гласови асистенти в устройства с Linux
Leon Anavi
 
Comparison of Voice Assistant SDKs for Embedded Linux Devices
 Comparison of Voice Assistant SDKs for Embedded Linux Devices Comparison of Voice Assistant SDKs for Embedded Linux Devices
Comparison of Voice Assistant SDKs for Embedded Linux Devices
Leon Anavi
 
Open Source MQTT Brokers
Open Source MQTT BrokersOpen Source MQTT Brokers
Open Source MQTT Brokers
Leon Anavi
 
Въведение в RetroPie за Raspberry Pi
Въведение в RetroPie за Raspberry PiВъведение в RetroPie за Raspberry Pi
Въведение в RetroPie за Raspberry Pi
Leon Anavi
 
Free and Open Source Software Tools for Making Open Source Hardware
 Free and Open Source Software Tools for Making Open Source Hardware Free and Open Source Software Tools for Making Open Source Hardware
Free and Open Source Software Tools for Making Open Source Hardware
Leon Anavi
 
Building a Remote Control Robot with Automotive Grade Linux
Building a Remote Control Robot with Automotive Grade LinuxBuilding a Remote Control Robot with Automotive Grade Linux
Building a Remote Control Robot with Automotive Grade Linux
Leon Anavi
 
Връщане към живота на ретро електроника с Raspberry Pi
Връщане към живота на ретро електроника с Raspberry PiВръщане към живота на ретро електроника с Raspberry Pi
Връщане към живота на ретро електроника с Raspberry Pi
Leon Anavi
 
Open Source Hardware with KiCAD and OSHPark
Open Source Hardware with KiCAD and OSHParkOpen Source Hardware with KiCAD and OSHPark
Open Source Hardware with KiCAD and OSHPark
Leon Anavi
 

More from Leon Anavi (20)

Как да играем компютърни игри с Nintendo Wii Nunchuk чрез Raspberry Pi RP2040...
Как да играем компютърни игри с Nintendo Wii Nunchuk чрез Raspberry Pi RP2040...Как да играем компютърни игри с Nintendo Wii Nunchuk чрез Raspberry Pi RP2040...
Как да играем компютърни игри с Nintendo Wii Nunchuk чрез Raspberry Pi RP2040...
 
Как да убием и последната дискета с Open Source технологии?
Как да убием и последната дискета с Open Source технологии?Как да убием и последната дискета с Open Source технологии?
Как да убием и последната дискета с Open Source технологии?
 
Linux обновления с RAUC и Docker
Linux обновления с RAUC и DockerLinux обновления с RAUC и Docker
Linux обновления с RAUC и Docker
 
Open Hardware Makers
Open Hardware MakersOpen Hardware Makers
Open Hardware Makers
 
Open Source Tools for Making Open Source Hardware
Open Source Tools for Making Open Source HardwareOpen Source Tools for Making Open Source Hardware
Open Source Tools for Making Open Source Hardware
 
Surfing on an Interactive Kiosk
Surfing on an Interactive KioskSurfing on an Interactive Kiosk
Surfing on an Interactive Kiosk
 
Linux дистрибуции и софтуерни обновления за вградени устройства
Linux дистрибуции и софтуерни обновления за вградени устройства Linux дистрибуции и софтуерни обновления за вградени устройства
Linux дистрибуции и софтуерни обновления за вградени устройства
 
Getting started with AGL using a Raspberry Pi
Getting started with AGL using a Raspberry PiGetting started with AGL using a Raspberry Pi
Getting started with AGL using a Raspberry Pi
 
Comparison of Open Source Software Home Automation Tools
Comparison of Open Source Software Home Automation ToolsComparison of Open Source Software Home Automation Tools
Comparison of Open Source Software Home Automation Tools
 
Практични примери за device tree overlays на Raspberry Pi
Практични примери за device tree overlays на Raspberry PiПрактични примери за device tree overlays на Raspberry Pi
Практични примери за device tree overlays на Raspberry Pi
 
The Software Developer’s Guide to Open Source Hardware
The Software Developer’s Guide to Open Source HardwareThe Software Developer’s Guide to Open Source Hardware
The Software Developer’s Guide to Open Source Hardware
 
Making Open Source Hardware for Retrogaming on Raspberry Pi
Making Open Source Hardware for Retrogaming on Raspberry PiMaking Open Source Hardware for Retrogaming on Raspberry Pi
Making Open Source Hardware for Retrogaming on Raspberry Pi
 
Вграждане на умни гласови асистенти в устройства с Linux
Вграждане на умни гласови асистенти в устройства с LinuxВграждане на умни гласови асистенти в устройства с Linux
Вграждане на умни гласови асистенти в устройства с Linux
 
Comparison of Voice Assistant SDKs for Embedded Linux Devices
 Comparison of Voice Assistant SDKs for Embedded Linux Devices Comparison of Voice Assistant SDKs for Embedded Linux Devices
Comparison of Voice Assistant SDKs for Embedded Linux Devices
 
Open Source MQTT Brokers
Open Source MQTT BrokersOpen Source MQTT Brokers
Open Source MQTT Brokers
 
Въведение в RetroPie за Raspberry Pi
Въведение в RetroPie за Raspberry PiВъведение в RetroPie за Raspberry Pi
Въведение в RetroPie за Raspberry Pi
 
Free and Open Source Software Tools for Making Open Source Hardware
 Free and Open Source Software Tools for Making Open Source Hardware Free and Open Source Software Tools for Making Open Source Hardware
Free and Open Source Software Tools for Making Open Source Hardware
 
Building a Remote Control Robot with Automotive Grade Linux
Building a Remote Control Robot with Automotive Grade LinuxBuilding a Remote Control Robot with Automotive Grade Linux
Building a Remote Control Robot with Automotive Grade Linux
 
Връщане към живота на ретро електроника с Raspberry Pi
Връщане към живота на ретро електроника с Raspberry PiВръщане към живота на ретро електроника с Raspberry Pi
Връщане към живота на ретро електроника с Raspberry Pi
 
Open Source Hardware with KiCAD and OSHPark
Open Source Hardware with KiCAD and OSHParkOpen Source Hardware with KiCAD and OSHPark
Open Source Hardware with KiCAD and OSHPark
 

Recently uploaded

From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
Product School
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
91mobiles
 
"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi
Fwdays
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
Prayukth K V
 
Connector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a buttonConnector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a button
DianaGray10
 
UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3
DianaGray10
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance
 
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
Product School
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdf
Cheryl Hung
 
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualitySoftware Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Inflectra
 
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Product School
 
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Product School
 
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Ramesh Iyer
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
UiPathCommunity
 
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMsTo Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
Paul Groth
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
DanBrown980551
 
Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........
Alison B. Lowndes
 
When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...
Elena Simperl
 
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptxIOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
Abida Shariff
 
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance
 

Recently uploaded (20)

From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
 
"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
 
Connector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a buttonConnector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a button
 
UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
 
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdf
 
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualitySoftware Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
 
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
 
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...
 
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
 
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMsTo Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
 
Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........
 
When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...
 
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptxIOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
 
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
 

A/B Linux updates with RAUC and meta-rauc-community: now & in the future

  • 1. A/B Linux updates with RAUC and meta- rauc-community: now & in the future Leon Anavi Konsulko Group leon.anavi@konsulko.com leon@anavi.org Yocto Project Summit 2021.11
  • 2. Yocto Project Summit 2021.11, Leon Anavi, RAUC and meta-rauc-community Konsulko Group  Services company specializing in Embedded Linux and Open Source Software  Hardware/software build, design, development, and training services  Based in San Jose, CA with an engineering presence worldwide  http://konsulko.com/
  • 3. Yocto Project Summit 2021.11, Leon Anavi, RAUC and meta-rauc-community Agenda  What is RAUC?  Integrating RAUC on new hardware  Yocto/OE layer meta-rauc-community  Examples  Conclusions  Q&A
  • 4. Yocto Project Summit 2021.11, Leon Anavi, RAUC and meta-rauc-community What is RAUC?  A lightweight update client that runs on an Embedded Linux device and reliably controls the procedure of A/B updating the device with a new firmware revision  Provides tool for the build system to create, inspect and modify update bundles  Uses X.509 cryptography to sign update bundles  Compatible with the Yocto Project and OpenEmbedded, PTXdist and Buildroot  Started by Pengutronix in 2015, adopted by the community and the industry
  • 5. Yocto Project Summit 2021.11, Leon Anavi, RAUC and meta-rauc-community How Does RAUC Work?
  • 6. Yocto Project Summit 2021.11, Leon Anavi, RAUC and meta-rauc-community RAUC Licenses  RAUC – LGPLv2.1 https://github.com/rauc/rauc  meta-rauc - MIT https://github.com/rauc/meta-rauc  meta-rauc-community – MIT https://github.com/rauc/meta-rauc-community  rauc-hawkbit – LGPLv2.1 https://github.com/rauc/rauc-hawkbit  rauc-hawkbit-updater – LGPLv2.1 https://github.com/rauc/rauc-hawkbit-updater
  • 7. Yocto Project Summit 2021.11, Leon Anavi, RAUC and meta-rauc-community Eclipse hawkBit  Domain independent back-end framework for rolling out software updates to constrained edge devices as well as more powerful controllers and gateways connected to IP based networking infrastructure  Written in Java  Available in GitHub under EPL-1.0 License  Compatible with RAUC and SWUpdate  https://www.eclipse.org/hawkbit/
  • 8. Yocto Project Summit 2021.11, Leon Anavi, RAUC and meta-rauc-community Are there any RAUC open source alternatives?  Mender  SWUpdate  Swupd  UpdateHub  Balena  Snap  OSTree  Aktualizr  Aktualizr-lite  QtOTA  Torizon  FullMetalUpdate  Rpm-ostree (used in Project Atomic)
  • 9. Yocto Project Summit 2021.11, Leon Anavi, RAUC and meta-rauc-community Common Embedded Linux Update Strategies  A/B updates with dual redundant scheme (for example: RAUC)  Delta updates  Container-based updates  Combined strategies
  • 10. Yocto Project Summit 2021.11, Leon Anavi, RAUC and meta-rauc-community Combined Update Strategies  Container technology has changed the way application developers interact with the cloud and some of the good practices are nowadays applied to the development workflow for embedded devices and IoT  Containers make applications faster to deploy, easier to update and more secure through isolation  Yocto/OE layer meta-virtualization provides support for building Xen, KVM, Libvirt, docker and associated packages necessary for constructing OE-based virtualized solutions  There are use cases on powerful embedded devices where containers are combined with RAUC A/B updates of the base Linux distribution built with Yocto/OE
  • 11. Yocto Project Summit 2021.11, Leon Anavi, RAUC and meta-rauc-community  Yocto/OpenEmbedded Layers for RAUC  meta-rauc Layer for RAUC, the embedded Linux update framework  meta-rauc-community Layer with examples for integration of RAUC, the embedded Linux A/B update framework
  • 12. Yocto Project Summit 2021.11, Leon Anavi, RAUC and meta-rauc-community meta-rauc  Yocto/OpenEmbedded meta layer for RAUC  Supports releases Honister, Gatesgarth, Dunfell, Zeus, Warrior, Thud, Sumo, Morty, Pyro and Krogoth  Available under MIT license in GitHub: https://github.com/rauc/meta-rauc  33 contributors, the RAUC co-maintainer Enrico Jörns from Pengutronix is the leading contributor
  • 13. Yocto Project Summit 2021.11, Leon Anavi, RAUC and meta-rauc-community meta-rauc-community Yocto/OpenEmbedded meta layer with demo examples for integration of RAUC, the embedded Linux A/B update framework:  meta-rauc-raspberrypi: for Raspberry Pi  meta-rauc-qemux86: for QEMU (qemux86-64)  meta-rauc-sunxi: for Allwinner sunxi SoCs  meta-rauc-tegra: for NVIDIA Jetson platforms, based on L4T https://github.com/rauc/meta-rauc-community
  • 14. Yocto Project Summit 2021.11, Leon Anavi, RAUC and meta-rauc-community Contributors  meta-rauc-community started in 2020  Moved to RAUC GitHub organization in 2021  5 contributors
  • 15. Yocto Project Summit 2021.11, Leon Anavi, RAUC and meta-rauc-community Notable Contributions
  • 16. Yocto Project Summit 2021.11, Leon Anavi, RAUC and meta-rauc-community RAUC Integration Steps  Select an appropriate bootloader  Enable SquashFS in the Linux kernel configurations  ext4 root file system (RAUC does not have an ext2 / ext3 file type)  Create specific partitions that match the RAUC slots  Configure Bootloader environment and create a script to switch RAUC slots  Create a certificate and a keyring to RAUC’s system.conf
  • 17. Yocto Project Summit 2021.11, Leon Anavi, RAUC and meta-rauc-community RAUC Example with Raspberry Pi 4  Download Poky, meta-openembedded and meta-raspberrypi: git clone -b dunfell git://git.yoctoproject.org/poky poky-rpi-rauc cd poky-rpi-rauc git clone -b dunfell git://git.openembedded.org/meta-openembedded git clone -b dunfell git://git.yoctoproject.org/meta-raspberrypi  Download RAUC related layers: git clone -b dunfell https://github.com/rauc/meta-rauc.git git clone -b dunfell https://github.com/rauc/meta-rauc-community.git  Initialize the build environment: source oe-init-build-env
  • 18. Yocto Project Summit 2021.11, Leon Anavi, RAUC and meta-rauc-community RAUC Example with Raspberry Pi 4  Add layers: bitbake-layers add-layer ../meta-openembedded/meta-oe/ bitbake-layers add-layer ../meta-openembedded/meta-python/ bitbake-layers add-layer ../meta-openembedded/meta-networking/ bitbake-layers add-layer ../meta-openembedded/meta-multimedia/ bitbake-layers add-layer ../meta-raspberrypi/ bitbake-layers add-layer ../meta-rauc bitbake-layers add-layer ../meta-rauc-community/meta-rauc-raspberrypi/
  • 19. Yocto Project Summit 2021.11, Leon Anavi, RAUC and meta-rauc-community RAUC Example with Raspberry Pi 4  Add to local.conf: MACHINE = "raspberrypi4" DISTRO_FEATURES_append = " systemd" VIRTUAL-RUNTIME_init_manager = "systemd" DISTRO_FEATURES_BACKFILL_CONSIDERED = "sysvinit" VIRTUAL-RUNTIME_initscripts = "" IMAGE_INSTALL_append = " rauc" IMAGE_FSTYPES="tar.bz2 ext4 wic.bz2 wic.bmap" SDIMG_ROOTFS_TYPE="ext4" ENABLE_UART = "1" RPI_USE_U_BOOT = "1" PREFERRED_PROVIDER_virtual/bootloader = "u-boot" WKS_FILE = "sdimage-dual-raspberrypi.wks.in"
  • 20. Yocto Project Summit 2021.11, Leon Anavi, RAUC and meta-rauc-community RAUC Example with Raspberry Pi 4  Build a minimal bootable image: bitbake core-image-minimal  Flash the image to a microSD card and boot it on Raspberry Pi 4: sudo umount /dev/sdX* bzcat tmp/deploy/images/raspberrypi4/core-image-minimal-raspberrypi4.wic.bz2 | sudo dd of=/dev/sdX sync  Attach USB to UART debug cable to Raspberry Pi 4, plug Ethernet cable and the microSD card. Turn on Raspberry Pi 4. Verify that the system boots successfully.
  • 21. Yocto Project Summit 2021.11, Leon Anavi, RAUC and meta-rauc-community RAUC Update Bundle  Add to conf/local.conf: IMAGE_INSTALL_append = " nano"  Build a RAUC bundle: bitbake update-bundle
  • 22. Yocto Project Summit 2021.11, Leon Anavi, RAUC and meta-rauc-community Manual RAUC Update of Raspberry Pi 4  On the build system: cd tmp/deploy/images/raspberrypi4/ python3 -m http.server  On the embedded device, in this case Raspberry Pi 4: wget http://example.com:8000/update-bundle-raspberrypi4.raucb -P /tmp rauc install /tmp/update-bundle-raspberrypi4.raucb reboot
  • 23. Yocto Project Summit 2021.11, Leon Anavi, RAUC and meta-rauc-community Check RAUC Status After Update
  • 24. Yocto Project Summit 2021.11, Leon Anavi, RAUC and meta-rauc-community U-Boot Environment for RAUC RAUC relies on the following U-Boot environment variables:  BOOT_ORDER - a space-separated list of boot targets in the order they should be tried  BOOT_<bootname>_LEFT - contains the number of remaining boot attempts to perform for the respective slot  For details: https://rauc.readthedocs.io/en/latest/integration.html#set-up-u-boot-environment-for-rauc
  • 25. Yocto Project Summit 2021.11, Leon Anavi, RAUC and meta-rauc-community boot.cmd.in for RAUC & Raspberry Pi fdt addr ${fdt_addr} && fdt get value bootargs /chosen bootargs test -n "${BOOT_ORDER}" || setenv BOOT_ORDER "A B" test -n "${BOOT_A_LEFT}" || setenv BOOT_A_LEFT 3 test -n "${BOOT_B_LEFT}" || setenv BOOT_B_LEFT 3 test -n "${BOOT_DEV}" || setenv BOOT_DEV "mmc 0:1" setenv bootpart setenv raucslot for BOOT_SLOT in "${BOOT_ORDER}"; do if test "x${bootpart}" != "x"; then # skip remaining slots elif test "x${BOOT_SLOT}" = "xA"; then if test ${BOOT_A_LEFT} -gt 0; then setexpr BOOT_A_LEFT ${BOOT_A_LEFT} – 1 echo "Found valid RAUC slot A" setenv bootpart "/dev/mmcblk0p2" setenv raucslot "A" setenv BOOT_DEV "mmc 0:2" fi elif test "x${BOOT_SLOT}" = "xB"; then if test ${BOOT_B_LEFT} -gt 0; then setexpr BOOT_B_LEFT ${BOOT_B_LEFT} – 1 echo "Found valid RAUC slot B" setenv bootpart "/dev/mmcblk0p3" setenv raucslot "B" setenv BOOT_DEV "mmc 0:3" fi fi done if test -n "${bootpart}"; then setenv bootargs "${bootargs} root=${bootpart} rauc.slot=${raucslot}" saveenv else echo "No valid RAUC slot found. Resetting tries to 3" setenv BOOT_A_LEFT 3 setenv BOOT_B_LEFT 3 saveenv reset fi fatload mmc 0:1 ${kernel_addr_r} @@KERNEL_IMAGETYPE@@ if test ! -e mmc 0:1 uboot.env; then saveenv; fi; @@KERNEL_BOOTCMD@@ ${kernel_addr_r} - ${fdt_addr}
  • 26. Yocto Project Summit 2021.11, Leon Anavi, RAUC and meta-rauc-community Generate RAUC Certificate Use script openssl-ca.sh from meta-rauc to to create a certificate and a key:  The target RAUC package must use the generated keyring file  RAUC bundle recipe must use the generated key and certificate  For details: https://github.com/rauc/meta-rauc/blob/master/scripts/README
  • 27. Yocto Project Summit 2021.11, Leon Anavi, RAUC and meta-rauc-community RAUC Bundle Generator update-bundle.bb DESCRIPTION = "RAUC bundle generator" inherit bundle RAUC_BUNDLE_COMPATIBLE = "RaspberryPi4" RAUC_BUNDLE_VERSION = "v20200703" RAUC_BUNDLE_DESCRIPTION = "RAUC Demo Bundle" RAUC_BUNDLE_SLOTS = "rootfs" RAUC_SLOT_rootfs = "core-image-minimal" RAUC_SLOT_rootfs[fstype] = "ext4" RAUC_KEY_FILE = "${THISDIR}/files/development-1.key.pem" RAUC_CERT_FILE = "${THISDIR}/files/development-1.cert.pem"
  • 28. Yocto Project Summit 2021.11, Leon Anavi, RAUC and meta-rauc-community The New Kid on the Block: NVIDIA Jetson TX2  An example RAUC integration has been added for NVIDIA Jetson TX2: https://github.com/rauc/meta-rauc-community/tree/master/meta-rauc-tegra  Based on Yocto/OE BSP meta-tegra: https://github.com/OE4T/meta-tegra  Boot flow: Cboot > U-Boot > Kernel  Patched include/configs/p2771-0000.h through u-boot-tegra to enable RAUC
  • 29. Yocto Project Summit 2021.11, Leon Anavi, RAUC and meta-rauc-community RAUC on NVIDIA Jetson TX2  For the demo the U-Boot env is saved to MMC beware of conflicts for atomic bootloader updates
  • 30. Yocto Project Summit 2021.11, Leon Anavi, RAUC and meta-rauc-community SquashFS & Loopback Device Support  To install RAUC bundles the kernel used on the embedded device must support both loop block devices and the SquashFS file system  For example in linux-tegra_%.bbappend with a kernel configuration fragment: FILESEXTRAPATHS:prepend := "${THISDIR}/files:" SRC_URI += "file://rauc.cfg" CONFIG_MD=y CONFIG_BLK_DEV_DM=y CONFIG_BLK_DEV_LOOP=y CONFIG_DM_VERITY=y CONFIG_SQUASHFS=y CONFIG_CRYPTO_SHA256=y CONFIG_SQUASHFS_FILE_DIRECT=y SQUASHFS_DECOMP_MULTI=y CONFIG_SQUASHFS_ZLIB=y CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3
  • 31. Yocto Project Summit 2021.11, Leon Anavi, RAUC and meta-rauc-community Conclusions  RAUC is a secure, reliable, free and open source framework for A/B software updates of embedded Linux devices  meta-rauc-community is the Yocto/OpenEmbedded layer providing RAUC example integration on popular embedded devices  As of the moment meta-rauc-community provides examples for Raspberry Pi, QEMU x86-64, Allwinner (SunXi) and NVIDIA Jetson Tegra TX2  More contributors wanted to extend the examples on more embedded devices
  • 32. Yocto Project Summit 2021.11, Leon Anavi, RAUC and meta-rauc-community Thank You! Useful links  Software Updates with RAUC, the Yocto Project and OpenEmbedded, Leon Anavi Yocto Project Summit 2020 https://pretalx.com/yocto-project-summit-2020/talk/JJYPH3/  Getting Started with RAUC on Raspberry Pi, an article at konsulko.com https://www.konsulko.com/getting-started-with-rauc-on-raspberry-pi-2/  Behind the Scenes of an Update Framework: RAUC, Enrico Jörns, ELCE 2019 https://www.youtube.com/watch?v=ZkumnNsWczM  Embedded Recipes 2019 - Remote update adventures with RAUC, Yocto and Barebox https://www.youtube.com/watch?v=hS3Fjf7fuHM  Secure and Safe Updates for Your Embedded Device, Enrico Jörns, FOSDEM 2017 https://archive.fosdem.org/2017/schedule/event/secure_safe_embedded_updates/