Yadi Script und Online Update funktion?

Alles eine Frage des Images
Boxilla
Interessierter
Interessierter
Beiträge: 67
Registriert: Sonntag 5. September 2004, 17:09

Yadi Script und Online Update funktion?

Beitrag von Boxilla »

Hi,

ich hab im Yadi script diese pasage gefunden und werde daraus nicht schlau. (will eigentlich nur ein Neutrino machen)

# Enigma-Upgrade-Patch
$SCRIPTS/y_patch.sh -p $CVS/apps/tuxbox/enigma/src/upgrade.cpp $CHANGE_DIR/enigma/upgrade.cpp.diff

Code: Alles auswählen

--- /home/foer06/yadi/tuxbox-cvs/apps/tuxbox/enigma/src/upgrade.cpp.orig	2004-09-28 22:08:21.000000000 +0200
+++ /home/foer06/yadi/tuxbox-cvs/apps/tuxbox/enigma/src/upgrade.cpp	2004-12-20 16:04:29.427184720 +0100
@@ -25,8 +25,8 @@
 #include <sys/ioctl.h>
 #include <sys/mount.h>
 
-#define TMP_IMAGE "/tmp/root.cramfs"
-#define TMP_IMAGE_ALT "/tmp/cdk.cramfs"
+#define TMP_IMAGE "/tmp/root.squashfs"
+#define TMP_IMAGE_ALT "/tmp/cdk.squashfs"
 #define TMP_CHANGELOG "/tmp/changelog"
 
 class ProgressWindow: public eWindow
@@ -545,8 +545,8 @@
 				case 1:   // d-box2
 				case 2:
 				case 3:
-					strcpy(mtd,"/dev/mtd/2");
-					mtdsize=0x6e0000;
+					strcpy(mtd,"/dev/mtd/1");
+					mtdsize=0x640000;
 					break;
 				case 5:   // dm7000
 				case 6:   // dm56xx

$SCRIPTS/y_patch.sh -p $CVS/apps/tuxbox/neutrino/src/gui/update.cpp $CHANGE_DIR/neutrino/update.cpp.diff

Code: Alles auswählen

--- /home/foer06/yadi/tuxbox-cvs/apps/tuxbox/neutrino/src/gui/update.cpp.orig	2004-11-22 16:18:36.000000000 +0100
+++ /home/foer06/yadi/tuxbox-cvs/apps/tuxbox/neutrino/src/gui/update.cpp	2004-12-20 14:52:48.589998768 +0100
@@ -79,7 +79,7 @@
 #define RELEASE_CYCLE                  "2.0"
 #define FILEBROWSER_UPDATE_FILTER      "squashfs"
 #define MTD_OF_WHOLE_IMAGE             4
-#define MTD_DEVICE_OF_UPDATE_PART      "/dev/mtd/2"
+#define MTD_DEVICE_OF_UPDATE_PART      "/dev/mtd/1"
 #else
 #define LIST_OF_UPDATES_LOCAL_FILENAME "cramfs.list"
 #define UPDATE_LOCAL_FILENAME          "update.cramfs"
Und zwar habe ich versucht, ein Image (root.img in squashfs), was auf meinem Webspace liegt per "Software Aktualisierung" neu zu flashen. Aber das ganze klappt nicht so wie ich mir das vorstelle. Das Image erkennt die *.list liest sie ein und läd dann nach auswahl das root.img nach /tmp.

Nun heisst das was dann in /tmp liegt update.cramfs (obwohls ja eigentlich ein squashfs ist) und direkt nach dem Download kommt die meldung "Das Image ist fehlerhaft".
Und im Bootmanager kommt

Code: Alles auswählen

internet version: 0200200502181505
get update (url): http://blablabla/root.img - /var/tmp/update.cr
amfs
superblock magic not found
flashcheck returned: -3
Kann mir da einer nen Tip geben und erklären wieso das plötzlich cramfs heisst?

thx Boxilla
ALexH
Image-Team
Beiträge: 146
Registriert: Dienstag 10. September 2002, 20:25

Beitrag von ALexH »

Kann mir da einer nen Tip geben und erklären wieso das plötzlich cramfs heisst?
Das ist Absicht, um ein Online-Update unter Neutrino zu verhindern, da Neutrino keine Squashfs-Images testen kann (nur cramfs-Images). Würde ein Download unter Neutrino fehlschlagen und das Image trotzdem geflashed (Neutrino besitzt, wie schon erwähnt, keine Möglichkeit, dies bei Squashfs-Images zu erkennen), so bootet die Box nach dem Flashen nicht mehr. Enigma überprüft übrigens nicht das Image selbst sondern nur dessen MD5. Daher ist dort auch egal, welches Filesystem vorliegt.
Boxilla
Interessierter
Interessierter
Beiträge: 67
Registriert: Sonntag 5. September 2004, 17:09

Beitrag von Boxilla »

Die gefahr das dabei was schief geht ist mir eigentlich bewust und würde mich nicht weiter stören. Wie kann man denn das wieder zum Laufen bringen.
mogway
Semiprofi
Semiprofi
Beiträge: 1287
Registriert: Montag 30. Dezember 2002, 08:02

Beitrag von mogway »

In dem du eine Download URL in /var/etc/squashfs.urls einträgst. ;)

Gruß
mogway
Gruss
mogway
Boxilla
Interessierter
Interessierter
Beiträge: 67
Registriert: Sonntag 5. September 2004, 17:09

Beitrag von Boxilla »

Häämmm??? :gruebel:


Der Download klappt
Das was runter geladen wird wird nur aus update-cramfs in /tmp abgelegt und wird nicht vom Image geflasht. Was soll das mit dem Link zu tun haben?
mogway
Semiprofi
Semiprofi
Beiträge: 1287
Registriert: Montag 30. Dezember 2002, 08:02

Beitrag von mogway »

Hmmm, hab mir mal die update.cpp angesehen. Das sollte als "update.squashfs" gespeichert werden.

Code: Alles auswählen

#ifdef SQUASHFS
#define LIST_OF_UPDATES_LOCAL_FILENAME "squashfs.list"
#define UPDATE_LOCAL_FILENAME          "update.squashfs"
#define RELEASE_CYCLE                  "2.0"
#define FILEBROWSER_UPDATE_FILTER      "squashfs"
#define MTD_OF_WHOLE_IMAGE             4
#define MTD_DEVICE_OF_UPDATE_PART      "/dev/mtd/1"
#else

[...]

bool CFlashUpdate::getUpdateImage(const std::string & version)
{
        CHTTPTool httpTool;
        httpTool.setStatusViewer(this);

        showStatusMessageUTF(std::string(g_Locale->getText(LOCALE_FLASHUPDATE_GETUPDATEFILE)) + ' ' + version); // UTF-8

        printf("get update (url): %s - %s\n", filename.c_str(), gTmpPath UPDATE_LOCAL_FILENAME);
        return httpTool.downloadFile(filename, gTmpPath UPDATE_LOCAL_FILENAME, 40 );
}
Edit: Läuft hier übrigends lokal auch. Sprich es sollte gehen. ;)

Gruß
mogway
ChakaZulu
Developer
Beiträge: 457
Registriert: Sonntag 23. März 2003, 00:39

Beitrag von ChakaZulu »

ALexH hat geschrieben:
Kann mir da einer nen Tip geben und erklären wieso das plötzlich cramfs heisst?
Das ist Absicht, um ein Online-Update unter Neutrino zu verhindern, da Neutrino keine Squashfs-Images testen kann (nur cramfs-Images). Würde ein Download unter Neutrino fehlschlagen und das Image trotzdem geflashed (Neutrino besitzt, wie schon erwähnt, keine Möglichkeit, dies bei Squashfs-Images zu erkennen), so bootet die Box nach dem Flashen nicht mehr. Enigma überprüft übrigens nicht das Image selbst sondern nur dessen MD5. Daher ist dort auch egal, welches Filesystem vorliegt.
Was war nochmal der Grund dafür, dass Neutrino keinen MD5 check macht? Ich dachte da mal was gelesen zu haben, aber habe mit der Suchfunktion nichts gefunden.

ciao,

ChakaZulu
ALexH
Image-Team
Beiträge: 146
Registriert: Dienstag 10. September 2002, 20:25

Beitrag von ALexH »

