Spark Onlineupdate

Entwicklung
dietmarw
Contributor
Beiträge: 1833
Registriert: Mittwoch 10. April 2002, 15:39

Spark Onlineupdate

Beitrag von dietmarw »

eine planung für ein "nicht opkg" basierendes onlineupdate gibt es bisher nicht?

ich würde mir das so wünschen:
- man definiert einen speicherort für die zu sichernden daten (stick, (s)ftp, share, ...)
- backup var
- download, flash, restore der sicherung
- reboot

über symlinks in /boot könnten die *.elf dateien im var liegen.
legt man das im inet ab, könnte man einen tarball mit einer hardware-id verschlüsseln.


die einzigen probleme wären:
- kann man direkt nach dem flashen in die jffs2 partition schreiben?
- wer würde das implementieren?
Download Bereiche für DBox2, TD und Spark Distributionen
http://dietmarw.polsum.net
http://dietmarw.trale.de (r.i.p.)
schufti
Einsteiger
Einsteiger
Beiträge: 352
Registriert: Freitag 20. August 2004, 23:33

Re: Spark Onlineupdate

Beitrag von schufti »

wenn man gleich gar keine Dateien ins update packt, die stören könnten, ist's noch viel einfacher....

und ein ganzes jffs2 Image solltest (kannst ???) du auf dem Weg sowieso nicht flashen solange das root-fs r/w gemounted ist.

pinkys Methode war da gar nicht soooo übel.
graugans
Interessierter
Interessierter
Beiträge: 79
Registriert: Sonntag 26. August 2012, 20:16

Re: Spark Onlineupdate

Beitrag von graugans »

Ich verstehe zwar nicht was an opkg auszusetzen ist. Funktioniert hier super.
Aber hier ein paar Ideen.

Fritzbox style
Hier wird das image beim shutdown geflasht, quasi als letzte Aktion. Nachdem das fs readonly gemountet wurde. Die verwenden allerdings auch eine RAMdisk.

Spark style / Pinky
Alles per tar erledigen. Ist etwas schiefgelaufen gibt es ein rescue system. Wie das rescue system aufgebaut ist findest Du hier:
https://github.com/project-magpie/meta- ... dia-990-CR

Falls das mit opkg doch noch in Frage kommen würde ich bastel da gerade an einer Lösung
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
martii
Einsteiger
Einsteiger
Beiträge: 217
Registriert: Donnerstag 14. Juni 2012, 09:39

Re: Spark Onlineupdate

Beitrag von martii »

Ein Live-Update mit Überschreiben von Kernel- und Root-Image ginge mit gewisser Wahrscheinlichkeit schon. Ich habe das quick-and-dirty eben mal probiert; zwar mit YAFFS2 (und ohne Konfig-Daten zu sichern und wieder einzuspielen), aber mit JFFS2 sollte das genauso oder besser tun: Zumindest bei YAFFS2 ist (weshalb auch immer) das nandwrite-Binary erforderlich, das bei Spark dabei ist. Das Spark-nandwrite hatte ich mir unter /media/sda1/nandwrite abgelegt.

Code: Alles auswählen

mount -o remount,ro /
mkdir /tmp/root
cd /tmp/root
mkdir dev sys proc tmp media bin sbin lib media/sda1 sys
tar -C /dev -cf - . | tar -C dev -xf -
cp -p /bin/spark_fp /bin/busybox bin/
cp -p /sbin/nandwrite sbin/
cp -p /lib/libc.so.6 /lib/ld-linux.so.2 lib/
A=`ps ax | egrep -v "\[|inetd|dropbear|getty|init|-sh|ps ax|PID|egrep|cut" | cut -c -5`
kill -9 $A
mount -o move /tmp/media/sda1 /tmp/root/media/sda1
mount -o move /sys /tmp/root/sys
chroot . /bin/busybox sh
cd /media/sda1/enigma2
busybox flash_eraseall /dev/mtd5
/media/sda1/nandwrite -a -p -m /dev/mtd5 uImage
busybox flash_eraseall /dev/mtd6
/media/sda1/nandwrite -a -o /dev/mtd6 e2yaffs2.img
cd /
busybox umount /media/sda1
spark_fp -L 0 -L 1 -w 1
Ich weiss nicht, ob das jetzt wirklich keine Seiteneffekte mit sich bringt oder ob's unter irgendwelchen Rahmenbedingungen doch nicht geht. Jedenfalls bootet's und läuft.

