RAUC – Over-the-Air-Updates für Embedded Linux

Maintained by Pengutronix

Die zuverlässige Versorgung mit Updates im Feld ist für moderne eingebettete Systeme inzwischen eine zentrale Anforderung. Zum einen aus regulatorischen Gründen, vor allem aber, um Geräte kontinuierlich mit Sicherheits-Updates, Fehlerkorrekturen und neuen Features versorgen zu können.

Mit RAUC entwickelt und pflegt Pengutronix gemeinsam mit einer weltweiten Community eines der führenden Open-Source-Frameworks für Over-the-Air-Updates. Neben klassischen A/B-Updates unterstützt RAUC eine ganze Reihe individueller Szenarien und lässt sich nahtlos in bestehende Infrastruktur und Applikationen integrieren.

Was ist RAUC?

RAUC besteht aus zwei Teilen. Auf Host-Seite liefert es das Tooling, um aus den Artefakten des Buildsystems signierte Update-Bundles zu erzeugen. Auf Target-Seite läuft ein Service, der diese Bundles entgegennimmt, authentifiziert und Images und Artefakte atomar auf den passenden Ziel-Partitionen oder in den passenden Verzeichnissen installiert. Der aktuelle Zustand des Redundanz-Systems ist dabei über das D-Bus-Interface und das mitgelieferte Kommandozeilen-Tool vollständig introspektierbar und kontrollierbar.

Auf Host-Seite steht ein Schlüsselpaar, mit dem die Artefakte zu einem signierten Bundle zusammengefasst werden. Auf Target-Seite prüft RAUC dieses Bundle gegen den hinterlegten Keyring, während die system.conf beschreibt, welche Slots es gibt und wohin die einzelnen Images gehören.

Die zentrale Idee von RAUC ist ein ausfallsicherer Update-Vorgang: Ein Update ist entweder vollständig eingespielt oder gar nicht, und im Fehlerfall startet das Gerät weiterhin zuverlässig.

Features

Signierte Bundles

Signatur und Verifikation über OpenSSL auf Basis von X.509-Zertifikaten. Schlüssel und Zertifikate können auf PKCS#11-Token liegen, etwa in einem HSM.

HTTP(S)-Streaming

Installation direkt aus dem Netz, ohne Zwischenspeicher auf dem Gerät.

Adaptive Updates

Reduzierung der Download-Größe mittels adaptiver Auswahl von Delta-Update-Verfahren.

Verschlüsselte Bundles

Updates lassen sich zusätzlich zur Signierung auch verschlüsselt ausliefern.

Bootloader-Updates

Eingebaute Methoden zum atomaren Update des Bootloaders auf verschiedenen Storage-Medium.

Artifacts

Daten, Applikationen und Container lassen sich unabhängig vom Basissystem aktualisieren.

Integration in Buildsysteme

Die Integration von RAUC in ein Embedded-Linux-System wird von den gängigen Linux-Buildsystemen unterstützt:

Weitere Buildsysteme lassen sich ebenso anbinden. Für die eigenständige Nutzung steht darüber hinaus eine umfangreiche Dokumentation zur Verfügung.

Was bietet Pengutronix rund um RAUC?

Integration

Wir binden RAUC in neue wie in bestehende Projekte ein.

Dazu gehört auch die update-orientierte Anpassung des Gesamtsystems, etwa an Watchdog, systemd oder Partitionierung.

Security und Key-Handling

Professionelles Key-Handling in Produktion und Gerät.

Dazu Updates im Kontext von Verified Boot, OP-TEE und vergleichbaren Mechanismen.

Entwicklung und Mainlining

Entwicklung und Erweiterung neuer RAUC-Features, inklusive Einbringen der Änderungen ins offizielle Projekt.

Support

Professioneller Support rund um Fragen zur Nutzung von RAUC.

RAUC unterstützen

Sponsoring-Pakete

RAUC ist und bleibt vollständig Open Source. Neue Features entstehen oft in Kundenprojekten oder in der Community. Die laufende Wartung und Pflege lässt sich dagegen schwerer finanzieren. Mit einem Sponsoring-Paket unterstützen Sie genau diese Arbeit.

Sponsoring-Paket