Swupdate für debian basierte Systeme

OP #7520566
Lesenswert?

Ich habe auf einem Industrie PC Debian mit GRUB installiert. Die meiste Zeit ist das Ding nicht am Internet, soll aber geupdatet werden können. Ich will das am Ende ungern über APT Paketquellen machen.

Ich habe Swupdate entdeckt, was sowas prinzipiell können soll. Allerdings ist sämtliche Dokumentation nur auf Yocto oder Buildroot bezogen, was ich auf keinen Fall benutzen möchte.

Hat jemand schonmal ein komplettes debian rootfs mit Grub über swupdate aktualisiert und kann mir dazu ein Tutorial geben.

Mit stellen sich folgende Fragen. So wir ich es verstanden habe baut man ein Image und muss das irgendwie auf die festplatte bekommen. Braucht es dazu eine separate Partition oder kommt man weiter mit der root Partition und einer weiteren für unveränderliche Daten aus?

Wie wird der Update Prozess über GRUB bei einem Single Image gestartet und woher kommt dann das update file beim neustart? VOn der aktuellen Root Partition?

#7520585
Lesenswert?

Gustav G. schrieb:

Ich habe auf einem Industrie PC Debian mit GRUB installiert. Die meiste Zeit ist das Ding nicht am Internet, soll aber geupdatet werden können. Ich will das am Ende ungern über APT Paketquellen machen.

Warum nicht? Das Teilmuss ja (hoffentlich) irgendwie einen externen Datenträger anbinden können – irgendwie hat man es ja mal installiert.

Also einfach einen (partiellen) Debian-Mirror aufsetzen, dessen Daten auf einem externen Datenspericher abgelegt werden. Diesen dann an den Industrie-PC anstöpseln und von dort aus aktualisieren. Das ist dann ähnlich wie bei der Debian-Installation von optischen Datenträgern (CD, DVD, BluRay).

Ich mache das hier zwar alles online via apt-cacher-ng nur zur Reduktion des Datenverkehrs, aber den dadurch dynamisch entstandenen Mirror mit derzeit ca. 27GByte könnte ich genauso auch via Datenträger an andere Geräte anhängen.

IMHO ist das der einfachste und schmerzärmste Weg. YMMV.

OP #7520628
Lesenswert?

Ralf D. schrieb:

Warum nicht? Das Teilmuss ja (hoffentlich) irgendwie einen externen Datenträger anbinden können – irgendwie hat man es ja mal installiert.

Nein es hat extern nur einen RJ45 Ethernet Port. Updates sollen per SSH eingespielt werden. Es ist nicht gewünscht da irgendwelche USB Ports herauszuführen.

Die initiale Installation erfolgt per USB Stick aber das soll der Benutzer später nicht mehr machen können.

Mit einem APT Mirror möchte ich das nicht machen weil da zu viel schiefgehen kann. Es soll eher Android mäßig einfach alles überschreiben.

#7520640
Lesenswert?

Gustav G. schrieb:

Es soll eher Android mäßig einfach alles überschreiben.

Was unterscheidet dann ein Update von einer Neuinstallation?

Pack ein Partitions-Image auf den USB-Stick, überbügel alles. Daten/Config auf einer anderen Partition unterbringen, falls die beibehalten werden sollen.

Und was soll der Hinweis auf Android? Gerade Android ist sehr gut darin, nur Teile von APKs bei einem Update auszutauschen. Besser noch als APT, was immer die ganze Applikation neu drüberinstalliert.

#7520643
Lesenswert?

Gustav G. schrieb:

Es soll eher Android mäßig einfach alles überschreiben.

Das ist aber dann eigentlich was Anderes. Da werden nicht einzelne Anwendungen oder so aktualisiert, sondern im Speicher wird ein neues Abbild auf die Systempartition geschrieben. Kannst du auch machen. Eindeutig Benutzerdaten und System trennen und dann ein neues Abbild zusammenstellen und damit die Partition überschreiben.

