[Gelöst] 7490 - nur SquashFS "flashen" ?

PeterPawn

IPPF-Urgestein
Mitglied seit
10 Mai 2006
Beiträge
15,138
Punkte für Reaktionen
1,703
Punkte
113
Hi,

folgende Überlegungen:

Die 7490 hat für das Root-FS und den Kernel ja "nur noch" NAND-Flash.

Das führt dann zu einem absolut anderen Ablauf des Flash-Vorgangs, bei dem (ähnlich wie bei der 6360, die wegen der ausschließlich vom Provider zu initiierenden Firmware-Updates ja auch immer zwischen zwei "Versionen" des Flash-Speichers umschaltet) erst nach dem erfolgreichen Abschluß eines Flash-Vorgangs auf das neue Image geswitched wird. Dazu wird der Eintrag "linux_fs_start" im Urlader-Environment auf '0' oder '1' gesetzt.

Das Root-FS wird auch nicht als "pures" SquashFS in das "filesystem"-MTD verfrachtet, es wird ein YaFFS2-Filesystem als "Wrapper" verwendet (das ist das FS, welches im laufenden Betrieb auch auf /wrapper gemounted ist) und das darin liegende SquashFS wird per loop-Device als / gemounted.

Damit kann man bei diesen Boxen natürlich mit kleinem Aufwand auf das letzte Image "zurückgehen", indem man einfach per EVA den entsprechenden Environment-Eintrag ändert ... das aber nur nebenbei; immerhin habe ich das mal kurz getestet und als funktionsfähig gefunden (wahrscheinlich nur, solange die Einstellungen zwischen beiden Versionen kompatibel sind).

Das Flashen eines neuen Systems erfolgt immer in das MTD-Device mit dem "reserved" im Namen; bei "normaler" Behandlung der Box sind in beiden Teilen des Flashs auch unterschiedliche Kernel-Versionen und Wrapper-FS gespeichert.

Meine Idee - die ich zur Diskussion stellen will - ist es nun, bei funktionierender Box(!) auf das letzte System zu verzichten und einfach einmalig den Kernel des laufenden Systems aus MTD0 (ich nehme mal linux_fs_start=0 an) nach MTD2 und das Wrapper-FS aus MTD1 nach MTD3 zu kopieren. Anschließend sollte dann (das Wrapper-FS mit einfachem 'cp' beschreibbar, wenn es gemounted ist) der problemlose Austausch des SquashFS-Files mit dem root-Filesystem im inaktiven Wrapper-MTD möglich sein. Stellt man dann noch "linux_fs_start" auf den alternativen Wert um, müßte beim nächsten Reboot das neue SquashFS benutzt werden.

Damit hätte man eine wenig aufwendige Variante für das "Flashen" (ist ja eigentlich nur noch ein Kopieren) eines eigenen Systems auf einer 7490 zur Verfügung, solange man den Kernel nicht austauschen will. Selbst wenn man den Kernel tauschen läßt (irgendwann gibt es bestimmt auch die 06.20-Quellen, wobei die 06.10-x wohl auch passt und die steht auf dem FTP-Server), kann man das quasi im laufenden Betrieb machen (mit /sbin/update_kernel) und ist nicht auf "firmwarecfg" mit der Signaturprüfung usw. angewiesen. Im besten Fall reduziert sich dann der Austausch des root-FS auf ein mount/copy/umount und das echo für das mtd2-Environment. Wenn dann noch ein "move"-Bind möglich wäre (ich glaube zwar nicht dran, aber einen Versuch ist es sicherlich wert, wie reagiert den ein move-Bind bei offenen Files ?), könnte man u.U. sogar ohne Reboot weitermachen und die Änderungen testen - wenn sie nicht den Boot-Vorgang betreffen. Oder man nutzt das neue root-FS als chroot-Basis für eine Testumgebung ... oder oder oder.

