[Info] modfs - SquashFS-Image (AVM-Firmware) ändern für NAND-basierte FRITZ!Boxen

Fehlt halt die Unterstützung für SQFS4 (bzw. den ext2-Wrapper) der 06.35, wenn da schon 06.35 auf der Box läuft.

Von 06.2x aus auf 06.35 funktioniert ja auch (mit der neueren Version).

Ich bin dran (habe nur Deine PN nicht beantwortet, weil es noch nichts gab) ... wobei "habe es auf dem Zettel" wahrscheinlich präziser wäre - im Moment fehlt mir etwas der Antrieb, da ich immer wieder auf 06.24 zurück kann, wenn ich neue Sachen für das Update in Richtung 06.35 testen will.

Ich versuche mich zusammenzureißen und das noch zu einem halbwegs vernünftigen Abschluß zu bringen. Aber das wird dann auch das letzte in "shell" sein ... das braucht dringend ein rewrite auf etwas Sinnvolles, 2.700 Zeilen Shell sind einfach zu unhandlich.
 
Fehlt halt die Unterstützung für SQFS4 (bzw. den ext2-Wrapper) der 06.35, wenn da schon 06.35 auf der Box läuft.

Von 06.2x aus auf 06.35 funktioniert ja auch (mit der neueren Version).

Stecke da nicht so drin in der Materie und weiß nicht wie groß der Aufwand ist.

Ich bin dran (habe nur Deine PN nicht beantwortet, weil es noch nichts gab) ... wobei "habe es auf dem Zettel" wahrscheinlich präziser wäre - im Moment fehlt mir etwas der Antrieb, da ich immer wieder auf 06.24 zurück kann, wenn ich neue Sachen für das Update in Richtung 06.35 testen will.

Ach mach dir keinen Kopf, war ja nur eine Nachfrage neulich ;-)

Ich könnte ja die Einstellungen sichern, Restore auf 6.24 und dann mit deinem Skript wieder auf 6.35 (halt dann in gepatcht) mit wieder einspielen der Einstellungen. Dann wäre ich auch am Ziel.

Aber du weißt ja wie das ist: Man will den Weg ohne große Arbeit in dem Fall ;-)


Ich versuche mich zusammenzureißen und das noch zu einem halbwegs vernünftigen Abschluß zu bringen. Aber das wird dann auch das letzte in "shell" sein ... das braucht dringend ein rewrite auf etwas Sinnvolles, 2.700 Zeilen Shell sind einfach zu unhandlich.

Ja ist "unhandlich" bei der Größe. Was würdest du denn als sinnvoller erachten?
 
Und "NoChecks" kann man nicht wieder einbauen ... wenn man einen passenden Editor nimmt, braucht das aber definitiv kein Mensch.
Wurde das eigentlich schon einmal hier im Forum beschrieben? Ich meine mich zu erinnern, dass in Deinem DOCIS Thread ein Teil dazu drin stand...:confused:
Ich glaube man brauchte einen HEX-Editor (zum setzen einiger Bits) aber wie löst man dann das Problem der Checksumme (war das die ganz am Ende?)...
 
Ja, entweder beim DOCSIS-Telnet über S44-hostname aus "compose" und "decompose" kopieren, da wird beim "compose" die Prüfsumme auch berechnet.

Aber wenn man ohnehin mit einem Editor an der Export-Datei ändern will (und nicht automatisch, was der eigentliche Einsatzzweck für die Bash-Skripte wäre), kann man ja auch gleich den FBEditor in einer passenden Version verwenden ... der hat hier ein eigenes Unterforum.
 
Von 06.2x aus auf 06.35 funktioniert ja auch (mit der neueren Version).
Wobei ja die 06.29 ausgenommen ist, denn mit der funktioniert es ja leider (noch) nicht ;) Ich habe es gerade probiert mit der "/7490/modfs.tgz" frisch vom Server.

Das "Extrahieren des Wurzeldateisystems aus dem Flash-Filesystem" klappt halt noch nicht. Aber ich habe gerade sowieso andere Probleme; meine DSL-Leitung ist seit gestern nämlich mal wieder schrott. Störung bei der Telekom ist gemeldet, kann aber zwei Wochen dauern, wie ich aus mehrfacher leidvoller Erfahrung weiß.
 
