Embedded Linux-basierte Geräte benötigen oft einen Mechanismus zum Aktualisieren von Anwendungen und Systemdateien. Zum Beispiel kann ein (nicht vernetztes) Laborgerät mit einem USB-Anschluss Softwareupdates von einem USB-Stick erhalten.
Es wäre sehr einfach, ein Skript auszuführen, um Dateien in den internen Flash-Speicher des Geräts zu kopieren. Es besteht jedoch die Gefahr, dass das Gerät mitten in der Aktualisierung ausfällt und am Ende ein Baustein wird.
Die Situation für Anwendungsdateien ist ein wenig einfacher, da es Platz gibt, das Anwendungsverzeichnis zu duplizieren, eine Kopie zu aktualisieren und schnell alte und neue Verzeichnisse auszutauschen, wodurch das Fehlerfenster minimiert wird.
Die Dinge sind für Kernel und Systemdateien entscheidend, da sie im gesamten Dateisystem verteilt sind.
Wir haben harte und weiche Links im Dateisystem verwendet, um kritische Dateien zu identifizieren. Wir verwenden Hashes für Dateien und Archive, um die Dateiintegrität zu überprüfen. Wir haben überlegt, einen Notfall-Ramf im Kernel zu verwenden, um ein Fallback bereitzustellen, wenn das Starten des aktualisierten Dateisystems fehlschlägt.
Was sind Ihre Ansätze für diese Anforderung?