Wiki:help/howtos/common/install.en

Version 4 (geändert von er13, vor 7 Jahren) (Diff)

added 32-bit development packages required on 64-bit systems

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, DON´T contact AVM support. /!\

Speedports: (see sp2fritz). From scriptversion 2.2.2008 the use of speed2fritz is possible.

Newbies: Please read 'Erste Schritte für Anfänger' first!

Virtual LINUX: FriBoLi / StinkyLinux / Freetz-Linux

StinkyLinux (formerly FriBoLi) is a virtual Linux-OS for building FritzBox firmware images under windows. Unfortunately, the support for StinkyLinux was discontinued some time ago. This means it cannot be used for freetz anymore without hassle with updates.

Because of that the new build environment Freetz-Linux was created by Silent-Tears (cinereous), as well as extended / distributed. 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 from time to 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. But the mentioned steps can (with some minor limitations) be used for every freetz-VM.

Vorbereitung

See also:

Buildumgebung Freetz-Linux Installieren

StinkyLinux Installieren (!!!obsolete!!!)

Freetz und Speed-to-Fritz Installation (relevant only for SpeedPort users)

StinkyLinux Homepage (Attention! instructions and images there aren´t up-to-date!)

Durchführung

  1. Needed files:
  2. Unpack Freetz-Linux under Windows with 7-Zip or WinRAR .
  3. VMWare Player starten und keine Einstellungen ändern, da sich die VM-Ware die IP-Adresse per DHCP selber holt. Sollte dieses nicht der Fall sein kann die IP-Adresse auch per Hand gesetzt werden:
    ifconfig eth0 192.168.178.xx netmask 255.255.255.0 broadcast 192.168.178.255
    
    (Wobei die Netzwerkkarte "eht0" evtl. durch eine eine andere ersetzt werden muss. Eine Auflistung aller Netzwerkkarten erhält man mit "ifconfig -a")
  4. Im VMWare Player mit dem Benutzernamen freetz und dem Passwort freetz anmelden.

    Jetzt gibt es mehrere Alternativen, wie man mit Freetz-Linux arbeiten kann und die Dateien zwischen Freetz-Linux und der Rest der Welt bewegen kann. Entweder arbeitet man direkt in der Konsole von Freetz-Linux, oder man nutzt andere Möglichkeiten.
    • SSH/SCP: Zu anderen Möglichkeiten gehört z.B. eine SSH/SCP-Verbindung mit putty oder/und mit WinSCP (beide nur als Beispiel). Als Servernamen für putty/WinSCP trägt man die IP-Adresse von Freetz-Linux. Benutzername und Passwort s. oben
    • SAMBA: Außerdem gibt es die Möglichkeit Daten zwischen Windows und Freetz-Linux über SAMBA auszutauschen. Dafür gibt man in der Adressenleiste von WindowsExplorer "
      Freetz-Linux" oder "
      IP-Adresse-von-Freetz-Linux" an und schon kann man die Dateien zwischen Windows und Freetz-Linux hin und her schieben.

      Alle diese Verbindungsmöglichkeiten sind unter Freetz-Linux voreingestellt und sollten von Anfang an funktionieren. Bei Problemen bitte Netzwerkverbindung, Firewall, etc. überprüfen. Ebenso sollten die Netzwerkeinstellungen vom VMWare-Player überprüft werden. Voreingestellt ist der Bridged-Mode. Anfangen mit den Tests sollte man mit "ping IP-Adresse-von-Freetz-Linux" unter Eingabeaufforderung.
  5. Je nachdem, für welche Methode man sich entschieden hat, macht man Folgendes:
    • SSH/TELNET: Diese Methode sollte bevorzugt werden! Anstatt freetz-1.1.x kann auch eine andere, z.B. Entwicklerversion genommen werden.
      svn co http://svn.freetz.org/tags/freetz-1.1.x freetz-1.1.x
      
  6. Optional: Patch einspielen (siehe Howto)
  7. In das Verzeichnis des ausgecheckten/entpackten Freetz wechseln:
    cd freetz-*/
    
  8. 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
    
  9. 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. Beim ersten Mal dauert es etwas länger. Man kann also ruhig eine Kaffee- oder Teepause anlegen.
    unset CFLAGS CXXCFLAGS
    make
    
  10. Unter ~/freetz-*/images befindet sich die neue Firmware (z.B. 7170_04.76freetz-devel-3790.de_20091021-180742.image).
  11. 7170_04.76freetz-devel-VVVV.de_YYYYMMDD-HHMMSS.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.