Wer's ausprobiert, sollte sich darüber im Klaren sein, dass auch was schiefgehen kann und bekommt von mir kein Mitleid.

(Edit: nandwrite aus mtd-utils 1.3.1 tut für yaffs2, downgrade in meinem GIT ist erfolgt)
Zuletzt geändert von martii am Samstag 15. September 2012, 09:59, insgesamt 1-mal geändert.
dietmarw
Contributor
Beiträge: 1833
Registriert: Mittwoch 10. April 2002, 15:39

Re: Spark Onlineupdate

Beitrag von dietmarw »

erstmal vielen dank dafür schon mal..

es wäre echt genial wenn das einer zur "marktreife" weiterentwickeln würde,
ich verstehe da leider zu wenig von..
Download Bereiche für DBox2, TD und Spark Distributionen
http://dietmarw.polsum.net
http://dietmarw.trale.de (r.i.p.)
dietmarw
Contributor
Beiträge: 1833
Registriert: Mittwoch 10. April 2002, 15:39

Re: Spark Onlineupdate

Beitrag von dietmarw »

ist schon schade, das online-updates die auf der db2 zehn jahre lang gut funktioniert haben
auf der spark scheinbar nicht mehr nützlich sind..

so kann man "otto-normal-verbraucher" auch zu "anderen" distributionen treiben.
Download Bereiche für DBox2, TD und Spark Distributionen
http://dietmarw.polsum.net
http://dietmarw.trale.de (r.i.p.)
martii
Einsteiger
Einsteiger
Beiträge: 217
Registriert: Donnerstag 14. Juni 2012, 09:39

Re: Spark Onlineupdate

Beitrag von martii »

dietmarw hat geschrieben:ist schon schade, das online-updates die auf der db2 zehn jahre lang gut funktioniert haben
auf der spark scheinbar nicht mehr nützlich sind..
So schlimm ist's nun doch nicht. Es muss nur jemand tun. In meine(n) Clone(s) habe ich den OPKG-Manager von dbt drin, der (nach einer kleinen Änderung der "opkg-cl"-Argumente) auch funktioniert. Sprich, ich habe da jetzt einfach mal testweise bei mir im LAN das pkgs/opkg per Web zugänglich gemacht, die pkgs/opkg/Packages[.gz] erzeugt, die /etc/opkg/opkg.conf auf dem Receiver angelegt und das tat dann hinreichend, um über die GUI tcpdump installieren zu können (und mehr hab ich nicht überprüft).

Aber selbstverständlich bringt das alles nur was, wenn sich tatsächlich jemand die Arbeit macht, die Pakete irgendwo konsistent zur Verfügung zu stellen.

Ciao,

martii
dbt
Administrator
Beiträge: 2675
Registriert: Donnerstag 28. September 2006, 19:18

Re: Spark Onlineupdate

Beitrag von dbt »

martii hat geschrieben:In meine(n) Clone(s) habe ich den OPKG-Manager von dbt drin, der (nach einer kleinen Änderung der "opkg-cl"-Argumente) auch funktioniert. Sprich, ich habe da jetzt einfach mal testweise bei mir im LAN das pkgs/opkg per Web zugänglich gemacht, die pkgs/opkg/Packages[.gz] erzeugt, die /etc/opkg/opkg.conf auf dem Receiver angelegt und das tat dann hinreichend, um über die GUI tcpdump installieren zu können (und mehr hab ich nicht überprüft).
Also prinzipiell geht das auch, zumal ich das nur für meine Zwecke mal schnell hingebaut hatte, nur hatte ich ja schon mal erwähnt, dass man den Manager für den "echten" Gebrauch, also für den Otto Normalverbraucher, noch erweitern müsste. zB. Müsste man überwachen, ob das mit dem Speicherplatz hinhaut, oder nur solche Sachen zur Auswahl angezeigt werden, die auch "gefahrlos" installiert werden können. Also etwas flexibler müsste das dann halt schon noch werden. Prinzipiell sollte das schon zu machen sein.
martii
Einsteiger
Einsteiger
Beiträge: 217
Registriert: Donnerstag 14. Juni 2012, 09:39