Was war nochmal der Grund dafür, dass Neutrino keinen MD5 check macht? Ich dachte da mal was gelesen zu haben, aber habe mit der Suchfunktion nichts gefunden.
Es hat sich, so viel ich weiß, einfach noch niemand gefunden, der das implementiert.
Gorcon
Tuxboxer
Tuxboxer
Beiträge: 5873
Registriert: Samstag 23. Februar 2002, 22:46

Beitrag von Gorcon »

Dann wirds aber Zeit dies zu tun. :gruebel:
Bild

Gruß Gorcon
JtG-Riker
Image-Team
Beiträge: 1015
Registriert: Freitag 7. Februar 2003, 18:37

Beitrag von JtG-Riker »

ChakaZulu hat geschrieben:
ALexH hat geschrieben:
Kann mir da einer nen Tip geben und erklären wieso das plötzlich cramfs heisst?
Das ist Absicht, um ein Online-Update unter Neutrino zu verhindern, da Neutrino keine Squashfs-Images testen kann (nur cramfs-Images). Würde ein Download unter Neutrino fehlschlagen und das Image trotzdem geflashed (Neutrino besitzt, wie schon erwähnt, keine Möglichkeit, dies bei Squashfs-Images zu erkennen), so bootet die Box nach dem Flashen nicht mehr. Enigma überprüft übrigens nicht das Image selbst sondern nur dessen MD5. Daher ist dort auch egal, welches Filesystem vorliegt.
Was war nochmal der Grund dafür, dass Neutrino keinen MD5 check macht? Ich dachte da mal was gelesen zu haben, aber habe mit der Suchfunktion nichts gefunden.

ciao,

ChakaZulu

Problem is das Neutrino durch den fehlenden check ( bei cramfs über libcramfs) nicht merkt was man flasht, also ne tüte Chips geht auch :) und man kann sich denken was dabei rauskommmt wenn es nun schon genug Probleme beim updaten gibt, muss ja nur beim download was scheif sein und die Box merkt es nicht.

Man müsste z.B. dem squashfs irgend eine crc einbauen wie der beim Cramfs den superblock den neutrino dann checken kann. Ist übrigens der Grund wieso ich die Jtg Images noch nicht auf SquashFS umgestellt habe...


Gruß Riker
Gorcon
Tuxboxer
Tuxboxer
Beiträge: 5873
Registriert: Samstag 23. Februar 2002, 22:46

Beitrag von Gorcon »

Wenn ich die Datei per Hand einspiele ist es doch genau das gleiche Risiko. :gruebel:
Könnte man sonst nicht die Datei vorher mit tar.gz packen? Wenn sie nicht i.O. ist lässt sie sich doch garnicht erst entpacken unddamit auch nicht flashen. Oder sehe ich das falsch?
Gruß Gorcon
Boxilla
Interessierter
Interessierter
Beiträge: 67
Registriert: Sonntag 5. September 2004, 17:09

Beitrag von Boxilla »

Zuerst mal danke für die Hilfe.

Also von seiten Image und dem squashfs.urls habe ich keine Bedenken das was flasches auf die Box kommt. Den Link legt man ja selber an. Klar ist dann noch das Porblem, das man abchecken sollte, ob das was man geladen hat, auch wirklich komplett angekommen ist. Das sollte doch eigentlich garnicht so schwer sein. Man kann ja anhand der Datei grösse, byte genau Abchecken. Ist zwar nur proformhalber diese Kontrolle, aber mehr als dann doch mit dem Bootmanager zu flashen, kann ja im grunde nicht passieren.

Und das ist immer das Risiko eines Updates. Daher macht m,an ja auch vorher nochmals eine Sicherrung.
Capt.Trips
Einsteiger
Einsteiger
Beiträge: 200
Registriert: Mittwoch 23. Juli 2003, 21:52

Beitrag von Capt.Trips »

Boxilla hat geschrieben:Daher macht m,an ja auch vorher nochmals eine Sicherrung.
vorbildlich :) !!! aber machts auch jeder ... glaub kaum!
mfG,
Capt.Trips
Sagem dBox2
Avia 600 1xI Kabel
JtG-Riker
Image-Team
Beiträge: 1015
Registriert: Freitag 7. Februar 2003, 18:37

Beitrag von JtG-Riker »

Problem is einfach das man das DAU fähig machen muss, nix gegen die User, aber es sind eben eine Menge die sich nicht mit dem Kram auskennen, und deswegen sollte man da keine 0815 Lösung bauen, ein tar.gz geht auch nicht, wie soll Neutrino das wissen wo da was zu checken ist.

Die saubere Lösung wäre die libcramfs auf Squahsfs zu erweitern, event bei Squashfs eben einen Superblock Header einbauen wie es bei cramfs ist....

Alles andere wär unsinn.


Gruß Riker
essu
Tuxboxer
Tuxboxer
Beiträge: 2452
Registriert: Montag 21. Oktober 2002, 10:04

Beitrag von essu »

JtG-Riker hat geschrieben:Die saubere Lösung wäre die libcramfs auf Squahsfs zu erweitern, event bei Squashfs eben einen Superblock Header einbauen wie es bei cramfs ist....
Ein einfacher md5sum-check würde reichen, das ist auch jetzt schon möglich, nur halt nicht aus der GUI heraus
Schon gelesen ???
ENIGMA-DOC
Capt.Trips
Einsteiger
Einsteiger
Beiträge: 200
Registriert: Mittwoch 23. Juli 2003, 21:52

Beitrag von Capt.Trips »

secup checkt das doch auch ab, oder?
mfG,
Capt.Trips
Sagem dBox2
Avia 600 1xI Kabel
essu
Tuxboxer
Tuxboxer
Beiträge: 2452
Registriert: Montag 21. Oktober 2002, 10:04

Beitrag von essu »

Capt.Trips hat geschrieben:secup checkt das doch auch ab, oder?
Ja, ausserdem mounted es das Image und überprüft die Version.
Schon gelesen ???
ENIGMA-DOC
mb405
Tuxboxer
Tuxboxer
Beiträge: 2331
Registriert: Donnerstag 24. März 2005, 21:52

Beitrag von mb405 »

gelöscht
doppelpost
Zuletzt geändert von mb405 am Samstag 7. Mai 2005, 17:49, insgesamt 1-mal geändert.
mb405
Tuxboxer
Tuxboxer
Beiträge: 2331
Registriert: Donnerstag 24. März 2005, 21:52

Beitrag von mb405 »

ich hab grade mal was probiert.
ich hab per update ein root.img (mtd1.img) aus der box gezogen.
dann das ganze in update.cramfs umbenannt, und update auf ftp.
dann nach neuer version suchen.
dann kommt
"Die Releasezyklus version weicht ab. bitte zuerst neues komplett image installieren"

wenn ich jetzt wieder auf internet umstelle
dann lädt der die als update.cramfs, obwohl ja update.squashfs sein sollte ??
mb405
Tuxboxer
Tuxboxer
Beiträge: 2331
Registriert: Donnerstag 24. März 2005, 21:52

Beitrag von mb405 »

ich hab grad mal bischen nachgedacht.
gibt es nicht die möglichkeit, auf den server ein
-root.img (root partition)
-var.img (var partition)
-release.img (komplettimage)
zu legen, das dann jeweils ausgewählt werden kann.
root.img wird dann anschliesend als root (squashfs) geflasht, var.img als var (jffs2)
usw.

ist das nicht machbar für squashfs ??
und für jffs images das update weg lassen, da ja eh squashfs die zukunft ist. erstmal ohne check zum probiern
mb405
Tuxboxer
Tuxboxer
Beiträge: 2331
Registriert: Donnerstag 24. März 2005, 21:52

Beitrag von mb405 »

ich hab jetzt mal das update.cpp bisserl geändert
#define SQUASHFS // hab ich eingegeben

#ifdef SQUASHFS
#define LIST_OF_UPDATES_LOCAL_FILENAME "squashfs.list"
#define UPDATE_LOCAL_FILENAME "update.squashfs"
#define RELEASE_CYCLE "2.0"
#define FILEBROWSER_UPDATE_FILTER "squashfs"
#define MTD_OF_WHOLE_IMAGE 4
#define MTD_DEVICE_OF_UPDATE_PART "/dev/mtd/1"
nicht schön, aber es geht
nur wo wird das SQUASHFS definiert ????