"Bad Magic - umgehen"

Kreuzuebersetzer, Diskussion über Änderungen im Tuxbox-CDK und Tuxbox-CVS
JtG-Riker
Image-Team
Beiträge: 1015
Registriert: Freitag 7. Februar 2003, 18:37

"Bad Magic - umgehen"

Beitrag von JtG-Riker »

Villeicht könnte mal ins cvs mal eine Regel einbauen die eine Bad magic repariert/umgeht, wenn mein Snapshot defekt ist
kopiere ich immer aus cdkroot was ins Squashfs was nicht gestrippt ist und baue den Snapshot manuell neu, da ich sonst
nicht weis wie ich das reparieren kann.

Könnte man nicht eine regel einbauen die das automatisiert ?

Im Moment sehne ich mich echt nach "oldmake" zurück, das so im Moment aktuell zu halten ist eine riesen Hürde, ich blicke
kaum noch durch, hab auch öfters das Problem das irgendwelche alten Teile im Image landen obwohl sich im CVS das geändert hat.

Gruß Riker
tine1084
Einsteiger
Einsteiger
Beiträge: 160
Registriert: Freitag 8. September 2006, 14:58

Re: "Bad Magic - umgehen"

Beitrag von tine1084 »

Das hatte ich hier auch schon mal vorgeschlagen:
http://www.tuxbox.org/forum/viewt ... ic#p373716
dwilx

Re: "Bad Magic - umgehen"

Beitrag von dwilx »

tine1084 hat geschrieben:Das hatte ich hier auch schon mal vorgeschlagen:
http://www.tuxbox.org/forum/viewt ... ic#p373716
Das löst das Problem aber auch nicht wirklich. Weiß denn keiner woher diese BM's kommen?
MarcM
Foren-Moderator
Beiträge: 1119
Registriert: Sonntag 9. Juni 2002, 13:28

Re: "Bad Magic - umgehen"

Beitrag von MarcM »

dwilx

Re: "Bad Magic - umgehen"

Beitrag von dwilx »

Eine "fehlerbeseitigende" Endlösung ist das aber trotzdem nicht wirklich, oder hab ich da was übersehen. :gruebel:
MarcM
Foren-Moderator
Beiträge: 1119
Registriert: Sonntag 9. Juni 2002, 13:28

Re: "Bad Magic - umgehen"

Beitrag von MarcM »

joa.... die scheint immernoch nonpublic zu sein... Schade
tine1084
Einsteiger
Einsteiger
Beiträge: 160
Registriert: Freitag 8. September 2006, 14:58

Re: "Bad Magic - umgehen"

Beitrag von tine1084 »

Sowas müsste doch bestimmt irgendwie möglich sein oder?
Kann man nicht am ende das Image überprüfen lassen auf Bad Magics und wenn vorhanden dann automatisch eine Dummy Datei einfügen oder so? Ich mach das jetzt auch schon so aber manuell. Aber das würde sich bestimmt auch automatisieren lassen.
dwilx

Re: "Bad Magic - umgehen"

Beitrag von dwilx »

Das geht sicher, aber bekämpft nach wie vor nicht das eigentliche Problem. Bei Dateisystemen wie ex(fs) oder anderen gibts doch auch sowas wie repair tools. Wie machen die denn das, oder sind das andere Welten?
seife
Developer
Beiträge: 4189
Registriert: Sonntag 2. November 2003, 12:36

Re: "Bad Magic - umgehen"

Beitrag von seife »

Sag mir *genau*, was der BMON nicht mag, und ich mach dir ein Tool, was die Bad Magics verhindert.
dwilx

Re: "Bad Magic - umgehen"

Beitrag von dwilx »

seife hat geschrieben:Sag mir *genau*, was der BMON nicht mag, und ich mach dir ein Tool, was die Bad Magics verhindert.
Hilft das weiter, derget hat das dort etwas ausgeführt:
http://www.tuxbox-cvs.sourceforge.net/f ... 38#p259338
Ansonsten wäre das mal wahnsinnig toll, wenn du das machen könntest!
seife
Developer
Beiträge: 4189
Registriert: Sonntag 2. November 2003, 12:36

Re: "Bad Magic - umgehen"

Beitrag von seife »

Nein, das hilft nicht weiter, weil das, was derget da ausführt ist im checkimage schon mit drin. Das allein reicht aber nicht, um das zuverlässig zu fixen (checkimage meckert ja auch images an, die definitiv laufen).

