[How-To] Manuell Firmware entpacken, modifizieren, packen

Status
Für weitere Antworten geschlossen.

kriegaex

Aktives Mitglied
Mitglied seit
7 Nov 2006
Beiträge
2,927
Punkte für Reaktionen
3
Punkte
36
Ich wurde per (PN) Privatnachricht etwas gefragt. Da ich privat keinen Support leiste, die Frage aber einigermaßen interessant und von allgemeinem Interesse ist, sollen auch alle etwas von der Antwort haben.

hägga schrieb:
Da du dich ja mit FB-Mods beschäftigst wollt ich mal fragen, ob du mir evtl. helfen könntest.
Ich möcht die FB 7170 Firmware 29.04.59 entpacken, von Hand ändern( kein Freetz! ) und wieder packen. Leider hab ich bis jetzt keine funktionierende Anleitung gefunden.
Könntest du vll. eine solche schreiben?
Wäre echt toll!

Update: Schritt 2 (make tools) hatte ich zunächst vergessen zu erwähnen, danke Oliver!

Am einfachsten ist es, doch Freetz als Infrastruktur zu benutzen, und zwar das Skript fwmod aus dem Freetz-Hauptverzeichnis. Wenn man es ohne Parameter aufruft, verrät es sogar, wie es benutzt werden möchte:
Code:
$ ./fwmod

Usage: fwmod [-u|-m|-p|-a] [-i <cfg>] [-d <dir>] <orig_fw> [<tk_fw>]
  actions
    -u         unpack firmware image
    -m         modify previously unpacked image
    -p         pack firmware image
    -a         all: unpack, modify and pack firmware image (-u -m -p)
  input/output
    -i <cfg>   input file for configuration data (default: .config)
    -d <dir>   build directory (default: <orig_firmware>.mod)
    <orig_fw>  original firmware name
    <tk_fw>    2nd firmware name (e.g. for merging in web UI)
Wir brauchen also einmal den Aufruf mit -u zum Entpacken, dann nach der Modifikation den mit -p zum erneuten Packen.

Ich gehe im Folgenden davon aus, daß sich der Benutzer im Hauptverzeichnis des frisch ausgepackten oder ausgecheckten Freetz befindet und das zu modifizierende Firmware-Image bereits in dieses Verzeichnis heruntergeladen hat. Dann sind folgende Schritte auszuführen:
  1. Zunächst müssen wir eine passende Konfigurationsdatei .config erzeugen, damit beim Packen später das Skript fwmod die erforderlichen Informationen findet. Dazu rufen wir einmal
    Code:
    make menuconfig
    auf, wählen die richtige Hardware (im Beispiel 7170) aus und verlassen die Konfiguration, wobei wir die Frage nach dem Abspeichern bejahen.
  2. Bevor wir fwmod erstmals aufrufen können, müssen einige Werkzeuge gebaut werden, die später indirekt aufgerufen werden, um die Firmware zu entpacken und später wieder zusammenzubauen:
    Code:
    make tools
    Das kann ein Weilchen (einige Minuten) dauern, und wer in einer VM arbeitet, sollte dafür sorgen, daß Internet-Downloads via wget funktionieren, sonst wird das nichts.
  3. Jetzt entpacken wir das von AVM heruntergeladene Firmware-Image in ein Verzeichnis, das ich willkürlich und beispielhaft unpacked_firmware nenne:
    Code:
    ./fwmod -u -d unpacked_firmware FRITZ.Box_Fon_WLAN_7170.29.04.59.image
  4. Unter unpacked_firmware/original/filesystem modifizieren wir nun nach Herzenslust das Dateisystem der Firmware, wobei ich hier nicht darauf eingehe, was dabei zu beachten ist - das würde den Rahmen sprengen.
  5. Zum guten Schluß packen wir nun wieder das Firmware-Image:
    Code:
    ./fwmod -p -d unpacked_firmware FRITZ.Box_Fon_WLAN_7170.29.04.59.image
    Das ist also der gleiche Aufruf wie vorher, nur mit -p statt -u. Den Namen des Original-Images muß man leider mit angeben, obwohl das Image zum Packen nicht benötigt wird. Das ist eine kleine Schwäche des Skripts fwmod.
  6. Nach einer Weile steht am Ende der Skript-Ausgabe so etwas wie
    Code:
    creating filesystem image
    merging kernel image
      kernel image size: 6969088 (max: 7798784, free: 829696)
    packing [COLOR="Blue"][B]7170_.de_20080923-200251.image[/B][/COLOR]
    done.
    
    FINISHED
    In blau hervorgehoben habe ich den Namen der neu erzeugten Image-Datei.

Danach heißt es: happy flashing! :-D

P.S.: Wer hat Lust, das mal ins Freetz-Wiki zu übertragen? Ich habe leider wenig Zeit und dachte nicht daran, es gleich dort zu hinterlegen.
 
Zuletzt bearbeitet:
  • Like
Reaktionen: cf3712
Hallo,

ich denke, das ist es wert, oben festgetackert zu werden.

Vielleicht kann Izzy sich ja der Sache mit dem Wiki annehmen ... :D
 
@kriegaex
Bei deiner Befehlsreihenfolge werden die nötigen Tools nicht gebaut. Das müsste da eventuell noch eingeschoben werden.

