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

modfs macht aus einem Image "A" unter Verwendung von Scripten oder manuellen Änderungen ein neues Image "B".

Irgendetwas wird also als "A" benötigt ... je nachdem, was man als Ausgangspunkt nehmen möchte, muß man also seine eigene Entscheidung treffen.

Wenn man bereits ein modifiziertes System verwendet und weitere Modifikationen hinzufügen will, aber die beim ersten Mal durchgeführten Änderungen zwar beibehalten, jedoch nicht noch einmal ausführen will, dann wäre sicherlich 'a' die richtige Wahl, da dann bereits vorhandene Modifikationen "überleben". Will man genau das nicht, darf man natürlich keinesfalls 'a' nehmen und sollte stattdessen mit 'b' und einer "frischen Kopie" direkt von AVM von vorne beginnen.

Es gibt also kein "Rezept". modfs ist am Ende nichts als ein Werkzeug (mit insgesamt nur 4 Beispielen für seine Anwendung im Verzeichnis 'modscripts'), um auf passenden Boxen die Firmware zu modifizieren, ohne dabei gleich ein Freetz-Image einspielen zu müssen.

Auch habe ich so gar keine Vorstellung, was ich mir unter "ich möchte auf meiner Fritzbox 7490 6.23 die .cfg optimieren." vorstellen soll ... ich will auch nicht verhehlen, daß ich es am Ende auch lieber gar nicht verstehen will, falls meine Vermutung zutreffen sollte.

Die Anwendung von modfs würde ich nur dann empfehlen, wenn man entweder mit den mitgelieferten Änderungen am System schon zufrieden wäre oder wenn man selbst genau weiß, was man am Dateisystem der FRITZ!Box ändern will. Ansonsten ist die Anwendung zwar i.d.R. trotzdem ungefährlich (es bleibt ja immer noch der "Rückzug" auf das letzte verwendete System per EVA/ruKT/was auch immer), aber auch nur wenig sinnvoll. Der entscheidende Unterschied zwischen einer Änderung an Konfigurationseinstellungen und Änderungen am SquashFS für das Root-Dateisystem ist es eben, daß sich letztere nicht einfach mit "Werkseinstellungen" wieder rückgängig machen lassen. Wenn ich das also nicht komplett falsch verstehe und Du wirklich nur Konfigurationseinstellungen ändern willst, ist modfs das absolut falsche Tool für Dich.
 
Ok. Ich muss in der debug.cfg einen Befehl eintragen. Dieser soll nach einem Restart der Box immer ausgeführt werden.
Dieser Befehl startet ein Script das das WLAN auf Abwesenheit und Anwesenheit überprüfen soll.
Das Starten der debug soll ja von seitens AVM unterbunden sein mit den neuen FW.
Hast du denn eine andere Idee wie ich das machen kann das das Script nach einem Systemstart wieder läuft?
 
Zuletzt bearbeitet:
Dann kannst Du 'a' benutzen, wenn Du bisher keine Änderungen an der Firmware vorgenommen hast.

Einmal - u.U. auch zweimal, falls mittendrin ein Restart erforderlich ist - das modfs-Script ausführen, die Ausgaben lesen und die Fragen beantworten. Nach der "finalen" Modifikation und einem anschließenden manuellen Neustart kannst Du dann mit dem Kommando "edit_rcuser" die debug.cfg bearbeiten und Dein Kommando eintragen. Beim nächsten Neustart wird das dann auch ausgeführt.

Die "Wiedereinführung" der debug.cfg (aka rc.user) und das zusätzliche Script "edit_rcuser" sind zwei der mitgelieferten Beispiele. Die Modifikation zum Ausführen der rc.user wird ohne Nachfrage einfach immer ausgeführt (wie man das abstellen kann, wenn man es nicht haben will, steht in der README), für die anderen (Beispiel-)Modifikationen ('edit_rcuser hinzufügen', 'zusätzliche Auswahl beim Restart' und '/var/profile zusätzlich bei einem Shell-Login aufrufen') muß man jeweils gesondert mit 'j' antworten, wenn man sie im Zielsystem haben will.
 