Aber ich vermute, da wird sich auch keiner mehr ransetzen, die Nutzerbasis bröckelt ja (zum Glück) so langsam weg, und die, die noch am dbox-basteln interessiert sind, booten halt von Festplatte/CompactFlash :)
Barf
Developer
Beiträge: 1475
Registriert: Dienstag 4. Februar 2003, 22:02

Re: "Bad Magic - umgehen"

Beitrag von Barf »

JtG-Riker hat geschrieben:Villeicht könnte mal ins cvs mal eine Regel einbauen die eine Bad magic repariert/umgeht, wenn mein Snapshot defekt ist
kopiere ich immer aus cdkroot was ins Squashfs was nicht gestrippt ist und baue den Snapshot manuell neu, da ich sonst
nicht weis wie ich das reparieren kann.

Könnte man nicht eine regel einbauen die das automatisiert ?
tine1084 hat geschrieben:Kann man nicht am ende das Image überprüfen lassen auf Bad Magics und wenn vorhanden dann automatisch eine Dummy Datei einfügen oder so? Ich mach das jetzt auch schon so aber manuell. Aber das würde sich bestimmt auch automatisieren lassen.
Yup, sowas habe ich seit Jahren geplant. Es ist sinnvoll und machbar, nicht die volle Images zu überprüfen, sondern die partition Images. Nachteil ist dass diese Tests auf die (eigentlich) chipgeometrieunabhängige Dateien chiparchitechturabhängig getestet sein muss :o (Es gibt partitionsimages die in 1x-Images OK sind, aber in 2x-Images nicht (aber nicht umgekehrt, meines Wissens)). Um etwas einfacher diskutieren zu können betrachte ich vorübergehend nur den Fall flash-neutrino-jffs2-2x. Dafür patche ich erstmals checkImage.c:

Code: Alles auswählen