Sorry, dass ich noch nicht zurück gemeldet habe. Die Woche war sehr voll, da ich gerade einen neuen Job begonnen habe.
Ich habe das skript jetzt auch mit der update Option gestartet und laufe in das gleiche Problem wie schnurzelat.
Beim Entpacken des root-Dateisystems für die Modifikationen startet die box neu und das wars dann.
Werde auch mal ausprobieren, was passiert, wenn der stick mit ext3 formatiert ist und dann berichten.
 
Ich habe etwas mit BurningCrash getestet und mich anschließend entschlossen, eine komplette Protokollierung in eine Datei in das Skript einzubauen, um bei Fehlern besser reagieren zu können. Allerdings erfolgt die Protokollierung in eine temporäre Datei (mit den AVM-Tools für die Ringpuffer-Protokollierung) und das nutzt natürlich bei solchen kompletten Restarts eher nichts.

Wobei ich immer noch nicht weiß, wie diese bei Euch zustande kommen sollen ... das kann fast nur "memory pressure" sein und das sollte nach dem Neustart in der "crash.log" stehen. Wenn es etwas anderes ist, sollte das trotzdem in der crash.log stehen, wenn das nicht ein absoluter panischer Neustart ist.

Das neue Skript ist tatsächlich in Arbeit, auch wenn sich jetzt eine Woche lang nichts Neues für die Öffentlichkeit getan hat.
 
Auch mit ext2 kommt es zum gleichen Fehler.
Wie kann ich mir die crash.log denn anschauen. Sie existiert zwar in /var/flash/crash.log, ich kann sie mir aber weder mit cat ansehen noch sie mit cp kopieren.
Oder gibt es die Datei auch noch an anderer Stelle?
 
Oder gibt es die Datei auch noch an anderer Stelle?
Wenn Du das automatische Versenden von Fehlerberichten an AVM aktiviert hast, wird die wohl seit neuestem gelöscht, wenn der Bericht erstellt wurde.

Kannst Du mal das Skript mit "sh -x modfs ..." laufen lassen und die letzten Zeilen vor dem Reboot posten? Ich habe nicht mal eine Vorstellung, wo das so abstürzen will, daß es zum Reboot kommt.

Bitte auch noch mal angeben, von wo nach wo Du willst, ob meine Erinnerung 7362SL stimmt und wie Du den Aufruf machst.
 
So, es gibt jetzt eine neue Version ... die Szenarien, in denen ich sie bei mir erfolgreich getestet habe, stehen in #1.

Dabei habe ich immer eine USB-HDD mit einem nativen Linux-Filesystem verwendet (mein NAND-FS ist absichtlich bis auf 70 MB freien Speicher gefüllt), den gesamten Teil mit der Container-Datei auf einem FAT32- oder NTFS-Volume habe ich nicht erneut getestet.

Auch handelte es sich bei mir immer um die 7490, andere Modelle kann ich nicht selbst testen. Wenn jemand erfolgreich ein solches Gerät modifiziert hat (mit/für 06.30, das dürfte derzeit der häufigste "use case" sein), wäre ein kurzer Bericht nett, ich nehme dann in #1 noch eine Liste (bzw. Verweise auf) diese(r) Berichte auf.

Um die Fehlersuche etwas zu vereinfachen, habe ich eine Protokollierung in das Skript eingebaut, die die AVM-Tools zur Ringpuffer-Protokollierung verwendet.

Aktiviert wird das Debug-Logging über die Umgebungsvariable MODFS_DEBUG. Hat diese den Wert "1", wird in einen Ringpuffer von 8 KB Größe mit dem (Datei-)Namen des Skripts protokolliert. Der Puffer läßt sich über die zusätzliche Variable "MODFS_BUFSIZE=n" vergrößern (Angabe in KB), wobei ich Werte > 64 nicht getestet habe. Ein Aufruf mit Debug-Ausgabe könnte also so aussehen:
Code:
MODFS_DEBUG=1 MODFS_BUFSIZE=32 ./modfs update FRITZ.Box_7490.113.06.24.image
Tritt dann ein Fehler auf, kann man sich mit
Code:
showshringbuf modfs
diese Protokolldatei anzeigen lassen, sie über eine entsprechende Umleitung
Code:
showshringbuf modfs >/var/media/ftp/[I]my_usb_volume[/I]/modfs.debug
in einer Datei abspeichern und dann einer Fehlermeldung hinzufügen. Diese Protokollierung hilft natürlich bei spontanem Reboot einer Box auch nicht, aber da sehe ich die Ursache auch eher in allgemeinem Ressourcenmangel als in einem bestimmten Verhalten oder einer bestimmten Aktion des Skripts.

