• Comment: Also needs additional context. I still have no clue what this is after reading the article. Make sure that non-experts and folks not familiar with computers can still understand it. Captain Eek Edits Ho Cap'n! 21:12, 22 October 2019 (UTC)
  • Comment: Requires more references. Fails WP:GNG Mgbo120 (talk) 19:31, 10 February 2019 (UTC)

RAUC
Original author(s)Jan Lübbe, Enrico Jörns, the RAUC community
Stable release
v1.12 / 9 August 2024; 3 months ago (2024-08-09).[1]
Written inC
Operating systemLinux
Available inEnglish
LicenseGNU Lesser General Public License
Websiterauc.io

RAUC (Robust Auto-Update Controller) is an open source OTA update framework for embedded or IoT devices running a Linux operating sytsem.[2][3]

The main purpose of RAUC is to provide cryptographically verified, fail-safe firmware updates for Linux systems with a redundant (A/B) system partition set.

RAUC serves both as a host and a target tool. The host tool allows the creation of signed (and optionally encrypted) update artifacts (called 'bundles') typically consisting of the file system image(s) to install and additional metadata. The target tool runs as a service on the embedded device and handles the bundle verification and installation.


Design and principles

edit

Cryptographic verification of OTA updates is seen as mandatory and can thus not be deactivated. RAUC uses standard X.509 cryptography for this.

While RAUC performs mainly full image-based updates, it also comes with support for unpacking tar archives.

The partition layout for RAUC is described in a target system configuration file. The RAUC update service running on the target uses this information to automatically determines the inactive system partitions that can serve as installation targets.

Features

edit

D-Bus API

edit

A D-Bus API allows integrating RAUC into custom applications that can trigger installation, show progress or introspect system status.

Bootloader Interaction

edit

To switch from the running system copy to the updated copy, RAUC needs to interact with the system's bootloader.

The currently supported bootloaders are Barebox, GRUB, UEFI, U-Boot, or custom implementations.

HTTP(S) Bundle Streaming

edit

Since v1.7 RAUC has built-in support for streaming update bundles from a web server via HTTP range requests. This allows updating a device without the need for intermediate on-target storage.

Adaptive (Delta-like) Updates

edit

In OTA update scenarios, bandwidth is often limited. Adaptive updates are a generic mechanism for delta-like download optimizations.

Encrpytion

edit

Build System Integration

edit

RAUC support is available or integrated into common embedded Linux build systems like Yocto Project/ObenEmbedded[4], Buildroot[5], or PTXdist. As a host tool, it is also part of common Linux distributions such as Debian[6], Ubuntu, Arch Linux or NixOS.

Reception And Usage

edit

References

edit
  1. ^ "RAUC v1.12". GitHub. 2024-08-09. Retrieved 2024-10-02.
  2. ^ "RAUC Manual". Retrieved 8 February 2019.
  3. ^ Chris Simmonds. Mastering Embedded Linux Programming. Packt Publishing Ltd. p. 220.
  4. ^ "OpenEmbedded Layer Index - meta-rauc". layers.openembedded.org.
  5. ^ "[git commit] rauc: new package". buildroot (Mailing list).
  6. ^ https://packages.debian.org/bullseye/rauc
  7. ^ "Portable Linux gaming with the Steam Deck".
  8. ^ "Collabora Details How SteamOS 3.0 Works on the Steam Deck".
  9. ^ "Linux4ICE" (PDF).
edit