Linux

Notwendige Pakete

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
  • jam - Ersatz für make (s.o.); nur notwendig für Package transmission, kann ansonsten weggelassen werden
  • 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ür make recover
  • intltool - make menuconfig

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.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.
  • 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

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

Eine einfache Möglichkeit die benötigten Pakete zu installieren besteht darin, diesen Code in der Konsole auszuführen:

sudo apt-get -y update
sudo apt-get -y upgrade
sudo apt-get -y dist-upgrade
sudo apt-get -y install subversion gcc g++ binutils autoconf automake automake1.9 automake1.8 libtool make bzip2 libncurses5-dev zlib1g-dev flex bison patch texinfo tofrodos gettext jam pkg-config jikes ecj-bootstrap fastjar realpath perl libstring-crc32-perl ruby ruby1.8 gawk python libusb-dev unzip
# Angepasst z.B. auf ubuntu 9.04 (kein automake 1.8, "ecj" statt "ecj-bootstrap" und ergänzt um "intltool"):
sudo apt-get -y install subversion gcc g++ binutils autoconf automake automake1.9 libtool make bzip2 libncurses5-dev zlib1g-dev flex bison patch texinfo tofrodos gettext jam pkg-config jikes ecj fastjar realpath perl libstring-crc32-perl ruby ruby1.8 gawk python libusb-dev unzip intltool
# on a 64-bit system one also has to install the following 32-bit development packages
sudo apt-get -y install libc6-dev-i386 lib32ncurses5-dev

Erstellung & Installation

  1. Shell öffnen, ins Verzeichnis von freetz-//xxx//.tar.bz2 wechseln und diesen mit tar -xvjf ds-x.y.z.tar.bz2 entpacken
  2. Optional: Patch einspielen (siehe Howto)
  3. Mit cd freetz-xxx/ in das Verzeichnis des entpackten Freetz wechseln
  4. 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.
  5. 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 simples make.
  6. *.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.

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:

  1. Cygwin Installer von http://www.cygwin.com/ herunterladen und ausführen
  2. Cygwin mit den folgenden Paketen installieren:
    • Archive > unzip
    • Devel > gcc, libncurses-devel, make, patchutils
    • Interpreters > perl
    • Web > wget
  3. ds-*.tar.bz2 in das Cygwin Home-Verzeichnis herunterladen (je nach Installation z.B. C:/Cygwin/home/<Windows-Benutzername>/)
  4. Cygwin Shell öffnen und den ds-mod entpacken tar -xvjf ds-x.y.z.tar.bz2
  5. Optional: Patch einspielen (siehe Howto)
  6. In das Verzeichnis des entpackten ds-mod wechseln cd ds-*/
  7. 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
  8. 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
  9. 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.

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:

  1. Datenpartition erstellen, bei der das HFS+ case sensitive konfiguriert ist.
  2. 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 "$@"
~/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.

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.

Troubleshooting

AVM Firmware wird nicht gefunden

  1. FAQ

Achtung: Die FAQ's sollten in Deutsch angezeigt werden. Sollte das nicht der Fall sein, dann Bitte diesen Tip beachten.

Image too big

  1. FAQ

Achtung: Die FAQ's sollten in Deutsch angezeigt werden. Sollte das nicht der Fall sein, dann Bitte diesen Tip beachten.

Sonstige Probleme oder Fehlermeldungen

  1. FAQ

Achtung: Die FAQ's sollten in Deutsch angezeigt werden. Sollte das nicht der Fall sein, dann Bitte diesen Tip beachten.

Weiterführende Links