Installation¶
Freetz provides some scripts for
modifying an original firmware. Because of license issues the
distribution of original or modified firmware images is forbidden.
the
installation of a modified firmware invalidates the manufacturer's
warranty! In case of problems, do NOT contact AVM support.
Speedports: (see
sp2fritz).
From scriptversion 2.2.2008 the use of speed2fritz is possible.
Newbies: Please read 'Freetz for Beginners'
first!
Virtual LINUX: FriBoLi / StinkyLinux / Freetz-Linux¶
StinkyLinux
(formerly FriBoLi) is a virtual Linux operating system for building
FritzBox firmware images on Windows. Unfortunately, support for
StinkyLinux was discontinued some time ago. This means it cannot be used
for freetz anymore without hassle with updates.
Because of that, a new build environment
Freetz-Linux
was created by Silent-Tears (cinereous), who also maintains it. The use
of this environment is strongly recommended if no native linux can be
used.
The following instructions were initially adopted from
Saphir
, but have grown over time and were completed and/or edited by many
different users. We try to keep these up-to-date and adapt it to the
current versions of VM and freetz. However, the steps below can (with
some minor limitations) be used for every freetz-VM.
Preparation¶
See also:
Installing
StinkyLinux
(!!!obsolete!!!)
Installing Freetz and
Speed-to-Fritz
(SpeedPort users only)
StinkyLinux
Homepage
(Attention! instructions and images there are out of date!)
Execution¶
- Needed files:
- VMware
Player - Freetz-Linux:
Image for VMWare Player or StinkyLinux: Image for VMWare Player
(StinkyLinux-v1.06.7z),
(Download-Source:
Mirrors) - Freetz, (Download-Source:
Downloadseite) - optional patches for freetz, (Quelle: Freetz
Forum)
- VMware
- Unpack
Freetz-Linux
under Windows using
7-Zip
or
WinRAR
. -
Run VMWare Player. Leave all settings as they are; the Player will
be able to connect to the Internet by itself. If not, you can set up
internet access manually like so:(where
eth0might have to be replaced with your configured network
interface. "ifconfig -a" will list all network interfaces
available to your virtual machine.) -
In VMWare Player, log on as user freetz with password freetz.
\
From here, there are several ways to work with Freetz-Linux and to
exchange files between Freetz-Linux and the rest of the world. One
might work on Freetz-Linux' console, for example.- SSH/SCP: One might also connect to the VM using an SSH/SCP
connection. Windows clients include
putty
and
WinSCP.
Enter the VM's hostname (or IP-Address) under "Server name".
For "name" and "password" please use the credentials
indicated above. - SAMBA: It is also possible to exchange data between Windows
and Freetz-Linux via SAMBA. To do that, enter "\
Freetz-Linux" or "\
Freetz-Linuxs-IP-Address" in Explorer's address bar and you
get a listing of files and folders present in your VM. Then, you
can move and copy them around as usual.
\
All those connection options have been pre-set in Freetz-Linux
and should work out-of-the-box. If problems occur, please verify
your network connection(s), and your firewall settings (if
applicable). Also, don't forget to verify VMWare Player's
network connection settings. By default, VMWare Player uses
Bridged Mode. To start with, run
ping <IP-Address-of-Freetz-Linux>inside Command Prompt.
- SSH/SCP: One might also connect to the VM using an SSH/SCP
- Depending on your preferred choice, you proceed with one of the
following:-
SSH/TELNET: (the preferred method)
-
You can replace freetz-1.1.x with any other valid tag, or use the
development /trunk if you wish.
- Optional: Apply patch(es) (see
Howto) -
Change into the freetz directory you just checked out (or unpacked
into): -
Configure freetz. It is possible to do this using a
ncurses
interface, the same one being used to configure the Linux kernel.
For a detailed description, see
menuconfig. -
Modify firmware. In this step, the original firmware and packages
matching your configuration as well as the necessary build tools are
being downloaded automatically and a new one is being built,
according to your configuration, in three distinct steps. The first
run through will take a little while, so you might want to have some
coffee or tea in the meantime.
- In
~/freetz-*/images, you'll find your newly built firmware (e.g.
7170_04.76freetz-devel-3790.de_20091021-180742.image). - Upload the image
<BOX_VERSION>_<ORIG_FIRMWARE_VERSION>freetz-devel-VVVV.<LANG>_YYYYMMDD-HHMMSS.image
as Firmware Update to your FritzBox. After successful Upload, you
can access a secondary web interface on port 81 of your box,
offering detailed instructions to finalize installation. Should your
Box be unreachable even though INFO-LED stopped flashing several
minutes ago - especially if, in regular intervals, all LEDs
light up), you can recover your box' original firmware on most Box
types.
Linux¶
Notwendige Pakete¶
- Siehe PREREQUISITES
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
freetz-1.0¶
- gcc - GNU C Compiler
- g++ - GNU C++ Compiler
- binutils - GNU Assembler, Linker und Binary-Werkzeuge
- autoconf - dem Make vorgeschalteter Generator für
Konfigurationsskripten nach GNU-Standard; hilft dabei,
plattformunabhängig programmierte Software letztendlich für einen
plattformspezifischen Build vorzubereiten - automake ab Version 1.10 - Makefile-Generator nach GNU-Standard;
wird nicht für alle DS-Mod-Pakete benötigt, aber z.B. für
privoxy; Paketmanager
installiert normalerweise autoconf als abhängiges Paket gleich mit - automake-1.9 - Version, die zusätzlich speziell von
tar-1.15.1
aus tools benötigt wird - libtool - hilft beim Erstellen von statischen und dynamischen
Bibliotheken; kann z.B. beim aufruf von autoreconf notwendig
werden - GNU make ab Version 3.81 - skriptgesteuertes Build-System
- bzip2 - (Ent)packen von Software-Archiven
- libncurses5-dev - Entwickler-Bibliothek für ncurses (Erzeugung
komfortabler textbasierter Benutzerschnittstellen, vgl.
make menuconfig) - zlib1g-dev - Entwickler-Bibliothek für gzip-Kompression
- flex - lex-kompatibler Generator für lexikalische Analyse
- bison - YACC-kompatibler Parser-Generator
- patch - Programm, um Patches anzuwenden
- texinfo - Online-/Druck-Doku aus gemeinsamer Quelle erzeugen
- tofrodos - Dateiumwandlung DOS ↔ UNIX (für was wird das
benötigt?) - gettext - Texte in Programmen internationalisieren
- pkg-config - Hilfstool welche zum Bauen von Binaries und
Libraries nötig ist; notwendig für Packages ntfs und transmission - ecj-bootstrap - Eclipse Java Compiler (evtl. auch libecj-java
und ecj in neueren Distributionen); nur notwendig für Package
classpath ab 0.95 bzw. ds26-14.5 - perl - Perl-Interpreter; notwendig für
make recover - libstring-crc32-perl - Perl-Modul zur Berechnung von
CRC32-Prüfsummen; notwendig fürmake recover - intltool -
make menuconfig
freetz-1.3¶
- xz-utils - (Ent)packen von Software-Archiven im xz-Format
aktuelle Entwicker Version und spezielle Pakete¶
Diese benötigen zusätzlich zu bereits unter freetz-1.0 genanntem noch
folgende Pakete:
- svn - Subversion zum Auschecken der aktuellen Freetz-Versionen
- ruby1.8 - objektorientierte Skriptsprache (Version 1.8.6); nur
notwendig für Package ruby (ab freetz-devel) - seltsamerweise
benötigt der Crosscompile für ruby-1.8.6 eine installierte Version
seiner selbst als Voraussetzung. Zu allem Überfluß könnte es sein,
daß Sie im Paket zwar/usr/bin/ruby1.8o.ä. haben, aber nicht das
vom Makefile benötigte Binary Namens ruby. Da hilft im o.g.
Beispielsudo ln -s ruby1.8 /usr/bin/rubybzw. die Ausführung des
ln-Befehls als Benutzer root. - gawk - GNU awk; notwendig für das Skript
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. - python - Python-Interpreter; notwendig, um via
tools/mklibs.py
unbenutzte Symbole aus Bibliotheken zu entfernen, um Platz zu sparen
(ab freetz-devel) - libusb-dev - Entwicklungs-Bibliothek für USB-Anwendungen im
Userspace; nur notwendig für SANE, wenn bspw.
Multifunktionsdrucker/-scanner an die FritzBox angebunden werden
sollen. Siehe auch
Forums-Beitrag
dazu. - realpath - wird nur von Entwicklern benötigt, die ab ds26-15
innerhalb von fwmod beim Build das Patch-Auto-Fixing verwenden
(AUTO_FIX_PATCHES im Environment). Wer nicht weiß, wovon die Rede
ist, braucht es auch nicht. - fastjar - Implementation des Java jar utils; nur notwendig für
Package classpath - graphicsmagick - enthält
compositemit dem Bilder kombiniert
werden können; nur notwendig wenn man das AVM-Webinterface
"taggen" möchte
alte Entwicker Versionen¶
Hier wird zusätzlich folgendes benötigt:
- automake-1.8 - Version, die zusätzlich speziell von libid3tag
benötigt wird. Nicht mehr erforderlich ab Freetz 1.0. - jikes - Java Byte Code Compiler; nur notwendig für Package
classpath bis 0.93 bzw. ds26-14.4
Installation der benötigten Pakete¶
- Verschoben: PREREQUISITES
Erstellung & Installation¶
- Shell öffnen, ins Verzeichnis von
freetz-//xxx//.tar.bz2wechseln
und diesen mittar -xvjf ds-x.y.z.tar.bz2entpacken - Optional: Patch einspielen (siehe
Howto) - Mit
cd freetz-xxx/in das Verzeichnis des entpackten Freetz
wechseln - Konfiguration wählen. 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 make menuconfig. - Firmware modifizieren. In diesem Schritt werden die zu der gewählten
Konfiguration passenden original Firmware und Pakete, sowie Sourcen
für die benötigten Tools vollautomatisch heruntergeladen und die
modifizierte Firmware in drei Schritten erzeugt. Dies erledigt ein
simplesmake. *.imageals 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.
coLinux / andLinux / speedLinux¶
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:
- bei Multicore-Prozessoren wird nur ein Kern benutzt
- keine 64bit Unterstützung
- gravierende Systemanpassungen (spezieller Kernel, etc) bei Updates
des Systems notwendig.
Vorteile von coLinux/andLinux/speedLinux:
- kommt mit weniger RAM aus als VMWare (geringerer Ressourcenbedarf)
- native Windowsfenster
Cygwin¶
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:
- Cygwin Installer von
http://www.cygwin.com/
herunterladen und ausführen - Cygwin mit den folgenden Paketen installieren:
- Archive > unzip
- Devel > gcc, libncurses-devel, make, patchutils
- Interpreters > perl
- Web > wget
ds-*.tar.bz2in das Cygwin Home-Verzeichnis herunterladen (je nach
Installation z.B.C:/Cygwin/home/<Windows-Benutzername>/)- Cygwin Shell öffnen und den ds-mod entpacken
tar -xvjf ds-x.y.z.tar.bz2 - Optional: Patch einspielen (siehe
Howto) - In das Verzeichnis des entpackten ds-mod wechseln
cd ds-*/ - Konfiguration wählen. 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 - Firmware modifizieren. In diesem Schritt werden die zu der gewählten
Konfiguration passenden original Firmware und Pakete, sowie Sourcen
für die benötigten Tools vollautomatisch heruntergeladen und die
modifizierte Firmware in drei Schritten erzeugt.make firmware_*.imageals 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.exevon AVM wiederhergestellt werden.
Mac OS X¶
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:
- Datenpartition erstellen, bei der das HFS+ case sensitive
konfiguriert ist. - Xcode installieren. Dadurch erhält man geeignete Versionen von u. a.
- gcc
- g++
- autoconf
- automake
- make
- ncurses
- zlib
- flex
- bison
Außerdem sind einige (GNU) Utilities nötig, die z.B. über Darwin Ports
installiert werden können:
- gettext
- texinfo
- dos2unix
- gawk
- coreutils
- findutils
- gsed
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 "$@"
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.
Aktualisierung¶
Freetz läuft nun also super auf der Box, und das schon seit längerer
Zeit. Da kommt es unvermeidlich vor, dass AVM eine neue Firmware-Version
herausbringt, und auch die Freetz-Entwicklung ist weitergegangen.
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 selbige 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.