Re: Spark Onlineupdate

Beitrag von martii »

In meinem -MP-Clone habe ich den OPKG-Manager überarbeitet, so dass eine Massentauglichkeit m.E. schon eher gegeben wäre: Es gibt einen Upgrade-Menüpunkt, das Menü wird abhängig vom Paketstatus angepasst, die opkg-cl-Ausgaben werden angezeigt. Checks, z.B. auf Speicherplatz, sind bewusst keine drin. Das wäre IMHO eher Aufgabe von opkg-cl, da aufzupassen.

Ciao,

martii
dbt
Administrator
Beiträge: 2675
Registriert: Donnerstag 28. September 2006, 19:18

Re: Spark Onlineupdate

Beitrag von dbt »

martii hat geschrieben:...Checks, z.B. auf Speicherplatz, sind bewusst keine drin. Das wäre IMHO eher Aufgabe von opkg-cl, da aufzupassen.
Ja Sicher, diesbezüglich meinte ich ja genau die Interaktionen mit opkg-cl, um diese auf die Benutzerführung umzulegen. Nochmal das Rad neu zu erfinden, wäre ja nicht so toll. :wink:
doc
Contributor
Beiträge: 1623
Registriert: Donnerstag 10. Januar 2002, 20:03

Re: Spark Onlineupdate

Beitrag von doc »

opkg-cl ist das reine Tool für die CommandLine, da kann man die Infos auch alle $irgendwie abgreifen aber das kann nicht Sinn der Übung sein. Als API gibt es die libopkg welche jedoch auch noch sehr rudimentär ist. Um überhaupt dies mal durchforsten zu können hatte ich mir da mal doxygen [1] reingefummelt. Die Patches [2] sind upstream jedoch nie applied worden. Naja, die Kommunikation ist etwas "zäh". Da ich bisher keine Intention hatte da weiter rum zu basteln habe ich es nicht weiter verfolgt. So machte das keinen Spaß.

Das opkg-cl ist meines Wissens bisher statisch gelinkt, also wird opkg ohne die libopkg paketiert. Ich hatte das mal umgebaut, aber wo das jetzt rumliegt ... ist aber ja kein Hexenwerk das umzustellen, wobei, da gab es noch mehr Probs wie die klassische Datei config.h die installiert wird. Auch das hatte ich angepasst, aber auch hier sieht man das Upstream anders. :roll: Ohne Aussicht auf eine erfolgreiche Zusammenarbeit hatte ich mich anderen Dingen gewidmet. Kann den Kram mal zusammen suchen und auf Github/Gitourious pushen.

Keine Frage die libopkg ist bis jetzt nur auf Grundfunktionen benutzbar und müsste umgebaut werden, scheinbar hat außer uns keiner diese Probleme. In der libopkg gibt es z.B. alle Funktionen die die Daten entsprechen sammeln, wie die Größe des installierten Paketes [3] als auch Datum, Maintainer, md5, Plattform etc.
Ich will sagen, statt den Output von opkg-cl zu parsen sollte man die libopkg nutzen da dort schon alles drin ist, und wenn etwas fehlt oder verändert werden muss dann entsprechend anpassen.