Ich hoffe auf Verständnis, wenn ich Fragen zu Problemen nur noch beantworte, wenn auch das entsprechende Protokoll als Anhang (bitte wirklich als Anhang und nicht in Code-Tags, das liest sich einfach lokal im Editor besser) in der Fehlermeldung enthalten ist (solange das Problem nicht die Protokollierung selbst betrifft).

Da es mir auf Dauer auch zu albern ist, weiterhin mit eigenen squashfs-tools in diesem Zusammenhang zu hantieren und inzwischen in Freetz das Erstellen der Tools für SquashFS4 und die Abarbeitung auf der FRITZ!Box ebenfalls enthalten ist, habe ich meine eigenen Versionen durch mit dem Freetz-Trunk erstellte ersetzt in der veröffentlichten Version. Damit sind die zur Übersetzung der Binärdateien im Archiv notwendigen Quelltexte im Freetz-Trunk zu finden. Solange man diese Tools nicht in ein Firmware-Image mit einbauen will, spielt auch die Größe der komplett statisch gelinkten Binaries für SquashFS4 keine entscheidende Rolle.

Für den Einbau in ein neues root-Filesystem verwende ich selbst trotzdem weiterhin meine Version, da es sehr unwahrscheinlich ist, daß ich damit jemals auf einer 7490 ein SquashFS-Image der Versionen 1 oder 2 oder 3 entpacken werde (für V3 gibt es eigene Files) und dieser Platz im Image verschenkt ist.

Die schlechte Nachricht ist ohnehin, daß es offenbar einen (für mich zumindest) noch ungeklärten Unterschied zwischen 06.35 und den Vorgänger-Versionen gibt ... es ist mir weder mit meinen eigenen Patches noch mit den über den Freetz-Trunk erstellten Binaries gelungen, eine nicht komplett statisch gelinkte Version der squashfs-tools für Version 4 unter der Version 06.35 auszuführen (es gibt nicht einmal eine ordentliche Fehlermeldung und auch mit "strace" ist auf Anhieb nichts zu sehen). Die schon im Okt. Sept. 2014 erstellten Tools (dynamisch gelinkt) für SquashFS-Version 3 funktionieren hingegen auch unter 06.35 problemlos. Ob das für neu erstellte Binaries der squashfs-tools in Version 3.4 ebenfalls gelten würde, wollte ich im Moment lieber nicht testen und erst einmal die neue Version von modfs zu einem definierten Stand bringen. Daher sind die enthaltenen Tools für SquashFS3 mit dem zu diesem Zeitpunkt gültigen Stand (wenn das da überhaupt schon in Freetz aufgenommen war, ansonsten (per Dekret) mit der ersten in Freetz verfügbaren Version für die Target-Tools) erzeugt.

EDIT: Die Anpassung der Beschreibung in README und README.ger im Paket steht immer noch in der ToDo-Liste ... das hebe ich mir für die nahenden langen Winternächte auf. Also besser hier lesen und die Informationen in diesen Dateien als veraltet ansehen.
 
Zuletzt bearbeitet:
Danke für die neue Version.

FRITZ!Box 7490 (1&1 Branding)
Habe es nochmal von 6.24 auf 6.30 getestet und dieses Mal hat alles ohne Probleme funktioniert. Habe die neue Firmware dabei automatisch aus dem Internet laden lassen und den internen NAND verwendet. Keine Probleme :)
 
Zuletzt bearbeitet:
Frage: Ist es auch möglich das Shadow-System (sprich das inaktive/reserved System zu modifizieren) ?

Code:
FB7490# df
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/root                49152     23352     25800  48% /wrapper
/dev/loop0               20928     20928         0 100% /
tmpfs                   122940      1252    121688   1% /var
tmpfs                   122940        40    122900   0% /dev
/dev/mtdblock4            2048       904      1144  44% /var/flash
/var/dev/nand           415744      7136    408608   2% /var/media/ftp


