Implementieren eines Aktualisierungs- / Upgrade-Systems für eingebettete Linux-Geräte

Ich habe eine Anwendung, die läuft auf einem embedded-Linux-Gerät und jedes jetzt und dann änderungen an der software und gelegentlich auch, um das root-Dateisystem oder sogar die installierten kernel.

In der aktuellen update-system den Inhalt der alten Anwendungs-Verzeichnis einfach gelöscht und die neuen Dateien werden kopiert. Wenn änderungen am root-Dateisystem vorgenommen wurden, werden die neuen Dateien geliefert, die als Teil des Updates und einfach nur kopiert über die alten.

Nun, es gibt mehrere Probleme bei den derzeitigen Ansatz und ich bin auf der Suche nach Möglichkeiten, um die situation zu verbessern:

  • Das root-Dateisystem des Ziels, die verwendet wird, zu erstellen, Datei-system-images ist nicht versioniert werden (ich glaube nicht, wir haben sogar die original-rootfs).
  • Die Dateien rootfs, gehen in das update manuell ausgewählt werden (statt einem diff)
  • Das update kontinuierlich wächst und das wird ein pita. Es gibt nun eine Aufteilung zwischen update/upgrade in dem das upgrade enthält größere rootfs änderungen.
  • Ich habe den Eindruck, dass die Konsistenz überprüft, in der ein update sehr empfindlich sind, wenn überhaupt, umgesetzt werden.

Anforderungen sind:

  • Die Anwendung update-Paket sollte nicht zu groß sein und es muss auch in der Lage sein, ändern Sie das root-Datei-system im Fall änderungen vorgenommen wurden.
  • Ein upgrade kann viel größer sein und enthält nur die Dinge, die in das root-Dateisystem (wie neue Bibliotheken, kernel, etc.). Kann ein update benötigen ein upgrade wurde installiert.

    Könnte das upgrade enthalten das ganze root-Dateisystem und machen Sie einfach eine dd auf dem flash-Laufwerk des Ziels?
  • Erstellen des update - /upgrade-Pakete sollten so automatisch wie möglich.

Ich brauche unbedingt irgendeine Weise zu tun, die Versionierung der root-Datei-system. Dies muss in einer Weise geschehen, dass ich berechnen kann, irgendeine Art von diff davon, die verwendet werden kann zum aktualisieren der rootfs für das target-Gerät.

Ich sah schon in Subversion, da verwenden wir, dass für unseren source-code, aber das ist unpassend für die Linux-root-Datei-system (file-permissions, special files, etc.).

Habe ich nun erstellt, einige shell-Skripte, die mir sowas ähnliches wie ein svn diff aber ich würde wirklich gerne wissen, ob es existiert bereits eine funktionierende und geprüfte Lösung für dieses.

Verwendung solcher diff's ich denke, ein Upgrade würde dann einfach ein Paket mit den inkrementellen updates basierend auf der bekannten root-Dateisystem-Zustand.

Was sind Ihre Gedanken und Ideen auf diesem? Wie würden Sie die Umsetzung eines solchen Systems? Ich bevorzuge eine einfache Lösung, die umgesetzt werden und nicht zu viel Zeit.

InformationsquelleAutor der Frage trenki | 2011-08-04

Schreibe einen Kommentar