[1] http://openmct.org/misc/libopkg/
[2] https://groups.google.com/forum/?fromgr ... up2zkVGBVA möglich das das nur für Google Mitglieder sichtbar ist
[3] http://openmct.org/misc/libopkg/structp ... fb63c624de
Na schönen Dank Herr Schwanke!
Ein toller Sommer! :-(
graugans
Interessierter
Interessierter
Beiträge: 79
Registriert: Sonntag 26. August 2012, 20:16

Re: Spark Onlineupdate

Beitrag von graugans »

Hi,
doc hat geschrieben:opkg-cl ist das reine Tool für die CommandLine, da kann man die Infos auch alle $irgendwie abgreifen aber das kann nicht Sinn der Übung sein. Als API gibt es die libopkg welche jedoch auch noch sehr rudimentär ist. Um überhaupt dies mal durchforsten zu können hatte ich mir da mal doxygen [1] reingefummelt. Die Patches [2] sind upstream jedoch nie applied worden. Naja, die Kommunikation ist etwas "zäh". Da ich bisher keine Intention hatte da weiter rum zu basteln habe ich es nicht weiter verfolgt. So machte das keinen Spaß.
Ich bin ganz Deiner Meinung. Ich habe die libopkg in Neutrino eingebunden. Dies ist mir allerdings erst nach dem Patchen selbiger gelungen:
Bug-Eintrag beim opkg Projekt

Da die lib ein globales Symbol conf exportiert welches mit Neutrino kollidiert. Das habe ich in opkg_conf_ umbenannt.

Danach funktioniert die lib auch nicht out of the box man muss jedesmal die globale config sichern und wiederherstellen sonst crash die lib. Da gibt es einen Bug in der Initialisierung. Den wollte ich aber erst reporten sobald irgendeine Reaktion auf meinen ersten Bug stattgefunden hat ;-)

Theoretisch könnte man die Symbole auch beim Linken "verstecken" wie es im Makefile.am auch vorgesehen ist:

Code: Alles auswählen

# make sure we only export symbols that are for public use
#libopkg_la_LDFLAGS = -export-symbols-regex "^opkg_.*"
Dann müsste nur noch das Initialisieren gefixt werden...
doc hat geschrieben: Das opkg-cl ist meines Wissens bisher statisch gelinkt, also wird opkg ohne die libopkg paketiert. Ich hatte das mal umgebaut, aber wo das jetzt rumliegt ... ist aber ja kein Hexenwerk das umzustellen, wobei, da gab es noch mehr Probs wie die klassische Datei config.h die installiert wird. Auch das hatte ich angepasst, aber auch hier sieht man das Upstream anders. :roll: Ohne Aussicht auf eine erfolgreiche Zusammenarbeit hatte ich mich anderen Dingen gewidmet. Kann den Kram mal zusammen suchen und auf Github/Gitourious pushen.

Keine Frage die libopkg ist bis jetzt nur auf Grundfunktionen benutzbar und müsste umgebaut werden, scheinbar hat außer uns keiner diese Probleme. In der libopkg gibt es z.B. alle Funktionen die die Daten entsprechen sammeln, wie die Größe des installierten Paketes [3] als auch Datum, Maintainer, md5, Plattform etc.
Ich will sagen, statt den Output von opkg-cl zu parsen sollte man die libopkg nutzen da dort schon alles drin ist, und wenn etwas fehlt oder verändert werden muss dann entsprechend anpassen.
Ich habe einen Entwurf eine Klasse erstellt welche die libopkg wrappt und Handler für eine Fortschrittsanzeige bereitstellt:
opkg_manager.h
opkg_manager.cpp

Mir ist leider ein komplettes Buildsystem dazwischen gekommen :lol: ansonsten hätte ich an dem Thema weitergearbeitet.

Also wir können das Thema gerne weiter bearbeiten.

Das OpenWrt Projekt (luci)verfolgt übrigens ebenfalls den Ansatz den Output zu parsen. Was angesichts des aktuellen Zustands der Lib vermutlich auch der praktikabelste ist.
flk
Contributor
Beiträge: 292
Registriert: Donnerstag 21. November 2002, 05:32
Box 1: AX HD51
Image: tuxbox

Re: Spark Onlineupdate

Beitrag von flk »

Mir persönlich reicht opkg-cl aus, trotzdem finde ich, dass das eine wichtige Erweiterung für Neutrino-MP wäre. Wenn ihr da was auf die Beine stellen könnt, wäre das :up: