Überschreiben des Linux-Roots (schreibgeschützt) aus dem laufenden System

Überschreiben des Linux-Roots (schreibgeschützt) aus dem laufenden System

Das scheint mir ein sehr allgemeines Problem zu sein. Ich habe ein eingebettetes System, auf dem Linux von einem schreibgeschützten Stammverzeichnis aus läuft. Es gibt einen Updater-Daemon, der neue Software-Images installiert, wenn sie verfügbar sind, indem er ganze Partitionen überschreibt. Meine Frage ist: Was ist der beste Ansatz, um dies von einem laufenden System aus zu tun?

  1. dd die aktualisierte Partition nach /dev/sdX, welches das aktuell (schreibgeschützte) gemountete Root ist?
  2. Verschieben Sie das aktuelle Stammverzeichnis pivot_rootwie beschrieben in ein tmpfsHier?
  3. 2 Root-Partitionen verwenden und nach jedem Update die „aktive“ Partition umschalten?

Die Nachteile von 2 und 3 sind, dass ich viel RAM (für 2) oder Festplattenspeicher (für 3) benötige. Gibt es eine sichere Möglichkeit, die schreibgeschützte Root-Partition von einem laufenden System aus zu überschreiben und das aktualisierte System neu zu starten?

Antwort1

Ich habe mich also für den 1. Ansatz entschieden und bin auf große Schwierigkeiten gestoßen, da das System aufgrund eines Dateisystemproblems nicht mehr stabil war. Ich denke, das Überschreiben einer gemounteten Partition ist keine gute Idee (was allerdings keine große Überraschung ist). Um das zu beheben, habe ich die 2. Idee (pivot_root) ausprobiert, die funktioniert, aber einige Nachteile hat. Einer davon ist: Sie müssen die meisten laufenden Prozesse stoppen und/oder so schnell wie möglich neu starten, nachdem das Update abgeschlossen ist. Schließlich habe ich die 3. Idee ausprobiert und der einzige Nachteil ist die „Verschwendung“ von Speicherplatz. Alles andere funktioniert ziemlich gut.

verwandte Informationen