--- checkImage.c.orig   2009-06-04 16:43:05.000000000 +0200
+++ checkImage.c        2010-02-15 20:53:03.000000000 +0100
@@ -84,7 +84,7 @@
 int getFlashType(int fd, int imgsize)
 {
        int pos = CHECKOFFSET;
-       int checkIntervall = CHECKINTERVAL_1X;
+       int checkIntervall = CHECKINTERVAL_2X;
        unsigned char value[23];
 
     while ( pos <= imgsize)
(in eine produktive Version wäre es sinnvoll, eine chipgeometrieoption einzuführen)
sowie partition-images.mk:

Code: Alles auswählen

*** partition-images.mk~        Fri Aug  7 20:12:49 2009
--- partition-images.mk Mon Feb 15 20:33:00 2010
***************
*** 42,47 ****
--- 42,51 ----
  $(flashprefix)/root-enigma.jffs2 $(flashprefix)/root-lcars.jffs2 $(flashprefix)/root-null.jffs2: \
  $(flashprefix)/root-%.jffs2: $(flashprefix)/root-%-jffs2 $(hostprefix)/bin/mkfs.jffs2
        $(hostprefix)/bin/mkfs.jffs2 -x lzma -b -e 0x20000 --pad=0x7c0000 -r $< -o $@
+       until $(hostprefix)/bin/checkImage $@ ; do \
+               dd if=/dev/urandom of=$</bad_magic_payload count=1 bs=256; \
+               $(hostprefix)/bin/mkfs.jffs2 -x lzma -b -e 0x20000 --pad=0x7c0000 -r $< -o $@; \
+       done
  
  $(flashprefix)/root-radiobox.jffs2_lzma \
  $(flashprefix)/root-neutrino.jffs2_lzma \

Habe nicht ausführlich getestet, scheint aber zu funktionieren. Sicherlich kann rhabarber die andere Fälle implementieren :wink:

Zugegeben, dies wurde "das primitive Problem" nicht lösen, nur vermeiden. Das primitive Problem ist dass BMON (als universeller Bootloader) buggy ist, und auch "fixes" an mkXXXfs sind in diesem Sinn workarounds.
seife hat geschrieben:Sag mir *genau*, was der BMON nicht mag, und ich mach dir ein Tool, was die Bad Magics verhindert.
Das nenne ich selbstvertrauen!
seife hat geschrieben:... ist im checkimage schon mit drin. Das allein reicht aber nicht, um das zuverlässig zu fixen (checkimage meckert ja auch images an, die definitiv laufen).
checkImage liefert beweislich "false positives" (angemeckerte Images laufen trotzdem), meines Wissens aber niemals "false negatives" (nicht angemeckerte Images laufen nicht). Deswegen, kann jemand (seife?) enweder mkXXXfs so zu modifizieren, oder ein postprozessor schreiben, so dass die Images den checkImagetest erfolgreich absolvieren, dann hat er/sie das Problem gelöst.
dwilx

Re: "Bad Magic - umgehen"

Beitrag von dwilx »

Habe nicht ausführlich getestet, scheint aber zu funktionieren. Sicherlich kann rhabarber die andere Fälle implementieren :wink:

Zugegeben, dies wurde "das primitive Problem" nicht lösen, nur vermeiden. Das primitive Problem ist dass BMON (als universeller Bootloader) buggy ist, und auch "fixes" an mkXXXfs sind in diesem Sinn workarounds.
Na immerhin, das wäre mal ein Anfang! :wink:
rhabarber1848
CDK-Experte
Beiträge: 4335
Registriert: Donnerstag 3. April 2008, 14:05

Re: "Bad Magic - umgehen"

Beitrag von rhabarber1848 »

Hier der Patch, der Barfs Ideen in die Tat umsetzt: EDIT: Patch ist im CVS

Dieser Teil kommt später:
Barf hat geschrieben:

Code: Alles auswählen

--- checkImage.c.orig   2009-06-04 16:43:05.000000000 +0200
+++ checkImage.c        2010-02-15 20:53:03.000000000 +0100
(in eine produktive Version wäre es sinnvoll, eine chipgeometrieoption einzuführen)
Barf
Developer
Beiträge: 1475
Registriert: Dienstag 4. Februar 2003, 22:02

Re: "Bad Magic - umgehen"

Beitrag von Barf »

Vielleicht sollte man zufügen, dass der Patch nicht eine ganz zufriedenstellende Lösung darstellt, ins besonderes nicht für der, der sich nur für 1x-Images intressiert. Nicht alle 2x-bad Root-Partitione sind 1x-bad.

Vielleicht wäre die bestmögligste Lösung ein configure-option --enable-badmagic-workaround=[1x,2x], (default egal) wobei checkImage eine Chipgeometrie-Kommandozeilenoption bekommt. (Und dann checkImage in checkimage umbenennen...)
rhabarber1848
CDK-Experte
Beiträge: 4335
Registriert: Donnerstag 3. April 2008, 14:05

Re: "Bad Magic - umgehen"

Beitrag von rhabarber1848 »

Mein Vorschlag wäre, alle checkImage-configure-Optionen zu entfernen,
"checkimage --chip=1|2" einzuführen, jedes einzelne Image zu testen
und bei Bedarf /bad_magic_payload hinzuzufügen, sodass immer
funktionierende Images gebaut werden.
rhabarber1848
CDK-Experte
Beiträge: 4335
Registriert: Donnerstag 3. April 2008, 14:05

Re: "Bad Magic - umgehen"

Beitrag von rhabarber1848 »

Patch aktualisiert, wenn
!!! Flash size exceeded, if you flash this image you may get 'no system' !!!
auftritt, führt der Patch zu einer Endlosschleife,
deshalb habe ich folgenden Code hinzugefügt:

Code: Alles auswählen

if [ $? = "3" ]; then exit; fi;\
rhabarber1848
CDK-Experte
Beiträge: 4335
Registriert: Donnerstag 3. April 2008, 14:05

Re: "Bad Magic - umgehen"

Beitrag von rhabarber1848 »

Barf hat geschrieben: wobei checkImage eine Chipgeometrie-Kommandozeilenoption bekommt.
Patch aktualisiert und o.g. Veränderung eingebaut.
Testet es mal aus, bei mir wird ein kaputtes Image automatisch repariert :)
check 'root-neutrino.squashfs' for bad magic bytes.
!!! If you flash this image these bytes cause 'no system' !!!
1+0 Datensätze ein
1+0 Datensätze aus
256 Bytes (256 B) kopiert, 0,000253005 s, 1,0 MB/s
Creating big endian 3.0 filesystem on /root/tuxbox/work_glibc/image/cdkflash/root-neutrino.squashfs, block size 65536.
[...]
check 'root-neutrino.squashfs' for bad magic bytes.
No bad magic bytes found
dbt
Administrator
Beiträge: 2675
Registriert: Donnerstag 28. September 2006, 19:18

