All Systems Go 2017: Updating Embedded Systems

Robert Schwebel | | Event, Talk

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

Smart City - vom Rapid Prototyping bis zur Tragfähigen Infrastruktur

Wir wollen zum Bundesweiten Digitaltag am 18.6.2021 das Thema "Smarte Städte" ein bisschen von der technischen Seite beleuchten, aber keine Angst: es bleibt für alle verständlich.


Yocto Project Virtual Summit 2021

Enrico Jörns | | Event, Yocto
On Tuesday, 25th and Wednesday, 26th, the 3rd edition of the Yocto Project Virtual Summit took place on the internet. With a fair ticket price of 40$ Pengutronix developers Jan Lübbe and Enrico Jörns got a 2-day long wild ride through the latest features, workflows and experiences with the Yocto Project.

Wie man (k)ein Betriebssystem für Produkte baut

Distributionen wie Raspbian lassen die passgenaue Zusammenstellung eines Betriebssystems kinderleicht aussehen. Image herunterladen, Pakete installieren, noch ein paar Änderungen - fertig. Alles wie auf dem Laptop oder Server. Warum ein Betriebssystem aus einer klassischen Distribution im Produkt-Kontext zur Katastrophe führen kann, beleuchtet der Vortrag "Raspbian vs. Build-Systeme: Das richtige Werkzeug für solide Produkte".


Pengutronix at FOSDEM 2021

"FOSDEM is a free event for software developers to meet, share ideas and collaborate. Every year, thousands of developers of free and open source software from all over the world gather at the event in Brussels. In 2021, they will gather online." -- FOSDEM


Pengutronix auf dem Live Embedded Event

Conference, Event, Testing

Jetzt, wo sich durch die COVID-19-Pandemie alle an die Digitalisierung und Online-Konferenzen gewöhnt haben, war es noch nie so einfach, eine Konferenz zu organisieren und alle Experten und Interessierten aus einem Bereich für wenige Stunden des intensiven Ideenaustauschs zusammenzuholen.


Safe and Secure Field Updates of Embedded Linux Systems

Enrico Jörns | | RAUC, OTA, Talk

In this blog post I would like to address the challenges of performing unattended and verified updates of embedded Linux systems in the field using open source software and workflows. While updating is not a end in itself, a second part of my considerations goes even further and also works out the necessities and possible workflows for keeping the software stack of a project up to date and thus either preventing security issues or at least enabling a short reaction time in case of severe CVE'S discovered.