Das werde ich dann morgen oder nachher machen. Danke und gute Nacht erstmal.
 
so, ich habe grad den Mod installiert und die debug.cfg editiert.
Funktioniert prima, mein Script wird nach jedem reboot ausgeführt.
Super und danke.
Wenn ich die Box mal verkaufen möchte, dann brauch ich doch nur die aktuelle FW mit dem ruKerneltool installieren oder?
Mein Kumpel hat die 7390, gibt es da auch ne Möglichkeit zwecks Scriptautostart nach reboot?
 
Mein Kumpel hat die 7390, gibt es da auch ne Möglichkeit zwecks Scriptautostart nach reboot?
In Arbeit, gibt aber einiges zu berücksichtigen (kein Dualboot, daher schneller ein Recovery-Fall) ... dauert noch eine Weile, steht aber schon alles hier geschrieben.
 
Ich wollte mich ganz herzlich bedanken.
Sehr coole Sache ohne das man gleich den (Freetz)-Hammer auspacken muß. :D

Bei mir (FB 7490, Firmware 6.23) läuft es einwandfrei. Ich habe es "zweistufig" angelegt. Die rc.user auf der Box schaut nur ob der USB-Speicher da ist und startet dann davon die eigentliche myrc.user. Somit kann ich diese auch bequem über Notepad++/nano/kwrite usw. bearbeiten. :cool:
 
Zuletzt bearbeitet:
Hallo,

ich weiß zwar nicht ob es hier zu dem Thema gehört allerdings scheitere ich schon dran telnet auf der 3370 unter 6.20 zu aktivieren.

Hat jemand eine Idee?
 
Such mal im Forum nach "fx_conf" und "telnet" oder "callmonitor" ... wir hatten erst vor kurzem einen Thread zu der Frage, wie man Telnet aktivieren kann, wenn man kein Telefon hat. Wenn die Methode mit der Wählhilfe auch nicht funktioniert (Wählhilfe aktivieren und #96*7* aus dem Telefonbuch wählen lassen), dann klappt es aber mit dem FBEditor und "Abzählen" von Bytes immer noch.
 
kennt jemand einen kurz befehl um die rc.user zu leeren?

oder kann mir jemand diesen befehl umschreiben das die rc.user geleert wird und nur diese zeile drin steht.


n=98;v=/var/$n;c=cat;[ -f $v -o -c $v ]||(mkconfigfile $v $n;echo 'eventadd 1 "debug.cfg wird abgearbeitet ..."'>$v.n;$c $v>>$v.n;$c $v.n>$v;$c $v;rm $v.n $v)
chmod -R 777 /var/tmp/rc.user
 
kann mir jemand diesen befehl umschreiben das die rc.user geleert wird und nur diese zeile drin steht.
:gruebel:
Erstens wird alter Inhalt der rc.user überschrieben, wenn Du neuen Inhalt hineinschreibst, da muß also nichts extra geleert werden. Das heißt im Umkehrschluß dann auch, daß man den gewünschten Inhalt woanders zusammenbauen und dann auf einen Rutsch wieder in die Datei schreiben muß. Das macht - grob genähert - die kryptische Zeile, die ändert den Inhalt von TFFS/98.

Zweitens ... das Kommando in der Zeile, die mit "n=98" beginnt, macht (außerhalb der oben stehenden Erläuterung) eigentlich nur wenig Sinn (auch wenn ich es eventuell tatsächlich mal irgendwo so geschrieben habe, war es wahrscheinlich mehr als Beispiel gedacht).

Wenn die Datei /var/98 nicht existiert (weder als regular file noch als character device), wird der bisherige Inhalt des TFFS-Node 98 am Beginn um die Zeile "eventadd ..." ergänzt und - über das Kopieren des bisherigen Inhalts hinter diese neue Zeile - wieder in den TFFS-Node zurückgeschrieben ... dann angezeigt (wo eigentlich, na klar, auf stdout) und dann "das Fenster" in das TFFS (/var/98) gelöscht.

Wenn man allerdings diese Zeile tatsächlich irgendwo in einem Konfigurationsfile verwenden würde, fällt einem das "$c $v" am Ende mit einiger Sicherheit auf die Füße, da es eben den Inhalt der Datei als Ergebnis ausgibt und das sieht z.B. nach einem Hostnamen eher unschön, ungewöhnlich oder sogar syntaktisch falsch aus. Das sollte man also tunlichst vermeiden, wenn das bei mir tatsächlich auch so steht, habe ich nicht richtigt aufgepaßt (oder wir nehmen das als Test für den Leser).

Anschließend wird eine Datei /var/tmp/rc.user (wo kommt die eigentlich so plötzlich her) auf umask 777 (bzw. das Inverse) gesetzt und das auch noch rekursiv, was bei einer einzelnen Datei irgendwie auch keinen Sinn ergibt.

Vielleicht schreibst Du ja doch lieber noch etwas zum Hintergrund dessen, was Du eigentlich erreichen willst und was Dein Ausgangspunkt ist?
 
Zuletzt bearbeitet:
Hallo,

die Version für Fritz.7390 mit dem eingeschalteten debug.cfg.

Das ist original FRITZ.Box_Fon_WLAN_7390.AnnexB.84.06.23.image mit dem eingetragenen Teil von http://www.ip-phone-forum.de/showthread.php?t=269276&p=2002789&viewfull=1#post2002789

Übertragen von FRITZ.Box_Fon_WLAN_7390.AnnexB.84.06.03.image
rc.tail.sh
##########################################################################################
## user rc file
##########################################################################################
if [ -z "$CPU_NR" ] || [ "$CPU_NR" = "1" ] ; then
mknod /var/flash/debug.cfg c $tffs_major $((0x62))
if ! /usr/bin/checkempty /var/flash/debug.cfg 2>/dev/null; then
. /var/flash/debug.cfg
fi
fi

Konfiguration sichern, Brennen, Rebooten, debug.cfg nutzen.

FRITZ.Box_Fon_WLAN_7390.AnnexB.84.06.23.with.debug.cfg.image

*****

Bitte Ergebnisse melden.

P.S.
Leider wurde Link zu FRITZ.Box_Fon_WLAN_7390.AnnexB.84.06.23.with.debug.cfg.image von Administatoren entfernt. Ich weiß nicht wo ich update file ohne Regeln zu brechen liegen lassen kann. :-(
 
Zuletzt bearbeitet:
Ok, der Link wurde wohl schon von einem Admin entfernt.

Mal ganz ernsthaft die Frage: Wieso sollte Dir jemand trauen, daß Du in einem solchen für andere bereitgestellten Image - abgesehen von den fehlenden Urheberrechten, die das auch schon verhindern sollten - nicht noch weitere Änderungen vorgenommen hast und die betreffende Box dann klamm und heimlich zu Dir "nach Hause telefoniert" und wer weiß was anstellt?

Jeder, der auf ein solches Download-Angebot eingehen würde (das er nicht verifizieren kann und schon das blinde Vertrauen in den Hersteller der Firmware ist für einige (oder viele?) hoffentlich eine Überwindung), müßte nach meinem Verständnis mit dem Klammerbeutel gepudert sein ... wenn Du tatsächlich selbst auf solche Angebote eingehst, hätte ich noch ein paar PDF-Files mit Katzenvideos (oder auch (legale!) Porno-Sites mit ganz fürchterlich geheimen Kennwörtern, wenn Du nachweisbar über 18 bist und Dich das mehr interessieren sollte), die auch garantiert alle vollkommen harmlos sind.
 
Ok, der Link wurde wohl schon von einem Admin entfernt.

Mal ganz ernsthaft die Frage: Wieso sollte Dir jemand trauen, daß Du in einem solchen für andere bereitgestellten Image - abgesehen von den fehlenden Urheberrechten, die das auch schon verhindern sollten - nicht noch weitere Änderungen vorgenommen hast und die betreffende Box dann klamm und heimlich zu Dir "nach Hause telefoniert" und wer weiß was anstellt?

Dann macht Sinn alles beschrieben.

1) Freetz instalieren (VM Freetz-Linux 1.3.2 + Freetz 2.0 stable).

2) Original Image von ftp://ftp.avm.de/fritz.box/fritzbox.fon_wlan_7390/firmware/deutsch/ herunterladen, ins freetz Verzeichnis übertragen. (bei mir freetz-stable-2.0)

3) Einloggen, konfigurieren.
Code:
freetz@freetz-linux:~/freetz-stable-2.0$ make menuconfig
1.JPG
wichtig ist auf 7390 umzustellen

4) Speichern

5) Image entpacken
Code:
./fwmod -u -d unpacked_firmware FRITZ.Box_Fon_WLAN_7390.AnnexB.84.06.23.image
2.JPG

in ORIGINAL unpacked_firmware/original/filesystem/etc/init.d/rc.tail.sh
Code:
##########################################################################################
## Betriebsstundenzaehler & Watchdog
##########################################################################################
/bin/run_clock -c /dev/tffs -d
echo init-done >/dev/watchdog
#########################################################################
## Damit auch Oops zum Reboot fuehren
#########################################################################
echo 1 > /proc/sys/kernel/panic_on_oops
#########################################################################
## Damit auch OOM zum Panic/Reboot fuehrt
#########################################################################
echo 2 > /proc/sys/vm/panic_on_oom
## spaeter wenn die tests vorbei sind
## rm -f /var/env
#########################################################################
## lade Powerinfo-Tabelle (fuer Energiemonitor)
#########################################################################
if [ -f /lib/modules/pm_info.in ]; then
cat /lib/modules/pm_info.in >/dev/avm_power
fi
#########################################################################
## set printk level to KERN_ERR
#########################################################################
echo "4" > /proc/sysrq-trigger
if test -x /usr/bin/ethnator ; then
/usr/bin/ethnator -d /etc/init.d/linkdown.sh -u etc/init.d/linkup.sh
fi
#########################################################################
## cleanup - if running, stop debug (0 normal, 1 flush buffer)
#########################################################################
if `ps | grep -v grep | grep -q "cat /dev/debug"` ; then
echo Info: have to stop 'cat /dev/debug'.
echo AVMDBG_EOF 1 >/dev/debug
fi;
#########################################################################
## PTEST: warten, bis der laufenende WLAN-Lifetest beendet ist
#########################################################################
if [ -n "$PTEST_WAIT_PID" ] ; then
wait $PTEST_WAIT_PID
fi
#########################################################################
## modulemem: mit 'fork' <set_m_sleep> Minuten warten, bis alle module gestartet sind.
#########################################################################
if [ -x "/bin/set_modulemem" ] ; then
set_m_sleep=$((10*60))
nohup sh -c "echo \"\$0[\$\$]: ++++fork set_modulemen, sleep ${set_m_sleep}++++\" > /dev/console ; sleep ${set_m_sleep}; echo \"\$0[\$\$]: ++++do set_modulemen++++\" > /dev/console; /bin/set_modulemem;" &
fi
#########################################################################
exit 0

eintragen:
Code:
################################################## ########################################
## user rc file
################################################## ########################################
if [ -z "$CPU_NR" ] || [ "$CPU_NR" = "1" ] ; then
mknod /var/flash/debug.cfg c $tffs_major $((0x62))
if ! /usr/bin/checkempty /var/flash/debug.cfg 2>/dev/null; then
. /var/flash/debug.cfg
fi
fi

so wird:

Code:
##########################################################################################
## Betriebsstundenzaehler & Watchdog
##########################################################################################
/bin/run_clock -c /dev/tffs -d
echo init-done >/dev/watchdog
#########################################################################
## Damit auch Oops zum Reboot fuehren
#########################################################################
echo 1 > /proc/sys/kernel/panic_on_oops
#########################################################################
## Damit auch OOM zum Panic/Reboot fuehrt
#########################################################################
echo 2 > /proc/sys/vm/panic_on_oom
##########################################################################################
## user rc file
##########################################################################################
if [ -z "$CPU_NR" ] || [ "$CPU_NR" = "1" ] ; then
mknod /var/flash/debug.cfg c $tffs_major $((0x62))
if ! /usr/bin/checkempty /var/flash/debug.cfg 2>/dev/null; then
. /var/flash/debug.cfg
fi
fi
## spaeter wenn die tests vorbei sind
## rm -f /var/env
#########################################################################
## lade Powerinfo-Tabelle (fuer Energiemonitor)
#########################################################################
if [ -f /lib/modules/pm_info.in ]; then
cat /lib/modules/pm_info.in >/dev/avm_power
fi
#########################################################################
## set printk level to KERN_ERR
#########################################################################
echo "4" > /proc/sysrq-trigger
if test -x /usr/bin/ethnator ; then
/usr/bin/ethnator -d /etc/init.d/linkdown.sh -u etc/init.d/linkup.sh
fi
#########################################################################
## cleanup - if running, stop debug (0 normal, 1 flush buffer)
#########################################################################
if `ps | grep -v grep | grep -q "cat /dev/debug"` ; then
echo Info: have to stop 'cat /dev/debug'.
echo AVMDBG_EOF 1 >/dev/debug
fi;
#########################################################################
## PTEST: warten, bis der laufenende WLAN-Lifetest beendet ist
#########################################################################
if [ -n "$PTEST_WAIT_PID" ] ; then
wait $PTEST_WAIT_PID
fi
#########################################################################
## modulemem: mit 'fork' <set_m_sleep> Minuten warten, bis alle module gestartet sind.
#########################################################################
if [ -x "/bin/set_modulemem" ] ; then
set_m_sleep=$((10*60))
nohup sh -c "echo \"\$0[\$\$]: ++++fork set_modulemen, sleep ${set_m_sleep}++++\" > /dev/console ; sleep ${set_m_sleep}; echo \"\$0[\$\$]: ++++do set_modulemen++++\" > /dev/console; /bin/set_modulemem;" &
fi
#########################################################################
exit 0

6) File speichern

7) Update Image generieren
Code:
./fwmod -p -d unpacked_firmware FRITZ.Box_Fon_WLAN_7390.AnnexB.84.06.23.image

3.JPG

Code:
-rw-r--r-- 1 freetz freetz 16172032 Jan 31 04:13 7390_-.de_20150131-041314.image
8) Image abholen, umbenennen, flashen.

Noch andere Fragen?
 
Zuletzt bearbeitet:
Noch andere Fragen?
Schon ... was ist denn der Unterschied (außer vielem unnützen Text in Form von Zitaten, die besser in CODE-Tags passen würden) zu diesem Beitrag? Abgesehen davon, daß der von jemandem stammt, der die notwendigen Änderungen in fwmod vorgenommen hat, damit das bei Dir überhaupt funktioniert?

Welche neuen oder abweichenden Erkenntnisse verbergen sich in Deinem Beitrag bzw. was willst Du uns damit am Ende sagen?
 
Welche neuen oder abweichenden Erkenntnisse verbergen sich in Deinem Beitrag bzw. was willst Du uns damit am Ende sagen?

Den Beitrag sah ich leider nicht. Dann ist das Ding erledigt.
Wer debug.cfg braucht kann selbst update Image modifizieren.

P.S. Danke für "CODE" Hinweis, korrigiert.
 
Zuletzt bearbeitet:
Vielen vielen Dank! Bei mir hat es funktioniert
 
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.