Zumindest könnte man dann auch - telnet-Zugang unterstellt - eine FRITZ!Box 7490 mit originaler AVM-Firmware mit einem eigenen root-FS ausstatten, wenn AVM das Flashen eigener Firmware über das GUI gar nicht mehr zulassen sollte (ich habe nur hier im IPPF davon gelesen und es selbst noch nicht festgestellt). Die Wiedereinführung der debug.cfg für den interessierten Anwender wäre dann fast ohne Aufwand machbar.

Wenn man diesen Gedanken weiterspinnt, wäre (entsprechende Power der 7490 mal unterstellt) auch eine "permanente" Änderung im root-FS mit anschließendem Packen als SquashFS direkt auf der Box denkbar.

Wobei - bei näherer Überlegung - eigentlich auch nirgendwo absolut fest verankert ist, daß das root-FS unbedingt als SquashFS ausgelegt sein muß, oder ?
Wenn der Mount-Befehl im gestarteten Kernel (bzw. seinem initramfs) das Filesystem nicht explizit festlegt und sich auf die Erkennung verläßt, sollte doch auch jedes andere loop-taugliche Filesystem funktionieren. Der ganze Aufwand, den AVM dort treibt, dient ja letzten Endes nur zur Emulation einer "alten" Umgebung auf der 7490, damit man so wenig wie möglich ändern mußte.

Findet jemand bis hier einen Denkfehler in meinem Ansatz oder hat da jemand schon mal weiter getestet ? Ich habe hier im Moment leider nur eine einzelne 7490 und die ist am Ackern ... deshalb muß ich mich beim Testen etwas zurückhalten.

Zur Klarstellung: Ich will gar nicht, daß jemand das alles an meiner Stelle ausprobiert ... das mache ich schon selbst. Ich will nur Eure Meinung, wenn Ihr ein Haar in der Suppe findet und dann natürlich - bitte - mit Begründung. ;)

Meine früheren Versuche mit UBIFS anstelle des SquashFS hatte ich mit dem Beginn des Labor-Zweiges erst einmal ad acta gelegt, da der AVM-Kernel keine UBI-Unterstützung und auch kein UBIFS enthält und die Module zum Nachladen passen müssen. Wegen der fehlenden Kernel-Unterstützung funktioniert auch der direkte Ersatz des SquashFS durch ein UBIFS nicht, da der Kernel dann das root-FS nicht mounten kann ... da ist also ohne eigenen Kernel wenig zu machen.

PS: Im Moment treibt mich auch die Frage um, ob bei "linux_fs_start=1" (habe ich beim letzten Test glatt vergessen zu prüfen) die MTD-Einträge umnummeriert werden (also der Kernel immer in MTD0 liegt, unabhängig vom Wert von linux_fs_start) oder ob dann wirklich der Index der MTD-Devices sich auch ändert. Vielleicht kann ja mal jemand mit einer 7490 nachsehen (cat /proc/mtd), bei dem das Environment gerade "linux_fs_start 1" enthält.
 
Zuletzt bearbeitet:
Keiner eine Meinung ?

Kein Interesse ?

Auch niemand mit einer 7490 und Zugriff zur Shell, der mal ein
Code:
grep linux_fs_start /proc/sys/urlader/environment
machen könnte und bei einem Wert von 1 dann noch ein
Code:
cat /proc/mtd
hinterher schicken könnte ?

Ich verlege mich notfalls auch aufs Betteln ...

EDIT:
Betteln kann ausfallen ... einfach mal selbst getestet, kann ja nicht wirklich schaden ... 10 Minuten Lebenszeit investiert.

Der Wert von linux_fs_start bleibt ordentlich auf 0 oder 1 stehen und auch die MT-Devices werden normal nummeriert.

Bei linux_fs_start 0 ist also MTD0 der Kernel und MTD1 das Wrapper-FS, bei linux_fs_start 1 dann MTD2 / MTD3.
 
Zuletzt bearbeitet:
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.