Re: "Bad Magic - umgehen"

Beitrag von dbt »

Habs jetzt ein paar mal laufen lassen, nur jetzt hab' ich sowas wie einen Vorführeffekt, also bisher gabs nichts zu reparieren :gruebel: :wink: Melde aber wenn sich was tut!
dietmarw
Contributor
Beiträge: 1833
Registriert: Mittwoch 10. April 2002, 15:39

Re: "Bad Magic - umgehen"

Beitrag von dietmarw »

habs seit heute auch mal eingebaut, mal sehen wie es die nächsten tage läuft..
bruno71
Interessierter
Interessierter
Beiträge: 84
Registriert: Freitag 25. Dezember 2009, 12:03

Re: "Bad Magic - umgehen"

Beitrag von bruno71 »

@rhabarber1848,

könntest du bitte den patch noch mal aktualisieren?

Code: Alles auswählen

patching file cdk/configure.ac
Hunk #1 succeeded at 947 (offset 2 lines).
bruno71
Interessierter
Interessierter
Beiträge: 84
Registriert: Freitag 25. Dezember 2009, 12:03

Re: "Bad Magic - umgehen"

Beitrag von bruno71 »

Habe es gerade getestet und scheint gut zu funktionieren. Von mir aus kann es ins cvs. :dafuer:
check 'root-neutrino.squashfs' for bad magic bytes.
!!! If you flash this image these bytes cause 'no system' !!!
1+0 Datensätze ein
1+0 Datensätze aus
256 Bytes (256 B) kopiert, 0,00012564 s, 2,0 MB/s
Creating big endian 3.0 filesystem on /home/bruno/dbox2/cdkflash/root-neutrino.squashfs, block size 65536.

...

check 'neutrino-squashfs.img2x' for bad magic bytes.
No bad magic bytes found
dietmarw
Contributor
Beiträge: 1833
Registriert: Mittwoch 10. April 2002, 15:39

Re: "Bad Magic - umgehen"

Beitrag von dietmarw »

scheint gut zu funktionieren..
rhabarber1848
CDK-Experte
Beiträge: 4335
Registriert: Donnerstag 3. April 2008, 14:05

Re: "Bad Magic - umgehen"

Beitrag von rhabarber1848 »

FlatTV
Einsteiger
Einsteiger
Beiträge: 110
Registriert: Freitag 9. Januar 2009, 18:22

Re: "Bad Magic - umgehen"

Beitrag von FlatTV »

Hier funktioniert es nicht!
Ich muss manuell beenden

Code: Alles auswählen

check 'root-neutrino.jffs2' for bad magic bytes.
[41m!!! If you flash this image these bytes cause 'no system' !!![0m
1+0 Datensätze ein
1+0 Datensätze aus
256 Bytes (256 B) kopiert, 0,00155237 s, 165 kB/s
check 'root-neutrino.jffs2' for bad magic bytes.
[41m!!! If you flash this image these bytes cause 'no system' !!![0m
1+0 Datensätze ein
1+0 Datensätze aus
256 Bytes (256 B) kopiert, 0,000577607 s, 443 kB/s
check 'root-neutrino.jffs2' for bad magic bytes.
[41m!!! If you flash this image these bytes cause 'no system' !!![0m
1+0 Datensätze ein
1+0 Datensätze aus
256 Bytes (256 B) kopiert, 0,000201111 s, 1,3 MB/s
check 'root-neutrino.jffs2' for bad magic bytes.
[41m!!! If you flash this image these bytes cause 'no system' !!![0m
1+0 Datensätze ein
1+0 Datensätze aus
256 Bytes (256 B) kopiert, 0,000193464 s, 1,3 MB/s
check 'root-neutrino.jffs2' for bad magic bytes.
[41m!!! If you flash this image these bytes cause 'no system' !!![0m
1+0 Datensätze ein
1+0 Datensätze aus
.
.
.
1+0 Datensätze ein
1+0 Datensätze aus
256 Bytes (256 B) kopiert, 0,000556541 s, 460 kB/s
check 'root-neutrino.jffs2' for bad magic bytes.
[41m!!! If you flash this image these bytes cause 'no system' !!![0m
make: *** Datei »/home/FlatTV/Image/dbox2/cdkflash/root-neutrino.jffs2« wird gelöscht
make: *** [/home/FlatTV/Image/dbox2/cdkflash/root-neutrino.jffs2] Unterbrechung