Aber wenn du sowieso schon bei Abbildern bist die du auswechseln können willst, dann boote doch gleich über Netzwerk von einem Abbild.

OP #7520855
Lesenswert?

Gustl B. schrieb:

Das ist aber dann eigentlich was Anderes. Da werden nicht einzelne Anwendungen oder so aktualisiert, sondern im Speicher wird ein neues Abbild auf die Systempartition geschrieben.

Richtig und genau das ist es, was ich mit swupdate erreichen will.

Gustl B. schrieb:

Aber wenn du sowieso schon bei Abbildern bist die du auswechseln können willst, dann boote doch gleich über Netzwerk von einem Abbild.

Es gibt kein Netzwerk, da das ein Benutzer möglichst autark ohne Internet machen soll und ohne ein NFS oder tftp aufsetzen zu müssen.

Mark S. schrieb:

Welche schlechten Erfahrungen halten Dich davon ab apt zu verwenden?

Schon viele. Einerseits will ich bei einem Major Upgrade nicht das ganze APT Repository auf das gerät rüberziehen müssen, wo einfach kein Platz für ist und andererseits ging immer mal irgendetwas schief beim Update von vielen Paketen.

#7520881
Lesenswert?

Ich hab das nicht ausprobiert, aber hier mal ein paar Ideen.

Du mountest das rootfs readonly. /home kommt auf eine andere Partition und wird rw gemounted.
Beim Updaten mountest du das rootfs einfach nochmal unter /mnt/root/ oder so, rw, und machst ein rsync von deinem geupdateten system dort hin. Dann rebootest du es.
Alternativ kannst du euch einen btrfs snapshot ro mounten, und einen neuen btrfs snapshot senden, dann nach dem reboot den alten löschen.

#7520882
Lesenswert?

Gustav G. schrieb:

Gustl B. schrieb:

Das ist aber dann eigentlich was Anderes. Da werden nicht einzelne Anwendungen oder so aktualisiert, sondern im Speicher wird ein neues Abbild auf die Systempartition geschrieben.

Richtig und genau das ist es, was ich mit swupdate erreichen will.

Debian kann das nicht und ist dafür nicht ausgelegt. Man kann das zwar machen, aber ob DU das machen kannst, weiß ich nicht. Jedenfalls wirst Du den gesamten Mechanismus selber entwickeln müssen, von 0 auf.

Was Du eigentlich willst, ist eine sogenannte "immutable" Linux Distribution. Da werden bei einem Update immer nur schreibgeschützte Images ausgetauscht, über die dann ein overlayfs gelegt wird, wo dann Daten und Konfigurationen liegen. Solche Distributionen gibt es (danach kann man googeln), aber Debian gehört nicht dazu. Und entweder nimmst Du so eine immutable Disto, oder Du wirst viele 100 Stunden damit zubringen, das nachzubauen, was die Distro-Entwickler dieser Distributionen gemacht haben, und Du wirst bei jedem Update erneut viele Stunden weitere Arbeit haben. Oder Du machst es, wie die Debian Leute es vorgesehen haben, per apt.

Das sind Deine Optionen. Wähle eine.

fchk

PS: https://gnulinux.ch/debian-wird-immutable https://ubuntu.com/blog/ubuntu-core-an-immutable-linux-desktop Ist aber alles noch Zukunftsmusik.

(Firma: Hobbytheoretiker) #7520914
Lesenswert?

Eine etwas andere Methode wäre einen identischen Rechner aufzusetzen. Unter Umständen klappt das auch in einer chroot-Umgebung.

Mit apt-get update werden die Paketlisten aktualisiert und mit apt-get update die Pakete heruntergeladen. Die Dateien schiebst Du per copy-paste in ein Verzeichnis auf dem Zielrechner. Du installierst dann mit apt-file alles aus dem Verzeichnis.

OP #7521017
Lesenswert?

