All Systems Go 2017: Updating Embedded Systems

Auf der All Systems Go Konferenz in Berlin berichtete Michael Olbrich am 22.10.2017 über die Erfahrungen unseres Integration Teams, unter dem Titel "Updating Embedded Systems - Putting it all together".

Während noch vor ein paar Jahren Embedded Geräte fast nie geupdatet wurden, sorgen die vielen IoT Security Vorfälle in letzter Zeit dafür, dass das Thema Updating zunehmend auf der Agenda der Hersteller erscheint. Viele Embedded Linux Systeme folgen dabei einem "A/B" Schema, d.h. ein System-Slot ist aktuell gebootet, während ein zweiter geupdatet wird; mit diesem Mechanismus kann ein Update "atomar" durchgeführt werden, d.h. selbst eine Fehlfunktion führt nicht dazu, dass das System nicht mehr bootfähig ist.

Wie funktioniert der Update-Vorgang? Neben dem eigentlichen Schreibvorgang des Images, der mehr oder weniger generisch ablaufen kann, muss die Integrität des Images auf mögliche Fehler geprüft werden. Bei interaktiven Geräten kann z.B. der Benutzer (lokal oder remote hinter einem Rollout-Server) informiert werden, dass im Fehlerfall auf eine alte Version zurückgeschaltet wird. Schwieriger wird es bei nicht interaktiven Geräten: hier kann z.B. der Watchdog genutzt werden, um den Startvorgang zu überwachen; dabei wird im Userspace systemd als Watchdog-Handler genutzt. Allerdings müssen im Gegensatz zum Desktop-Usecase Maßnahmen ergriffen werden, damit systemd den erfolgreichen Start des Systems inklusive seiner Applikationen korrekt überwachen kann:

  • Das System kann im Fehlerfall versuchen, neu zu booten. Dabei können die Reboot-Vorgänge vom Bootloader (meist barebox) mitgezählt werden und es kann bei Überschreiten einer Anzahl von Versuchen ein Fallback auf das alte System vorgenommen werden.
  • Bei transienten Fehlern kann dieser Vorgang in einer Loop durchgeführt werden.
  • Bei kritischeren Systemen kann das System im Fehlerfall aus Sicherheitsgründen heruntergefahren werden.

Welche Variante bei einem konkreten Gerät umgesetzt wird, ist oft projektspezifisch.

Für das Schreiben der Updates und die Verwaltung der Slots ist RAUC ein mächtiges Werkzeug, das neben der Prüfung von Signaturen auch die Synchronisation (z.B. mittels casync) vornehmen kann.


Weiterführende Links

FrOSCon 2023

In ein paar Stunden beginnt die 18. FrOSCon an der Hochschule Bonn-Rhein-Sieg. Pengutronix ist wieder mit einem kleinen Team vor Ort. An einem der Partner-Stände zeigen wir wieder einige unserer Aktivitäten in der Open Source Community. Dafür bringen wir unseren labgrid Demonstrator und die FPGA Demo mit.


DjangoCon Europe 2023

Django ist Pengutronix' Framework der Wahl für Software zur Abwicklung unserer Geschäftsprozesse. Diese internen Werkzeuge bieten zudem auch immer die Gelegenheit neuere Entwicklungen im Django-Universum auszuprobieren.


Chemnitzer Linux-Tage 2023

Nach der Corona-Pause finden am 11.+12.03.2023 die Chemnitzer Linux-Tage in diesem Jahr wieder vor Ort statt, und das Pengutronix Team ist mit acht (!) Vorträgen im Programm vertreten.


Netdevconf 0x16

Nach längerer Zeit mit nur Online-Events findet 2022 auch die Netdev 0x16, eine Konferenz rund um die technischen Aspekte von Linux Networking, hybrid statt - online und vor Ort in Lissabon.


CLT-2022: Voll verteilt!

Unter dem Motto "Voll verteilt" finden die Chemnitzer Linux Tage auch 2022 im virtuellen Raum statt. Wie auch im letzten Jahr, könnt ihr uns in der bunten Pixelwelt des Workadventures treffen und auf einen Schnack über Linux, Open Source, oder neue Entwicklungen vorbei kommen.


Wir haben doch etwas zu verbergen: Schlüssel mit OP-TEE verschlüsseln

Moderne Linux Systeme müssen häufig zwecks Authentifizierung bei einer Cloud- basierten Infrastruktur oder einer On-Premise Maschine eigene kryptografische Schlüssel speichern. Statt der Verwendung eines Trusted Platform Modules (TPM), bieten moderne ARM Prozessoren die TrustZone-Technologie an, auf deren Basis ebenfalls Schlüssel oder andere Geheimnisse gespeichert werden können. Dieses Paper zeigt die Nutzung des Open Portable Trusted Execution Environments (OP- TEE) mit der Standardkonformen PKCS#11 Schnittstellen und i.MX6 Prozessoren von NXP als Beispiel.