FB7490# cat /proc/mtd
dev:    size   erasesize  name
mtd0: 00400000 00020000 "kernel"
mtd1: 03000000 00020000 "filesystem"
mtd2: 00400000 00020000 "reserved-kernel"
mtd3: 03000000 00020000 "reserved-filesystem"
mtd4: 00200000 00020000 "config"
mtd5: 19600000 00020000 "nand-filesystem"
mtd6: 00040000 00001000 "urlader"
mtd7: 00060000 00001000 "tffs (1)"
mtd8: 00060000 00001000 "tffs (2)"


FB7490# cat /proc/partitions
major minor  #blocks  name
   7        0      20912 loop0
  31        0       4096 mtdblock0
  31        1      49152 mtdblock1
  31        2       4096 mtdblock2
  31        3      49152 mtdblock3
  31        4       2048 mtdblock4
  31        5     415744 mtdblock5
  31        6        256 mtdblock6
  31        7        384 mtdblock7
  31        8        384 mtdblock8

FB7490# mkdir /tmp/xyz

FB7490# mount -t yaffs2 /dev/mtdblock3 /tmp/xyz

FB7490# df
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/root                49152     23352     25800  48% /wrapper
/dev/loop0               20928     20928         0 100% /
tmpfs                   122940      1252    121688   1% /var
tmpfs                   122940        40    122900   0% /dev
/dev/mtdblock4            2048       904      1144  44% /var/flash
/var/dev/nand           415744      7136    408608   2% /var/media/ftp
/dev/mtdblock3           49152      1152     48000   2% /var/tmp/xyz

FB7490# ls -la /var/tmp/xyz
drwxr-xr-x    1 root     root          2048 Jul 26 21:04 .
drwxrwxrwx    7 root     root          1700 Jul 26 21:03 ..
drwx------    1 root     root          2048 Jul 26 21:04 lost+found

FB7490# umount /var/tmp/xyz

FB7490# cat /proc/sys/urlader/environment | grep linux_fs_start

FB7490# /etc/version
113.06.24
 
@splenditnet:
Jetzt irritierst Du mich etwas ... genau das macht das Skript ja. Das gerade laufende System kann natürlich nicht "on the fly" geändert werden.

Wenn die Frage eigentlich lauten sollte, ob das Dateisystem in der inaktiven Partition auch als Vorlage/Ausgangspunkt der Modifikationen dienen kann, lautet die Antwort: Nein. Dafür müßtest Du dann (wenn das originale AVM-Image nicht mehr zur Verfügung steht, denn das wäre natürlich der einfachste Weg) erst wieder ein tar-Archiv im richtigen Format daraus erstellen.

EDIT: Deine Ausgaben oben sehen aber so aus, als wäre die Box noch "neu", d.h. direkt mit 06.24 ausgeliefert. Dann erst mal ein Update auf irgendwas machen, notfalls auf die 06.25-Labor-Reihe bzw. auf die 06.29, wenn Du Dir beim Telnet-Daemon nicht zu helfen weißt. Dann kannst Du mit dem "bootmanager" wieder auf die 06.24 zurückschalten und dann auch modfs benutzen. Alternative ist das Setzen der notwendigen Einstellungen von Hand, in Deinem Falle fehlt ja nur die "linux_fs_start"-Angabe im Urlader. Wenn Du die auf "0" setzt, ist das dasselbe wie die fehlende Angabe, aber modfs ist zufrieden.

