In einem aktuellen Projekt hat das Embedded-Linux-Unternehmen Bootlin demonstriert, wie man auf dem Raspberry Pi 5 sichere Software-Updates über das Internet ermöglicht – ganz ohne den verbreiteten Bootloader U-Boot. Stattdessen wird ausschließlich die bereits im Raspberry Pi eingebaute Firmware genutzt, um sogenannte A/B-Updates mit der Open-Source-Software RAUC umzusetzen. Für Maker ist das nicht nur technisch spannend, sondern auch potenziell praktisch, denn es zeigt, wie sich eigene Projekte in Zukunft robuster und wartungsfreundlicher gestalten lassen – etwa bei vernetzten Geräten oder DIY-IoT-Anwendungen.
Nutzung einer zweiten Partition
RAUC steht für „Robust Auto-Update Controller“. Es sorgt dafür, dass neue Software-Updates nicht direkt das laufende System überschreiben. Stattdessen werden Updates auf eine zweite, unbenutzte Systempartition geschrieben (Slot B), während das laufende System auf Slot A bleibt. Nach einem Neustart wird dann von Slot B gebootet – klappt das nicht, wird automatisch zurück auf Slot A gewechselt. Das minimiert das Risiko, dass ein fehlerhaftes Update ein Gerät unbrauchbar macht. Normalerweise funktioniert das über sogenannte Bootloader wie U-Boot. Doch weil U-Boot auf dem Pi 5 derzeit keine Verbindung zu schnellen Speichern über PCIe unterstützt, war ein anderer Weg gefragt.
Die Lösung: die bereits integrierte Firmware des Raspberry Pi als Bootloader zu verwenden. Diese startet direkt vom internen Speicherchip (EEPROM) und lässt sich über einfache Textdateien wie config.txt und cmdline.txt konfigurieren. Ein wichtiges Feature dabei ist „tryboot“, das einen temporären Neustart von einer alternativen Partition erlaubt – ideal für A/B-Updates. Mit einem kleinen Tool namens „vcmailbox“ kann man aus dem laufenden System heraus genau steuern, welche Partition beim nächsten Start verwendet wird.
Das Team von Bootlin hat eigens eine „Backend“-Schnittstelle entwickelt, die RAUC die Kommunikation mit dieser Firmware ermöglicht – etwa um festzustellen, welche Partition gerade läuft, oder um festzulegen, welche beim nächsten Start aktiv sein soll. Außerdem wurde ein neuer Trick eingeführt: Ab der Firmware-Version vom März 2025 versteht die Raspberry-Pi-Firmware sogenannte [boot_partition]-Bedingungen. Damit lässt sich in config.txt ganz elegant definieren, welche cmdline.txt geladen werden soll – je nachdem, von welcher Partition gerade gebootet wurde. Praktisch bedeutet das: Man kann zwei verschiedene cmdline.txt-Dateien vorbereiten – eine für Slot A und eine für Slot B – und die Firmware wählt automatisch die passende aus. Dieses Feature ist bisher nicht dokumentiert.
Aktuell funktioniert das Zurückmelden an RAUC, ob ein Update erfolgreich gebootet wurde, bisher nicht optimal. Aber es wird fleißig daran gearbeitet.
Für die Zukunft könnte das für Maker bedeuten, dass man Raspberry-Pi-5-basierte Projekte – sei es eine Wetterstation, ein smartes Türschloss oder ein selbstgebautes Mediacenter – ohne die Verwendung von U-Boot auf eine sichere Art und Weise mit Updates versorgen kann. Das ist insbesondere durch den Sicherheitsaspekt interessant, weil U-Boot vor Kurzem selbst ein Einfallstor für Schadsoftware geboten hat.
Wer noch kein Projekt hat und jetzt mehr über die Features des Raspberry Pi 5 wissen will, findet alles dazu in unserem Test.
(das)