MfG Oliver
 
Angepaßt, sorry. Das kommt davon, wenn man schon eine bestehende Build-Umgebung hat und benutzt, anstatt wirklich neu auszuchecken.
 
Hallo Alexander & Oliver,

fwmod: Ich erinnere mich dunkel ans firmware-repackaging/-extracting via PN mit Euch beiden.
Schön, dass es jetzt niedergeschrieben ist.

Grüssle,
Sed@
 
Wer hat Lust, das mal ins Freetz-Wiki zu übertragen? Ich habe leider wenig Zeit und dachte nicht daran, es gleich dort zu hinterlegen.
Danke, Alexander, für die interessante Anleitung! Ich war mal so frei und habe sie (textuell leicht angepasst) ins Freetz-Wiki gestellt.
Leider weiß ich nicht, wie (und am besten wo) auf diesen Wiki-Eintrag im Wiki selbst verlinkt werden kann. Z.B. fehlt ein Link auf die HowTos, oder ich habe ich nicht richtig gesucht. Es sind alle eingeladen, nötige Modifikationen und Korrekturen einzufügen. Dankeschön.
 
Verbindlichen Dank. :)
 
Vielleicht kann Izzy sich ja der Sache mit dem Wiki annehmen ... :D

Teamwork: ao hat es übertragen, irgendwer (Alexander?) hat es in der Howto-Übersicht verankert, und ich hab es dann noch ein wenig angepasst. Leider kann ich gerade nicht schauen, ob auch die letzten Änderungen aus diesem Thread dort bereits berücksichtigt sind, da ich derzeit nur "503 Service not available" bekomme - egal welche Seite ich auf trac.freetz.org aufrufe. Ist das eine "geplante Baustelle", oder gibt es Probleme? Kann man helfen?

Beste Grüße,
Izzy.
 
Wenn Du die Ergänzung "make tools" meinst, die ist bereits mit drin.
Ansonsten habe ich hier dasselbe www.freetz.org -Problem: "Service Temporarily Unavailable". :(
 
Gut, dann sollte der Artikel auf dem aktuellen Stand sein. Nur dass ihn gerade keiner lesen kann - der Server ist wohl unter der Last zusammengebrochen, das Kontingent an monatlichem Traffic aufgebraucht, oder sowas. Von "Maintenance" habe ich eigentlich nix gehört (war also zumindest nix angekündigt) - und ich denke, das wäre hier bestimmt gepinnt, um "1000 Fragen" zu vermeiden. Daher tippe ich eher auf ein Problem.

Leider kann ich die Logs nicht sehen - ein 503 kommt bei Trac auch ganz gern mal, wenn man z.B. ein neues Plugin installiert hat, welches ein "Upgrade" der Datenbank erfordert, was vergessen wurde durchzuführen. Oder wenn ein Plugin falsch konfiguriert ist. Da ich das Log nicht sehen kann, weiß ich natürlich nicht, ob es so etwas ist...
 
Ich bin der Meinung, daß der Thread dann nicht mehr hier oben angepinnt sein muss. Dafür ist es letztendlich doch zu speziell, und es ist ja jetzt ordentlich aufgeräumt.
 
Ich bin der Meinung, daß der Thread dann nicht mehr hier oben angepinnt sein muss. Dafür ist es letztendlich doch zu speziell, und es ist ja jetzt ordentlich aufgeräumt.

:zustimm: Und über die Howtos-Seite auch sofort zu finden.
 
Hallo,

jupp, unter diesen Randbedingungen habt ihr Recht.
 
Da dieser Thread im o.g. HowTo verlinkt ist, lässt er sich auch jeder Zeit zur weiteren Diskussion finden - sofern man den Wiki-Artikel von Anfang an liest. ;)
Wenn man ein Firmware-Image entpacken, ändern und wieder packen möchte, geht das wie folgt (nach Anleitung von Alexander Kriegisch - Diskussions-Thread hier: http://www.ip-phone-forum.de/showthread.php?t=175974):
Kann man den Link im HowTo eigentlich auch "unsichtbar" machen, d.h. dass er dort einfach unter dem Wort "hier" liegt?
 
Danke und sorry, dass ich selbst kaum Zeit habe, mich da reinzulesen.
icon11.gif
 
Kein Problem. Hast doch einen Artikel übertragen - das ist mehr, als manch anderer zum wiki beigetragen hat :keks: Und außerdem habe ich doch wohl nicht zuletzt Dir so manchen Tipp schon zu verdanken, also keine falsche Bescheidenheit :p

Wenn Du Dich dann mal reinlesen willst: WikiTipps. Ist noch lange nicht vollständig. Sobald ich durch die Paketliste durch bin, kommt da noch der eine oder andere Artikel hinzu. Ich denke da (ernsthaft, und ohne dass das jetzt eine Anspielung ist) u.a. an Dinge wie:
  • Wie schreibe ich einen besseren Wiki-Artikel
  • Wie und wofür man Tags einsetzen und benutzen kann
  • ...
Die anderen Themen kann ich derzeit noch nicht in eine kurze Phrase packen, sind noch zu roh. Wie getippst, erstmal will ich die Paketliste fertig haben.

Beste Grüße,
Izzy.
 
Status
Für weitere Antworten geschlossen.
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.