Den ganzen Aufstand mit einer fabrikneuen Box werde ich in modfs nicht auch noch veranstalten ... das sind mit zuviele Unbekannte, die da hineinspielen könnten. Wenn die Voraussetzungen nicht erfüllt sind (s. #1 weiter unten), streikt das Skript.
 
Zuletzt bearbeitet:
Als möglichen Test für Boxen, bei denen aus irgendwelchen bisher unerfindlichen Gründen ein Reboot mitten in der Verarbeitung erfolgt (das Skript enthält nur eine einzige Stelle mit einem "reboot"-Kommando und daher kann so ein Neustart eigentlich nicht innerhalb des Skripts ausgelöst werden, das müssen externe Ursachen (z.B. allg. Speichermangel) sein), könnte man noch das Beenden einiger AVM-Daemons vor der Abarbeitung von modfs in Erwägung ziehen.

Ein Aufruf von
Code:
prepare_fwupgrade start_tr069
sollte einen Großteil der AVM-Dienste herunterfahren und dabei aber das USB-Subsystem nicht anfassen (braucht man ja i.d.R. für die Abarbeitung von modfs).

Ich habe auch 10 Minuten nach der Ausführung dieses Aufrufs keinen automatischen Restart verzeichnet, damit ist da ein automatischer Start aufgrund eines Watchdogs für einen nunmehr fehlenden Dienst eher nicht anzunehmen.

Bei mir ergibt sich auf der 7490 nach diesem Kommando ein freier Speicherplatz von >115 MB im tmpfs, dabei läuft ein Syslog-Daemon, eine dropbear-Instanz, ein cron-Daemon und ein Skript zur Anzeige des VPN-Zustands per LED von mir selbst noch weiter ... zusätzlich zum dsld und avmike von AVM (womit die Internet-Verbindung immer noch steht, sogar davfs2 läuft noch); nur Telefonie, DECT, AHA, usw. sind raus aus dem Spiel und können nicht mehr dazwischenfunken.

EDIT: Was man in der Hitze des Gefechts auch leicht vergißt ... ich habe tatsächlich auf der HDD auch noch eine Swap-Partition, die vom FRITZ!OS automatisch eingebunden wird. Wenn die den "Speicherdruck" bei mir lindern sollte, kriege ich das ja nicht mal so richtig mit, solange ich nicht gezielt nach Paging-Errors schaue.
 
Zuletzt bearbeitet:
So jetzt auch mein Bericht:

Also ich habe die Labor 6.35 drauf und habe jetzt wieder meine Debug.cfg.

Gestartet ohne Parameter.

Bei mir führte das beim Versuch 1 zu einem Reboot der Box.

Erst nachdem ich (wie von PeterPawn auch geschrieben)

Code:
prepare_fwupgrade start_tr069

genutzt habe, lief das Skript direkt durch.

Voller Erfolg und Danke an PeterPawn
 
Hey PeterPawn,

ich habe das Ganze gerade auf meiner 7362SL durchlaufen lassen (Firmware 6.30, habe mir zuvor telnet via der im Forum von TelefonSparbuch veröffentlichten Pseudo-Image-File freigeschaltet).
Beim ersten Mal leider ein Reboot beim Packen des Images.
Habe dann ein bisschen SWAP-Space dazugehängt und dann hat es problemlos bei mir funktioniert.

Danke für deine professionelle Umsetzung und vor allem die Doku!!!
 
Trotz
Code:
prepare_fwupgrade start_tr069
hab ich immer noch das gleiche Problem beim updaten der 6.20 auf die 6.30 Version auf der 7362SL.

@TomTomNavigator
Wie hast du das denn genau gemacht, kannst du deine Vorgehensweise mal etwas genauer beschreiben, danke.
 
Trotz
Code:
prepare_fwupgrade start_tr069
hab ich immer noch das gleiche Problem beim updaten der 6.20 auf die 6.30 Version auf der 7362SL.

Hast du ext2 oder ext3 auf dem Stick verwendet? Weil du hast mal ext2 und ext3 erwähnt.

Also nach dem ich den Stick mit ext3 formatiert habe und dem genannten Befehl ging es auf der 7490 ohne Probleme.
 
Hey, kein Problem.

Ich habe bei meiner Box eine Festplatte dran, ext3-Filesystem.
Dann einfach eine Swap-File auf der Festplatte anlegen und mounten:

Code:
dd if=/dev/zero of=swapfile bs=1024 count=131072
mkswap swapfile
swapon swapfile

Mittels

Code:
free

nachschauen ob swap aktiv.

Das wars.
 
@BurningCrash
Ich hab den Stick mit Ext2 formatiert. Der crash liegt aber nicht am FS sondern an zu wenig Speicher (wenn ich es richtig verstanden habe)

@TomTomNavigator
Danke, werde ich mal ausprobieren. Muss nur mal schauen, ob ich irgendwo noch ne USB-Platte rumfliegen habe ... ;-)
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.