Artikel von: Mohamed BELOUARGA
Das Hinzufügen einer Funktion, das Beheben eines Fehlers oder das Korrigieren einer Sicherheitsverletzung sind Teil des Lebenszyklus einer Software, einer Bibliothek oder einer Firmware. Für Architekten und Entwickler ist die Durchführung dieser Aufgaben jedoch immer noch mit technischen Nachteilen und einer Menge möglicher unerwünschter Ergebnisse (mehr Bugs, Rollbacks usw.) verbunden
Bisher schicken die Industrie und insbesondere die Embedded-System-Branche ihre Techniker weiterhin vor Ort, um Updates an ihren Produkten durchzuführen. Diese Verfahren sind zeitaufwändig, erfordern eine aufwändige Logistik, sind teuer und werden daher oft übersehen, was bei Kunden und Benutzern zu großer Verachtung führt.
Remote-Updates, auch Over The Air (OTA) -Updates genannt, sind besser für die zukünftigen Bedürfnisse der meisten Industrieunternehmen, Hersteller und ihrer zukünftigen Produkte geeignet.
In diesem Artikel werden Remote-Updates für eingebettete Linux-Systeme behandelt.
OTA-Updates ermöglichen Softwareänderungen an einem System, ohne physischen Kontakt mit dem System herzustellen. Diese Updates können mit mehreren Open-Source-Lösungen durchgeführt werden, ihre Implementierung ist jedoch nicht immer einfach.
Da sich die Hersteller die Aktualisierungsoptionen ansehen, ziehen sie als Erstes eine paketweise Aktualisierung in Betracht. Diese Lösung ist aus mehreren Gründen für eingebettete Systeme am wenigsten geeignet:
👉 Zu den Beispielen gehören Ausbessern, Ostree, RAUC...
Dennoch gibt es andere Lösungen, mit denen all diese Nachteile vermieden werden können, wie SW-Aktualisierung, Mender, Ostree, RAUCusw.
Jede Lösung hat ihre eigene Art, mit Updates umzugehen. Wir werden nur darauf eingehen Stefano Babics SWUpdate in diesem Artikel.
Im Gegensatz zur Komplettlösung Mender, die mit ihren Anforderungen, Einschränkungen und Einschränkungen einhergeht, kann SWUpdate eine benutzerdefinierte Version von Mender erstellen, in der Funktionen hinzugefügt oder entfernt werden. Erstellung einer Aktualisierungslösung, die perfekt auf die Bedürfnisse des Kunden zugeschnitten ist.
Der Nachteil ist, dass die Aktualisierungsdatei beträchtlich sein kann, was die Netzwerkpreise erhöht. Dieses Problem kann jedoch auch vermieden werden, indem beim Aktualisieren komprimierte Rootfs verwendet werden oder indem das Delta-Update verwendet wird. Wir werden das später entwickeln.
Vor der Implementierung einer Aktualisierungslösung muss eine Aktualisierungsstrategie definiert werden. Diese Strategie entspricht der Lebensdauer eines Produkts und ist sehr schwer zu ändern.
Einige Beispiele für Aktualisierungsstrategien sind:
Das Aktualisierungsverfahren läuft wie folgt ab. Während das Produkt mit rootfs1 und kernel1 arbeitet, aktualisiert swupdate rootfs2 oder kernel2 und startet dann auf rootfs2 und kernel2 neu.
Wenn das Update erfolgreich ist, bleibt das Produkt unverändert. Aber wenn das nicht der Fall ist (rootfs2 ist beschädigt oder Kernel2 gerät in Panik), führt das U-Boot eine Rollback-Operation zurück zu rootfs1 und Kernel1 aus.
Der Rescue-Kernel ist auf die notwendigen Treiber beschränkt, und das Rescue-Rootfs ist auf die notwendigen Bibliotheken und swupdate beschränkt. Die anderen Rootfs und der Kernel sind die Produktionsfirmware.
Wenn ein Update bereit ist, wird das Image auf dem Rescue-Image neu gestartet und vom Rescue-Image aus werden Rootfs und Kernel aktualisiert. Nach der Aktualisierung wird das Image auf dem Produktionskernel und auf dem Rootfs neu gestartet.
In jedem Fall dienen der Rescue-Kernel und das Rootfs als Backups, falls das Update fehlschlägt.
Wie bereits erwähnt, ist SWUpdate ein Framework, mit dem alles möglich ist. Die einzigen Einschränkungen sind die Vorstellungskraft seiner Benutzer.
SwUpdate muss mit dem Bootloader funktionieren, was bedeutet, dass, wenn das Gerät oder Produkt das Rootfs ändern muss, der Bootloader die Befehlszeile ändert, die der Kernel empfängt. Das macht diese Verbindung für das Aktualisierungssystem unverzichtbar.
Nachdem wir nun die Aktualisierungsstrategien und die Bootloader-Schnittstelle gesehen haben, wollen wir uns die verschiedenen Tools ansehen, die SWUpdate zum Senden eines aktuellen Updates bereitstellt.
Die Oberfläche könnte so aussehen:
SWUpdate im Mangoose-Modus beinhaltet einen eingebetteten Webserver, der es uns ermöglicht, die Aktualisierungsdatei über eine Weboberfläche zu senden.
Sobald swUpdate korrekt konfiguriert ist, ermöglicht diese Schnittstelle dem Benutzer, eine Aktualisierungsdatei (.swu) an das Ziel zu senden. Die Oberfläche zeigt auch Einblicke wie den Aktualisierungsstatus und die Protokolle.
SWUpdate im Surricata-Modus fragt einen Remote-Server nach Updates, ruft sie ab, installiert sie und meldet dann die Ergebnisse.
Der Surricata-Modus wird hauptsächlich für große Kartenmengen verwendet und zentralisiert und überwacht die Steuerung des Aktualisierungssystems. Von der Serverseite aus können wir Eclipse HawkBit verwenden, um den Status eines Kartenparks zu überwachen.
Derzeit wird nur Eclipse HawkBit unterstützt, aber dank des Open-Source-Charakters dieser Lösungen kann ein maßgeschneiderter Server hinzugefügt werden, der als Workaround dient.
SWUpdate, das wie ein Framework agiert, bietet Benutzern viele weitere Funktionen und Tools. Zum Beispiel in der Situation, in der ein Benutzer ein .swu-Update mit einer anderen Anwendung eingeben möchte. Die Datei kann mit dem Tool swUpdate-Client an den SWUpdate-Daemon gesendet werden. Darüber hinaus kann dieselbe Anwendung mit SWUpdate-Progress die Fortschrittsdaten der Aktualisierung abrufen, was eine externe Überwachung ermöglicht.
Es sind viele andere Funktionen verfügbar, und alle sind sehr gut dokumentiert.
Wenn Sie spezielle Anforderungen haben, z. B. wie Sie ein bestimmtes Update installieren oder einen mit dem Ziel verknüpften Mikrocontroller aktualisieren, können Sie mit SWUpdate Ihren eigenen Handler hinzufügen.
Sicherheit bleibt für SWUpdate wichtig. Die Fähigkeit, HTTPS mit dem Surricata-Modus zu verwenden, zeigt dies bereits, aber wir können auch.swu-Dateien signieren. SWUpdate ist dann in der Lage zu überprüfen, ob die empfangenen Updates von einer autorisierten Quelle stammen (privater Schlüssel/öffentlicher Schlüssel).
Der teuerste Teil eines Aktualisierungsvorgangs sind in den meisten Fällen die Bandbreitenkosten. Das Aktualisieren eines Rootfs für eine große Anzahl von Zielen erfordert ebenfalls eine große Menge an Bandbreite. Um das Problem zu lösen und die Kosten zu senken, ermöglicht SwUpdate die Verwendung komprimierter Rootfs.
Der Bandbreitenpreis bleibt auch nach der Komprimierung hoch, weshalb SWUpdate eine andere auf Deltas basierende Lösung vorschlägt.
Diese Lösung wird in einem zukünftigen Artikel besprochen.
Zusammenfassend lässt sich sagen, dass SWUpdate ein umfangreiches Framework ist, das viele spezifische Situationen lösen kann. Wenn SWUpdate gut konfiguriert ist, kann es Ihre Aktualisierungskosten reduzieren und gleichzeitig die Aktualisierung von Linux-basierten Systemen für alle viel einfacher machen.
Fabien LAHOUDERE, T&S Linux-Praxisleiter
Martin COUSSERANS, Geschäftsführer
„Entdecken Sie die Grundlagen von Linux Embarqué, einem Open-Source-Betriebssystem, leicht und modular, das im Internet der Dinge, in vernetzten Objekten, in industriellen oder medizinischen Systemen eingesetzt wird. Technologie und Strategie vous accompagne dans vos projets innovants grâce à son expertise.
MEHR LESENSébastien Julien hat Englab bei T&S strukturiert und weiterentwickelt. Er brachte strategische Visionen, praktische Erfahrung und menschliches Wachstum ein, um ein Ingenieurbüro zu einem wichtigen Kapital des Unternehmens zu machen.
MEHR LESENT&S verpflichtet sich gemeinsam mit SBTi zu einem ehrgeizigen Ansatz, um seine CO2-Emissionen zu reduzieren und seine Maßnahmen bis 2033 unter aktiver Beteiligung aller seiner Unternehmen an den globalen Klimazielen auszurichten.
MEHR LESEN