Frank K. schrieb:

Debian kann das nicht und ist dafür nicht ausgelegt. Man kann das zwar machen, aber ob DU das machen kannst, weiß ich nicht. Jedenfalls wirst Du den gesamten Mechanismus selber entwickeln müssen, von 0 auf.

Ich dachte eben dafür ist dann swupdate um mir das von 0 auf zu ersparen. Damit das nochmal deutlich wird. ich will keinerlei Overlayfs und da soll auch nichts mehr, außer beim image erstellen, per apt aktualisiert werden. Es werden lediglich ein paar unveränderliche verzeichnisse für Konfiguration gemountet das ist alles.

Wenn das Mantra hier lautet "geht nicht, wird nicht gehen, versuch es gar nicht erst" dann kann der Thread meiner Meinung nach geschlossen werden. Ich hatte wirklich explizit nach swupdate auf Debian gefragt.

#7521030
Lesenswert?

Gustav G. schrieb:

Ich hatte wirklich explizit nach swupdate auf Debian gefragt.

Dann mach das doch. Swupdate hat angeblich debian support, also probier's aus. Einfach mal eine VM aufsetzen in der man das Testen kann kostet weniger Zeit als bislang in diesen Thread geflossen ist.

Und wenn du nicht weiterkommst: swupdate.org bietet kommerziellen Support an. Dort anzufragen könnte im Endeffekt billiger kommen, als selber einen Mannmonat Arbeit zu investieren.

#7521037
Lesenswert?

Gustav G. schrieb:

Ich habe Swupdate entdeckt, was sowas prinzipiell können soll. Allerdings ist sämtliche Dokumentation nur auf Yocto oder Buildroot bezogen, was ich auf keinen Fall benutzen möchte.

Das ist aber genau dafür gemacht und geeignet um embedded System zu aktualisieren.

Wir verwenden es mit zwei Partitionen die wechselseitig aktualisiert werden, einer aktiven und einer die aktuell aktualisiert wird. So wie oben beschrieben als read-only filesystem. Manche folder (z.B. /etc und /home) werden über ein overlay filesystem read-write gemounted auf einer weiteren Partition.

Michael

OP #7521098
Lesenswert?

Michael D. schrieb:

Wir verwenden es mit zwei Partitionen die wechselseitig aktualisiert werden, einer aktiven und einer die aktuell aktualisiert wird. So wie oben beschrieben als read-only filesystem. Manche folder (z.B. /etc und /home) werden über ein overlay filesystem read-write gemounted auf einer weiteren Partition.

Darfst du deine Konfigurationsdatei dafür teilen?

#7523606
Lesenswert?

Gustav G. schrieb:

Mark S. schrieb:

Welche schlechten Erfahrungen halten Dich davon ab apt zu verwenden?

Schon viele. Einerseits will ich bei einem Major Upgrade nicht das ganze APT Repository auf das gerät rüberziehen müssen, wo einfach kein Platz für ist und andererseits ging immer mal irgendetwas schief beim Update von vielen Paketen.

Ich persönlich finde es ja immer wieder interessant, zu lesen, wenn Menschen Schwierigkeiten mit "ganz normalen" Updates gehabt haben, insbesondere unter Debian GNU/Linux. Mir ist das natürlich auch schon passiert, aber bei meinen Nachforschungen konnte ich bisher keinen Fall entdecken, in dem die Probleme nicht auf selbstgemachten Unsinn zurückzuführen waren.

Persönliche Seite #7541393
Lesenswert?

Gustav G. schrieb:

Stimmt yocto ist gut aber bis das läuft wie man will und alle pakete am laufen hat vergehen so viele kompilierversuche mit stunden

Aber dabei, Debian Read-Only-Kompatibel zu machen und das Swupdate ans Laufen zu bringen nicht? Das Yocto-Buildsystem ist sehr clever und kompiliert nur das neu was unbedingt neu kompiliert werden muss.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren