FW Image von laufender Box erstellen

maceis

Mitglied
Mitglied seit
9 Apr 2006
Beiträge
688
Punkte für Reaktionen
4
Punkte
18
Ich möchte von meiner laufenden Box ein FW Image erstellen, dass ich später wieder über das Webinterface laden kann. Aktuell habe ich ein ds-mod 0.2.6 Image drauf.

In diesem Thread (geschlossen) gibt es eine ältere Anleitung, wie man zwei Images auf der laufenden Box erstellen kann (kernel und filesystem):
$ cat /dev/mtdblock/0 > /var/tmp/filesystem.image
$ cat /dev/mtdblock/1 > /var/tmp/kernel.image
Ist das noch aktuell und auch für eine Box mit ds-mod ausreichend?
Ich vermute mal ja.

Wenn ich die beiden Dateien heruntergeladen habe, wie kann ich daraus eine Firmware erstellen, die ich per Webinterface wieder hochladen kann?
Irgendwie muss ich da ein var verzeichnis anlegen, das u.a. die beiden Dateien enthält, aber wie genau weiss ich nicht.

Danke im voraus.
 
Ah ja, sehr interessant. Das kommt auch von der Größe her hin.

Ich habe jetzt auch festgestellt, dass eine "normale" AVM Firmware in /var/tmp zwar zwei Dateien hat, "filesystem.image" ist aber leer.

Nun bin ich auf den Gedanken gekommen, einfach die beiden Dateien "filesystem.image" und "kernel.image" in einer entpackten Original Firmware auszutauschen, den Bereich "firmware Files pruefen" im install Skript zu auszukommentieren, das ganze wieder zu 'tar'en.

Hat das schon mal jemand ausprobiert?
Gibt es einen besseren/sichereren Weg das durchzuführen?
Falls es fehlschlägt, komm ich dann noch mit ADAM 2 auf die BOX?
 
ich hab das mit der letzen beta gemacht. die gabs zuerst nur online. einfach ein image von avm nehmen, entpacken, kernel.image tauschen, install patchen (versionskontrolle) und wieder neu packen.

micha
 
An eine Versionskontrolle habe ich noch gar nicht gedacht.
Worum geht es da genau bzw. was muss man machen?

Ich habe nur im install Skript folgendes gesehen und mir gedacht, das könnte u.U. Probleme machen, wenn man ein verändertes kernel.image hat:
Code:
##################################################################################
# firmware Files pruefen
##################################################################################
if [ -f /var/tmp/filesystem.image ] ; then
    if ! /var/chksum /var/tmp/filesystem.image ; then
        echo "chksum for file /var/tmp/filesystem.image failed."
        echo "set INFO led to off (modul=7, state=1)"
        echo 7,1>${LED_DEVICE}
        exit $INSTALL_FILESYSTEM_CHECKSUM
    fi
    echo chksum for file /var/tmp/filesystem.image ok
fi
if [ -f /var/tmp/kernel.image ] ; then
    [color=blue]if ! /var/chksum /var/tmp/kernel.image ; then[/color]
        echo "chksum for file /var/tmp/kernel.image failed."
        echo "set INFO led to off (modul=7, state=1)"
        echo 7,1>${LED_DEVICE}
        [color=blue]exit $INSTALL_KERNEL_CHECKSUM[/color]
    fi
    echo chksum for file /var/tmp/kernel.image ok
fi
 
die prüfsumme kannst du mit tichksum aus dem mod dran machen. hab ich in meiner beschreibung vergessen.
die versionskontrolle kannst du über
Code:
newFWver=04.01
oder über
Code:
##################################################################################
#    BB (neu) < BB (aktuell) :   update unterbinden
#    BB (neu) = BB (aktuell) &&  CC (neu) < CC (aktuell) :   update unterbinden
##################################################################################
if [ "$middle_newFWver" -lt "$middle_currFWver" ] ; then
    echo "error: Firmware downgrade not allowed"
    echo "set INFO led to off (modul=7, state=1)"
    echo 7,1>${LED_DEVICE}
    exit $INSTALL_FIRMWARE_VERSION
else
    echo "DEBUG: $middle_newFWver >= $middle_currFWver" 
fi
if [ "$middle_newFWver" -eq "$middle_currFWver" ] ; then
    if [ "$minor_newFWver" -lt "$minor_currFWver" ] ; then
        echo "error: Firmware downgrade not allowed"
        echo "set INFO led to off (modul=7, state=1)"
        echo 7,1>${LED_DEVICE}
        exit $INSTALL_FIRMWARE_VERSION
    else
        echo "DEBUG: $minor_newFWver >= $minor_currFWver" 
    fi
else
    echo "DEBUG: $middle_newFWver > $middle_currFWver" 
fi
deaktivieren. oder alternativ den downgrade mod verwenden.

micha
 
Vielen Dank für Deine Hilfe.
supamicha schrieb:
die prüfsumme kannst du mit tichksum aus dem mod dran machen.
...
Wozu braucht man das bzw. was passiert dabei eigentlich?
Ist das unbedingt erforderlich?

Ich hab das nämlich probiert und erhalte folgendes Ergebnis:
Code:
% ./tichksum kernel.image
File doesn't contain the checksum, adding
Calculated checksum is 756E74A
Adding failed

% echo $? 
0

Wenn dabei die Datei überprüft wird (wie bei md5 Vergleich oder so) könnte ich das ja einfach weglassen (=auskommentieren).
Wenn aber etwas an die Datei angehängt wird, könnte ich vermutlich "chksum" aus einer Original Firmware mit in das Image einbauen, oder?

Ich würde das ja einfach ausprobieren, aber bei solchen Aktinen ist mir das doch ein wenig zu heikel.
 
ich habs gerade nochmal getestet. geht problemlos.
Code:
user@pc ~/fritzbox
$ ./tichksum.exe kernel.image
File doesn't contain the checksum, adding
Calculated checksum is 1647F9E3
Added successfully

user@pc ~/fritzbox
das kernel.image wird nach tichksum um 8 bytes länger. ich denke es ist um übertragungsfehler beim transfer auf die box auszuschliessen. ohne prüfsumme habe ich noch nicht getestet.

micha
 
Ich würde das dann wohl unter Linux machem müssen.
Unter Mac OS X erhalte ich obenstehende Ausgabe

Was mich irritiert ist die Ausgabe "Adding failed" und trotzdem der Exit-Status 0.

Ich werde das dann wohl so machen, dass ich eine ds-mod FW auspacke und nur mein kernel.image ersetze.
Wird schon schiefgehen ;). Das chksum Kommando wird ja dann auf der Box beim Updaten durchgeführt und nicht auf meinem Rechner.

Das Ergebnis kann ich dann spätestens in ein paar Tagen mitteilen, wenn ich das Image wieder auf die Box lade.
 
JFYI:
maceis schrieb:
...
Das Ergebnis kann ich dann spätestens in ein paar Tagen mitteilen, wenn ich das Image wieder auf die Box lade.
Hat leider nicht geklappt.
Ich erhalte eine schöne fette Schrift in rot:
Es trat ein nicht näher spezifizierter Fehler
während des Updates auf.
Dann hatte ich noch die Wahl zwischen "Mit der alten Firmware neu starten" oder "Udate wiederholen".

Warum es nicht geklappt hat, weiß ich nicht.
 
Hi.
Nach dem fehlgeschlagenen Update gibt es error-Dateien in /var/tmp.
Zum Testen kannst du nach dem fehlgeschlagenen Update die Datei /var/install editieren. Erste Zeile: #! /bin/sh -x
Ins Verzeichnis /var wechseln und mit ./install aufrufen, dann siehst du was abgeht...

MfG Oliver
 
Hab inzwischen eine neu gebaute FW drauf.
Trotzdem vielen Dank für die Info, ich werde das gelegentlich noch einmal ausprobieren.

Zwischenzeitlich ist mir aufgefallen, dass ich mit " cat /dev/mtdblock/1 > /var/tmp/kernel.image" eine 7616 KB große Datei erhalte (halt den kompletten mtdblock/1). in einem Firmware Image ist "kernel.image" aber nur um die 4 MB groß.
Vielleicht hangt das Problem beim Udaten damit zusammen.
 
ich habe wie gesagt, so die letze beta firmware von der box geholt und das image selbst gebaut. bei mit hat es so funktioniert.

micha
 
Weisst Du noch, wie groß Dein Image (bzw. kernel.image) da war?
Auf welchem Betriebssystem hattest Du das gemacht?
 
Wenn du die Datei mit cat aus dem Flash holst, dann hat sie immer die Größe des gesamten Flashs. Schau mal in die Datei. Ich vermute da viele 0000 am Ende. :gruebel:

MfG Oliver
 
die datei war fast 8mb gross. wie oli schon gesagt hat, kannst du nur den kompletten bereich auslesen. ich habe das image mit cygwin gebaut.

micha
 
Kostenlos!

Statistik des Forums

Themen
248,853
Beiträge
2,302,890
Mitglieder
378,502
Neuestes Mitglied
bimbomix75