Freetz stellt Skripte zum Modifizieren einer originalen Firmware bereit. Aus Lizenzgründen ist die Verbreitung sowohl originaler als auch modifizierter Firmware Images untersagt!
Achtung: Das Aufspielen einer modifizierten Firmware geht mit dem Verlust der Garantie einher. Wendet euch bei Problemen mit einer modifizierten Firmware daher NICHT an den AVM Support.
Anfänger: Bitte zuerst ‘Erste Schritte für Anfänger’ lesen!
Wenn kein natives Linux zur Verfügung steht wird von uns Freetz-Linux als Buildumgebung empfohlen. Das von Silent-Tears (cinereous) zur Verfügung gestellte Image wird bei Problemen supported.
Die unten stehende Anleitung wurde anfangs teilweise von Saphir übernommen, ist aber über die Zeit historisch gewachsen und wurde nach und nach von mehreren Benutzer erweitert und überarbeitet. Wir bemühen uns diese Anleitung möglichst aktuell zu halten und der jeweils aktuellen Version der aktuell zu empfehlenden virtuellen Maschine anzupassen. Grundsätzlich gelten jedoch die hier empfohlene Schritte mit gewissen Einschränkungen für jede FREETZ-tauglich konfigurierte virtuelle Linux-Maschine.
Siehe auch:
Buildumgebung Freetz-Linux Installieren
Freetz und Speed-to-Fritz Installation (relevant nur für SpeedPort Benutzer)
VMWare Player starten und keine Einstellungen ändern, da sich die virutelle Maschine eine IP per DHCP holt. Sollte dieses nicht der Fall sein kann die IP-Adresse mit folgendem Befehl auch per Hand gesetzt werden:
ifconfig eth0 192.168.178.xx netmask 255.255.255.0 broadcast 192.168.178.255
(Wobei die Netzwerkkarte “eth0” evtl. durch eine eine andere ersetzt werden muss. Eine Auflistung aller Netzwerkkarten erhält man mit “ifconfig -a”)
Mit SSH/TELNET oder Freetz-Linux Konsole (bevorzugt) folgendes eingeben:
git clone https://github.com/Freetz-NG/freetz-ng ~/freetz-ng
Achtung: Kleiner Tip für Vista und Windows 7 User:
Solltet Ihr eine IP-Adresse in der VM-Ware erhalten (ifconfig), aber trotzdem folgende Fehlermeldung bekommen :hostname konnte nicht aufgelöst werden, dann kontrolliert bitte Folgendes in Eurer Systemsteuerung:
1.) ob Euer Netzwerk ein Heimnetzwerk ist:2.) ob Eure Netzwerkkennung eingeschaltet ist:
Optional: Patch einspielen (siehe Howto)
In das Verzeichnis des ausgecheckten/entpackten Freetz wechseln:
cd freetz-2.0.x (aktuell: cd freetz-2.0)
Einstellungen wie Boxtyp, Pakete usw. konfigurieren. Dies ist über ein ncurses Interface möglich, welches z.B. aus der Konfiguration des Linux Kernels bekannt ist. Details und Beschreibungen zu den Optionen gibt es in der Beschreibung zum menuconfig.
make menuconfig
Es empfiehlt sich beim ersten Mal nicht zu viele Einstellungen zu verändern und das erste FritzBox Firmware Image mit den Standardvorgaben zu erstellen.
Firmware modifizieren. In diesem Schritt werden die zu der gewählten Konfiguration passenden Originalfirmware, Pakete, sowie Sourcen für die benötigten Tools vollautomatisch heruntergeladen und die modifizierte Firmware in drei Schritten erzeugt. Beim ersten Mal dauert es etwas länger. Die Zeit ist abhängig von den ausgewählten Paketen und dem benutzten Rechner. Man kann also ruhig eine Kaffeepause einlegen.
make
~/freetz-2.0.*/images
die neue FritzBox Firmware (z.B.
7170_04.76freetz-devel-10390.de_20130421-180742.image
).Für das Erstellen der Firmware kann auch Knoppix verwendet werden, wozu keine Linux-Installation erforderlich ist. Wichtig ist, dass zum Kompilieren des Mods unter Linux keine FAT oder NTFS Partition verwendet wird. Die folgende Anleitung benötigt für
make menuconfig
)make recover
make recover
Diese benötigen zusätzlich zu bereits unter freetz-2.x genannten noch folgende Pakete:
/usr/bin/ruby1.8
o.ä. haben, aber nicht das
vom Makefile benötigte Binary Namens ruby. Da hilft im o.g.
Beispiel sudo ln -s ruby1.8 /usr/bin/ruby
bzw. die Ausführung des
ln
-Befehls als Benutzer root.tools/extract-images
(ab freetz-devel), wenn man z.B. ein Recover-EXE zerlegen, also
urlader.image und kernel.image extrahieren möchte. Die in
anderen awk-Varianten nicht vorhandene Funktion strtonum wird an
einer Stelle verwendet.tools/mklibs.py
unbenutzte Symbole aus Bibliotheken zu entfernen, um Platz zu sparencomposite
mit dem
Bilder kombiniert werden können; nur notwendig wenn man das
AVM-Webinterface “taggen” möchtetools/freetz_patch
(Auto-Fix-Modus)tools/freetz_patch
(Auto-Fix-Modus)Hier wird zusätzlich folgendes benötigt:
freetz-xxx.tar.bz2
wechseln und
diesen mit tar -xvjf freetz-x.y.z.tar.bz2
entpackencd freetz-xxx/
in das Verzeichnis des entpackten Freetz
wechselnmake
.*.image
als Firmware Update auf die Box hochladen. Nach einem
erfolgreichen Upload ist nun auf Port 81 ein weiteres Webinterface
verfügbar, welches Instruktionen zum Abschluss der Installation
enthält. Sollte die Box nach dem Hochladen der Firmware auch Minuten
nachdem die Info LED aufgehört hat zu blinken nicht mehr erreichbar
sein (typischerweise leuchten periodisch immer wieder alle LEDs
auf), so kann die originale Firmware bei den meisten Box-Typen, wie
in diesem Howto
beschrieben, wiederhergestellt werden.Siehe auch: andlinux unter Vista installieren
Alternativ kann auch coLinux benutzt werden, ist etwas resourcenschonender als der vmware player. Mit speedLinux ist alles vorbereitet für freetz oder speed-to-fritz. Mit ./freetz werden alle notwendigen Vorbereitungen und Installationen durchgeführt. aktueller Stand 25.10.2009
Anmerkung von Alexander Kriegisch (kriegaex), 24.02.2008: Ja, das benutze ich auch seit gestern, und zwar speziell die mit Ubuntu Gutsy und XFCE (wahlweise auch KDE) vorkonfigurierte Variante andLinux, die man wahlweise als Dienst oder als Anwendung starten kann und mit einem einfachen Installer ausgeliefert wird. Scheint etwas langsamer zu sein als ein reines Linux, aber es ist schon cool, Linux-Fenster nativ neben Windows-Fenstern zu haben. :-) Der mitgelieferte X-Server Xming (für Windows) macht’s möglich. Ich verwende übrigens nicht mal ein X-Terminal, sondern logge mich sozusagen “headless” über SSH ein (Putty). Ab und zu lasse ich mal Synaptic oder als X-Editor SciTE laufen, den ich nachinstalliert habe. Ich baue gerade sämtliche Freetz-Pakete “from scratch” inkl. Download, es geht genauso wie in VMware oder nativem Linux, also Linux-Paketliste siehe oben.
Nachteile von coLinux/andLinux/speedLinux:
Vorteile von coLinux/andLinux/speedLinux:
Bei andLinux - Beta 2 minimal ist nicht ausreichend Platz für ein Build vorhanden. Ein Lösungsansatz: Den andLinux Dienst stoppen (Startmenü-andLinux-Stop andLinux) In das andLinux Installationsverzeichnis wechseln und die Datei “ImageResizeTool.zip” nach “Drives” entpacken. Dort die Datei “toporesize.bat” ausführen.
Leider hat das bei mir nicht funktioniert.
Alternative Möglichkeit:
Eine weitere Partition für Feetz anlegen.
Das bietet auch den Vorteil das bei Updates diese Partition nicht berührt wird und so wie diese ist weiter verwendet werden kann.
Wie macht man das?
Beispiel:
Eine Kopie von Drives\base.vdi auf Drives\copyofbase.vdi machen, der Inhalt kann später nach Einbindung gelöscht werden.
Im File settings.txt die folgende Zeile zusätzlich eintragen:
cobd2=Drives\copyofbase.vdi
Im gestartenten LINUX vorher Verzeichnis /mnt/freetz anlegen und in der Datei /etc/fstab folgende Zeile eintragen:
/dev/cobd2 /mnt/freetz ext3 defaults 1 1
SpeedLinux hat eine Option zum vergrößern der Partition.
Unter Cygwin funktioniert Freetz definitiv nicht, und auch für ds-0.2.9 (Kernel 2.4) wird Linux empfohlen, weil es mit Cygwin Probleme geben kann und es außerdem einen riesigen Geschwindigkeitsverlust beim Bauen (mehrfache Build-Dauer) bedeutet, Cygwin zu verwenden.
Da Freetz sich unter Cygwin ohnehin nicht bauen lässt, folgt hier lediglich die Beschreibung für ds-mod:
Ein Howto von dsl123 zum Kompilieren des ds-mod’s unter Cygwin gibt es
hier.
Zum Entpacken der Datei ds-*.tar.bz2
unter Windows ausschließlich
das Cygwin-tar — wie in der Anleitung beschrieben — verwenden:
ds-*.tar.bz2
in das Cygwin Home-Verzeichnis herunterladen (je nach
Installation z.B. C:/Cygwin/home/<Windows-Benutzername>/
)tar -xvjf ds-x.y.z.tar.bz2
cd ds-*/
make menuconfig
make
firmware_*.image
als Firmware Update auf die Box hochladen. Nach
einem erfolgreichen Upload ist nun auf Port 81 ein weiteres
Webinterface verfügbar, welches Instruktionen zum Abschluss der
Installation enthält. Sollte die Box nach dem Hochladen der Firmware
auch Minuten nachdem die Info LED aufgehört hat zu blinken nicht
mehr erreichbar sein (typischerweise leuchten periodisch immer
wieder alle LEDs auf), so kann die original Firmware mit Hilfe der
recover.exe
von AVM wiederhergestellt werden.Im Prinzip und mit ein paar Patches funktioniert ein aktuelles ds-mod auch unter Mac OS X. Zumindest ist mir gelungen, ds-0.2.9_26-14.2 unter Mac OS X zum Funktionieren zu überreden.
Zunächst sind folgende Voraussetzungen zu erfüllen:
Außerdem sind einige (GNU) Utilities nötig, die z.B. über Darwin Ports installiert werden können:
Und vermutlich ein paar weitere, wenn man die entsprechenden Packages anwählt.
Die zusätzlichen Utilities werden in der Regel unter Namen installiert, die mit g beginnen, um nicht mit den nativen Utilities von Mac OS X in Konflikt zu geraten. Manche Konfigurationsskripte setzen aber die Eigenschaften von GNU-Utilities voraus, auch wenn sie unter dem Standardnamen aufgerufen werden. Daher habe ich mir ein Verzeichnis erstellt, in dem Symlinks der Standardnamen auf die GNU Utilities zeigen. Zum Arbeiten mit ds-mod ist dieses Verzeichnis in den Suchpfad aufzunehmen:
~/gnubin $ ls -l
total 64
-rwxr-xr-x 1 enrik enrik 106 20 Mär 17:23 as
lrwxr-xr-x 1 enrik enrik 19 20 Mär 17:18 awk -> /opt/local/bin/gawk
lrwxr-xr-x 1 enrik enrik 18 20 Mär 18:32 cp -> /opt/local/bin/gcp
lrwxr-xr-x 1 enrik enrik 22 11 Apr 10:11 cpp -> /usr/local/bin/cpp-3.3
lrwxr-xr-x 1 enrik enrik 20 11 Apr 10:11 find -> /opt/local/bin/gfind
lrwxr-xr-x 1 enrik enrik 23 20 Mär 17:18 install -> /opt/local/bin/ginstall
-rwxr-xr-x 1 enrik enrik 106 20 Mär 17:24 ld
lrwxr-xr-x 1 enrik enrik 21 20 Mär 17:18 sed -> /opt/local/bin/gnused
Die Pseudebefehle as
und ld
dienen hier nur dazu, der glibc für den
Kernel-Compiler, die über crosstool erstellt wird, geeignete binutils
vorzugaukeln. Die beiden Dateien sehen so aus:
~/gnubin $ cat as
#! /bin/sh
# fake as version for crosstool
[ "$1" = -v ] && echo GNU assembler 2.13 || /usr/bin/as "$@"
~/gnubin $ cat ld
#! /bin/sh
# fake ld version for crosstool
[ "$1" = --version ] && echo GNU ld 2.13 || /usr/bin/ld "$@"
~/gnubin $ PATH=$HOME/gnubin:$PATH
Außerdem wird ein Patch für ds-mod benötigt, den man hier herunterladen kann:
Das ganze ist wenig getestet, insbesondere habe ich noch kein so erstelltes Image ausprobiert.
Freetz läuft nun also super auf der Box, und das schon seit längererm. Da kommt es vor, dass AVM eine neue Firmware-Version herausbringt, und auch die Freetz-Entwicklung weitergegangen ist. Kurzum: Man möchte nun natürlich auch von den neuen Features und Bugfixes profitieren. Wie bringt man also Freetz auf der Box auf den neuesten Stand?
Die Antwort ist recht einfach: “Siehe oben”. Eine Aktualisierung geht genau so vonstatten, wie auch die Erst-Installation: Man baut sich ein neues Freetz-Image und nutzt dann das “Firmware-Update” der Box.
Hat man für die Installation eine Repository-Version verwendet, bringt man selbiges zuvor auf den aktuellen Stand, indem man in das Quellverzeichnis wechselt und…
# In das Verzeichnis wechseln, in dem sich das "ausgecheckte" Freetz befindet:
cd freetz
# Quelldateien aktualisieren
svn up
# ggf. die Paketauswahl überprüfen, verändern, neue Patches aktivieren, etc.
make menuconfig
# Image bauen
make
Und jetzt das fertige Image auf die Box.
Falls bei der Erstellung des Images ein Fehler auftreten sollte, findet man die Lösung dazu wahrscheinlich in den FAQ.
Achtung: Die FAQ sollten in Deutsch angezeigt werden. Sollte das nicht der Fall sein, dann bitte diesen Tipp beachten.
Wenn das Hochladen des Images partout nicht klappen will hat man noch die Möglichkeit es manuell auf die Fritzbox zu bringen. Hierfür sollten bevorzugt die Helfer recover-eva und push_firmware aus dem tools/-Verzeichnis genutzt werden. Aber auch ein Einspieln per Hand ist möglich und wir im folgenden kurz beschrieben. Voraussetzung ist, daß wir ein fertig erstelltes Image besitzen und in einer Linuxumgebung arbeiten! Wir entpacken nun aus dem fertigen Image die kernel.image Datei und wechseln wenn nötig in das Verzeichnis in welchem die kernel.image Datei liegt. Jetzt wird es etwas trickreich, da die Fritzbox nur in den ersten 5-10 Sekunden nach Neustart per ftp zu erreichen ist. Wir geben also in unserer Linuxkonsole schon einmal den ersten Befehl ein ftp 192.168.178.1 und gehen dann zur Fritzbox, um sie über den Stromstecker zu resetten, eilen schnell wieder zurück und drücken die Enter-Taste. Wenn es geklappt hat wird man nach Benutzername und Passwort gefragt, er lautet für beides adam2. Weiter gehen wir wie folgt vor:
Eingabe am Prompt: bin
Eingabe am Prompt: passiv
Flash am Prompt initiieren mit: quote MEDIA FLSH
Datei übertragen mit: put kernel.image mtd1
Rebranding: quote SETENV firmware_version avm
Reboot der Box starten: quote REBOOT
ftp verlassen: quit
Es klappt meistens nicht beim ersten Versuch. Es hilft dann, ftp abzubrechen und es direkt nochmal neu zu versuchen.