Freetz Einleitung

Aus Zebradem WIKI
Zur Navigation springenZur Suche springen

ZD-Logo.png
Das Board mit Freiheiten





Zebradem Fritzbox Wiki >> Freetz Einleitung Magyar, Nederlands, Italiano, English
Community Modelle Freetz Fritzbox Tipps & Tricks

Einführung Freetz Pakete Freetz Addons Freetz Tipps Freetz chroot Freetz Images Freetz Faqs

Was ist eigentlich Freetz ?

Freetz wurde am 2. Februar 2008 ins Leben gerufen. Freetz, eine Zusammensetzung aus dem englischen free (= frei) und dem deutschen Namen Fritz, ist ein Software-„Baukasten“ für Entwickler und setzt die Entwicklungswerkzeuge des freien Betriebssystems Linux voraus. Mit Freetz können versierte Anwender auf der Original-Firmware des Herstellers aufbauende, funktional modifizierte Firmware-Versionen für die diverse DSL-, LAN-, WLAN- bzw. VoIP-Router der Marken Fritzbox bzw. Speedport und die auf ihnen beruhenden Geräte bauen und diese auf das betreffende Gerät transferieren. Es werden eine Vielzahl von Erweiterungspaketen sowie Möglichkeiten, nicht benötigte Funktionalität der Original-Firmware zu entfernen, angeboten. Die Bandbreite der Einflussmöglichkeiten reicht vom Einbinden diverser Linux-Dienste bis zum expliziten Ausblenden störender Trägerbänder im DSL-Spektrum, um Anschlüsse mit hoher Dämpfung zu optimieren.
Durch die MIPS CPU s die in der Fritzbox verbaut wurden, ist es möglich auch EMU s auf der Fritzbox laufen zu lassen, und somit Die Fritzbox als CS Server zu verwenden Achtung: Die Installation einer modifizierten Firmware führt zum Verlust der Gewährleistung des Herstellers!

Wie entstand Freetz ?

Es gibt einige Vorläufer von Freetz. Daniel Eiband (bekannt als "Danisahne") hat vor einigen Jahren, aufbauend auf Vor- und Zuarbeiten anderer kreativer Köpfe (Erik Andersen, Christian Volkmann, Andreas Bühmann, Enrik Berkhan u.a.), den sog. Danisahne-Mod (kurz: DS-Mod) ins Leben gerufen. So wie heute mit Freetz, konnte und kann man auch damit Firmware-Modifikationen bauen, allerdings noch für ältere Firmware-Versionen mit Linux-Kernel 2.4. Da einige Router noch immer auf Kernel 2.4 basierende Firmwares haben, ist Version ds-0.2.9-p8 des DS-Mod für jene Geräte immer noch aktuell. Für die Mehrzahl aktueller Geräte war der direkte Vorläufer zu Freetz jedoch die von Oliver Metz ins Leben gerufene Version ds26 (zuletzt ds26-15.2), welche ausschließlich für Firmwares mit Kernel 2.6 geeignet ist. Selbiges gilt auch für Freetz, denn Freetz ist Stand heute (20.01.2008) nichts anderes als die aktuelle Entwicklerversion von ds26, nur mit neuem Namen.


Freetz macht mehr aus der Box!

Nicht immer hat der Hersteller der Box in seiner Firmware genau die Funktionen vorgesehen, die man sich selber wünscht. Freetz kann das ändern! Die Funktionalität der Box kann den individuellen Bedürfnissen angepasst werden. Freetz kann Funktionalität

  • hinzufügen.

Das könnte zum Beispiel ein Web-Server auf der Box sein oder ein spezielles VPN. Die Liste der Pakete gibt hierzu eine Übersicht.

  • verändern.

Manchmal ist die Funktion da, aber sie lässt sich im Original nicht oder nicht detailliert genug konfigurieren (z. B. die integrierte Firewall). Die Liste der Erweiterungen gibt hier einen Überblick.

  • entfernen.

Das kann nötig werden, wenn man eine Funktion nicht braucht oder für zusätzliche Pakete Platz schaffen möchte (der Speicher der Box hat seine Grenzen). Auch hier gibt es einen Überblick in der Liste der Patches.

Wie funktioniert Freetz ?

Software ds-mod freetz-how-it-works-400x230.png

Die Firmware der Box besteht aus vielen einzelnen Komponenten. Sie wurden von verschiedenen Personen und Firmen entwickelt und bilden gemeinsam die Firmware der Box. Freetz tauscht nun einzelne Komponenten aus, verändert ihre Konfiguration oder fügt neue Komponenten ein. So entsteht eine neue Firmware für die Box ganz nach den individuellen Wünschen. Diese neue Firmware kann über die gewohnte Update-Funktion auf die Box installiert werden. Die ursprüngliche Funktionalität inklusive der AVM Weboberfläche bleibt erhalten, Freetz kann sozusagen als Erweiterung angesehen werden.

Wozu überhaupt ein neuer Name, wo doch DS-Mod inzwischen so bekannt ist ?

Es gibt mehrere Gründe dafür. Zum einen ist seit gut einem Jahr Daniel nicht mehr aktiv an der Weiterentwicklung von ds26 beteiligt gewesen, zum anderen hat er bei SourceForge schon etwa ebenso lange begonnen, eine von Grund auf neue DS-Mod-Version - nennen wir sie mal inofiziell DS-Mod NG (Next Generation) - zu entwickeln, deren aktueller Stand in einem öffentlich zugänglichen Quellcode-Repository auf der Projekt-Webseite einzusehen ist. Wir wollen Daniel seinen Projektnamen nicht streitig machen und auch nicht in Konkurrenz zu ihm treten, sondern hoffen im Gegenteil, daß er eines Tages wieder mehr Zeit für sein Projekt haben wird und schlußendlich beide wieder in ein gemeinsames münden, um alle Vorteile in einem Produkt zu vereinen. Zurzeit ist es jedoch so, daß beide Projekte sich deutlich auseinander entwickelt haben: DS-Mod NG hat eine sehr saubere Struktur, ist jedoch noch lange nicht fertig, Freetz (bzw. bisher ds26) ist hundertfach im Einsatz und wird eher während der laufenden Entwicklung immer wieder mal Refactoring-Maßnahmen unterworfen. Wo zuletzt in der Presse (z.B. PC-Welt) vom DS-Mod gesprochen wurde, war Freetz alias ds26 gemeint.


Warum Firmware modifizieren ?

Es können zwar einzelne spezielle Dateien (character devices) unter /var/flash/ bearbeitet werden und sie behalten den Inhalt auch über einen Reboot hinweg, jedoch trifft das nicht auf den Rest des Dateisystems zu. Der Inhalt dieser character devices landet in einer eigenen Flash Partition, die sehr klein ist. Der überwiegende Teil des Dateisystems ist ein read-only Squashfs Image, welches in einem Firmware Update enthalten ist. Um (größere) Dateien dauerhaft in die Firmware einzubinden müssen sie in dieses Squashfs Image gelangen, welches unter anderem in Freetz implementiert ist.

Quellcode

Der Quellcode von Freetz kann aus dem Subversion-Repository bezogen werden: Stabile Version

Je nach Gerätetyp wird eine der nachstehenden Versionen benötigt:

freetz-1.1.2 (Kernel 2.6)

svn co http://svn.freetz.org/tags/freetz-1.1.2/

Alternativ kann der stable-branch-1.1 genutzt werden. Hier sind evtl. Fehler im Release 1.1.x gefixt.

svn co http://svn.freetz.org/branches/freetz-stable-1.1e-1.1/ 

Eventuell vorhandene Änderungen am stable branch erhält man mit:

svn up

  • Bevor ihr nach einem "svn up" ein neuen Fehler meldet, stellt bitte sicher, dass der Fehler nach einem "make dirclean" noch immer auftritt.

ds-0.2.9-p8 (Kernel 2.4)

svn co http://svn.freetz.org/tags/ds-0.2.9-p8/ ds-0.2.9-p8

  • Entwicklerversion

Diese Version ist ausschließlich für Profis gedacht, die sich u.U. selbst zu helfen wissen! Sie ist ständigen Änderungen unterworfen und funktioniert möglicherweise nicht oder nur eingeschränkt.

svn co http://svn.freetz.org/trunk freetz-trunk

Update auf die neueste Entwicklerversion

svn up

  • Bevor ihr nach einem "svn up" ein neuen Fehler meldet, stellt bitte sicher, dass der Fehler nach einem "make dirclean" noch immer auftritt.

Man kann auch eine bestimmte Revision auschecken, falls z.B. die aktuelle nicht funktionieren sollte. Dabei einfach $revision durch die gewünschte Revision ersetzen.

svn co http://svn.freetz.org/trunk/ freetz-trunk -r $revision

Neu trunk für die 7390

http://trac.freetz.org/browser/branches/oliver/7390


Aussehen

Momentan gibt es nur ganz wenige Möglichkeiten, das Aussehen von FREETZ- oder auch von AVM-Webinterface zu verändern. Bei AVM hängt es damit zusammen, dass man die Urheberrechte von AVM auf ihre Webseiten nicht verletzen will. Bei FREETZ-WebIF ist es mehr historisch gewachsen: Bei der Vielfalt der vorhandenen Pakete ist es momentan nur schwer denkbar globale Änderungen im WebIF-Design durchzuführen. [1] [2]

Bibliotheken (libraries)

Bibliotheken (im Nachfolgenden "libs" genannt") zu Paketen, die abgewählt wurden, werden nicht automatisch mit abgewählt. Um nach der Abwahl diverser Pakete auch die nicht mehr benötigten libs zu entfernen (damit das Image nachher auch tatsächlich nicht zu groß wird) gibt es das folgende make target:

make config-clean-deps

Addons

Möglichkeiten

  • Man kann sich die Addons für seine Bedürfnisse anpassen oder für neue Anwendungen auch neue Addons erstellen

Pakete & CGI-Erweiterungen

siehe |Freetz Wiki


Erstellen von Firmware-Images (make/Build)

Ablauf

Sind die Voraussetzugen geschaffen, kann es los gehen. Es ist soweit, die individuelle Firmware … Freetz menuconfigFreetz menuconfig

  • Zusammenstellen.

Der Prozess ist menü-gesteuert. Man kann festlegen, was genau in die Box kommt und worauf man verzichten kann/will/muss. Freetz kennt die Abhängigkeiten unter den Komponenten und sorgt für eine funktionierende Kombination.

  • Herstellen.

Abhängig von der Leistungsfähigkeit des Pcs dauert dieser Prozess eine kleine Weile, läuft im Normalfall aber automatisch ab. Je nach gewählten Komponenten, werden dabei weiter Dateien (Quellen) aus dem Internet geladen. Nach Abschluß ist eine fertige Firmware (Image) entstanden.

  • Installieren über das normale Firmware-Update der Box.

Die neuen Funktionalitäten auf der Box konfigurieren und benutzen. In der Konfiguration der Box findet sich jetzt in Link auf Freetz. Hier können die zusätzlichen neuen Pakete konfiguriert werden.

Detaillierte Information über die Freetz-Installation finden sich auf der entsprechenden Wiki-Seite. Für Anfänger existiert eine spezielle Anleitung, die man als Freetz-Neuling unbedingt lesen sollte.

Die Einstellungen in der FritzBox bleiben normalerweise bei einem Upgrade auf Freetz erhalten.


Was bedeuten die einzelnen make-targets (z.B. dirclean, distclean, config-clean-deps etc.)?

A: Die make-targets beeinflussen den Build-Prozess bei der FW-Erstellung.

1. Aufräumen:

make clean

make <Paket>-clean

ruft normalerweise das clean-Target des Source-Makefiles auf. Dieses wird typischerweise alle generierten Dateien (vor allem Object-Dateien, Libraries und ausführbare Programme) löschen. Ein nachfolgendes make wendet keine geänderten Patches an, sondern erstellt nur die o.g. Object-Dateien, Libraries und ausführbare Programme neu (compilieren). Z.B. räumt make mc-clean so das Paket "Midnight Commander" (mc) auf.

make <Paket>-dirclean

löscht das gesamte Verzeichnis des Pakets. Ein nachfolgendes make wird die Quellen neu auspacken, die Patches anwenden, das Paket konfigurieren und dann compilieren. Nur der letzte Schritt (compilieren) wird nach make <Paket>-clean (s.o.) ausgeführt.

make dirclean

führt, wie der Name schon sagt, ein "Verzeichnis-Aufräumen" durch. Hierbei werden unter anderem die Verzeichnisse /packages, /source, /build, /toolchain/build, toolchain/target (und ein paar andere Sachen(?)) gelöscht, sodass bei erneutem Ausführen von make alles neu gebaut werden muss. Dies ist empfehlenswert, wenn sich Aufgrund eines svn up eine neu gebaute Firmware nicht so Verhält, wie man es erwartet. Alternativ kann man, wenn man weiß, an welchem Packet es liegt, dieses auch via make <Paket>-dirclean einzeln löschen (siehe oben). Zu erwähnen sei noch, dass nach einem make dirclean der Bau der Firmware natürlich länger dauert, da ja alles neu gebaut werden muss.

make tools-distclean

löscht die Tools (busybox, lzma, squashfs, usw.)

make distclean

Hier werden zusätzlich zum make dirclean auch noch die Downloads sowie die Tools gelöscht.

make config-clean-deps

Wenn bei make menuconfig Pakete abgewählt wurden, sind ggfs. noch Shared Libraries ausgewählt, die nicht mehr benötigt werden (dies kann menuconfig nicht automatisch erkennen). Diese kann man dann manuell unter 'Advanced Options'→'Shared Libraries' abwählen - die benötigten lassen sich nicht deaktivieren. Alternativ kann man dies automatisch mittels make config-clean-deps erledigen lassen.

make kernel-dirclean

löscht den aktuell entpackten Source-Tree des Kernels, um von komplett sauberen Kernel Sourcen zu kompilieren (wichtig wenn was an den Patches geändert wird)

make kernel-clean

analog make <Paket>-clean

make kernel-toolchain-dirclean

löscht den Kernel-Compiler

make target-toolchain-dirclean

löscht den Compiler für die uClibc und die Binaries (ausführbare Programme)

2. Vorbereitungen:

make world

Vorraussetzung ist eine Toolchain (siehe Cross-Compiler / Toolchain erstellen). Sollten jemals Probleme mit nicht vorhandenen Verzeichnissen auftauchen, so kann ein make world Abhilfe schaffen. In der Regel sollte das aber nicht nötig sein.

make kernel-toolchain

kompiliert den Kernel und auch für das target (Fritzbox) Aus historischen Gründen wurde die Bezeichnung als kernel-toolchain belassen, obwohl damit wie gesagt nicht nur der Kernel gebaut wird, sondern auch Pakete (s.u.).

make target-toolchain

kompiliert die Pakete für das target (Fritzbox)

make kernel-menuconfig

Die Konfiguration des Kernels wird danach wieder nach ./make/linux/Config.<kernel-ref> zurückgespeichert.

make kernel-precompiled

Damit werden der Kernel und die Kernel Module kompiliert.

3. Image kompilieren:

make menuconfig 

Zum Konfigurieren von Freetz kommt das Programm conf/mconf zum Einsatz, welches dem ein oder anderen vielleicht von der Konfiguration des Linux Kernels bekannt ist. Die ncurses Variante mconf kann mit dem Kommando make menuconfig aufgerufen werden.

make 

Übrigens: Eine Hilfe zu den einzelnen Punkten kann direkt in menuconfig durch Eingabe von "?" aufgerufen werden. Und nach Eingabe von "/" kann man von allen Ebenen aus nach beliebigen Zeichenfolgen suchen - sehr praktisch.


Entwicklung

Wann kommt Version xy ?

Grundsätzlich: It's done when it's done. Die Entwickler arbeiten in ihrer Freizeit, und Releases gibt es dann, wenn die beschlossenen Features fertig und release-kritische Bugs behoben sind.

Es gibt jedoch einen groben Plan für die Releases: 3-4 Monate nach einer stabilen Release gibt es einen Feature Freeze für die nachfolgende Release. Ab diesem Zeitpunkt werden nur noch Bugs behoben. Die Feature-Freeze-Termine werden in der [/roadmap Roadmap] angekündigt. Nach dem Feature Freeze kann grob nach 1 bis 1,5 Monaten mit dem Release gerechnet werden. Zwischen den stabilen Feature-Releases gibt es ggfs. weitere Maintenance-Releases, die nur neue Firmwareversionen von AVM unterstützen und Fehler beheben.

Trunk, Branches, Tags ?

Der [browser:trunk Trunk] ist der aktuelle Entwicklungszweig. Unter einem Branch versteht man ein Zweig, der zu einer bestimmten Zeit (z.B. r2759) aus dem trunk abgetrennt wurde. Hier gibt es derzeit die Branches [browser:branches/freetz-stable-1.0 freetz-stable-1.0] und [browser:branches/freetz-stable-1.1 freetz-stable-1.1]. Alle Releaseversionen bekommen einen Tag (z.B. [browser:tags/freetz-1.1.2 freetz-1.1.2])


Beim Erstellen tritt ein Fehler auf, was nun ?

Zunächst einmal die folgende Liste der häufigen Fehler durchgehen:

You must have either have gettext support in your C library, or use the GNU gettext library.

Hier ist wohl ein falscher Wert im Cache gelandet, den man löschen muss: "rm make/config.cache" oder "rm source/target-mipsel_uClibc-0.X.XX/config.cache" jenachdem, wo die Datei zu finden ist. Und danach wird der FW-Bau wieder mit "make" gestartet.

ERROR: The program/library/header xy was not found...

Wenn mit die ersten Meldungen so aussehen, fehlen für die Erstellung von Freetz unbedingt notwendige Pakete im Build-System und müssen zunächst installiert werden.

WARNING: The program/library/header xy was not found...

Wenn die Erstellung mit einem Fehler abbricht, kann diese Warnung zu Beginn des Vorgangs darauf hindeuten, daß für bestimmte ausgewählte Optionen notwendige Pakete im Build-System fehlen.

No such file `FRITZ.Box_xxxxxxxxx.aa.bb.cc.image'

Das passiert regelmäßig immer dann, wenn AVM eine neue Firmware-Version herausbringt - da auf dem AVM FTP Server nie mehr als eine (i.d.R. die aktuelle) Firmware liegt. Freetz unterstützt natürlich nur die Versionen, die zum Zeitpunkt des Release aktuell waren.

Please copy the following file into the 'dl/fw' sub-directory manually: fritz_box_aa_bb_cc-ddddd.image

Die Labor-Firmwares können nicht direkt vom AVM-FTP-Server heruntergeladen werden. Sie müssen manuell von der AVM-Labor-Seite geladen werden, wobei die Nutzungsbedingungen zu bestätigen sind. Die Dateien müssen dann entpackt und das darin enthaltene Image in den Ordner 'dl/fw' kopiert werden. Hierbei gilt auch das zur vorigen Frage Gesagte.

./ln: cannot execute binary file

Das aktuelle Verzeichnis '.' ist im Pfad (Variable PATH). Zum erfolgreichen Erstellen muss es entfernt werden.

Filesystem image too big

Das Firmware-Image passt nicht in den Flash-Speicher der ausgewählten Box.

  • Bei manchen Boxen kann dies bereits auftreten, wenn überhaupt keine zusätzlichen Pakete ausgewählt sind, da die grundlegende Freetz-Infrastruktur bereits einigen Platz belegt und die AVM-Images schon knapp unter dem Maximalwert liegen. In diesem Fall ist es notwendig, unter 'Patches' einen oder mehrere der Remove-Patches auszuwählen, um nicht benötigte Komponenten der Original-Firmware zu entfernen.
  • Wenn viele Pakete ausgewäht sind, sollte man sich beschränken oder versuchen per external, Downloader, usb-root, USBRoot, NFSRoot einige Komponenten aus dem Image auszulagern. Näheres dazu im IPPF und |hier
  • Bei den Boxen mit einem USB-Host (z.B. 7170,7270) kann man auch einzelne Pakete auf das externe USB-Medium (z.B. USB-Stick, USB-Festplatte) auslagern. Die Auslagerung wird nach dem make-Prozess automatisch von einem Skript namens external ausgeführt. Im menuconfig finden sich die Optionen für die Auslagerung mittels external. Im Unterschied zum USB-Root wird hier nur ein Teil der Pakete ausgelagert.
  • Wenn Pakete abgewählt wurden, sind ggfs. noch Shared Libraries ausgewählt, die nicht mehr benötigt werden (dies kann menuconfig nicht automatisch erkennen). Diese kann man dann manuell unter 'Advanced Options'->'Shared Libraries' abwählen - die auf benötigten lassen sich nicht deaktivieren. Alternativ kann man dies automatisch mittels 'make config-clean-deps' erledigen lassen.

WARNING: Not enough free flash space for answering machine!

Im Gegensatz zur Meldung "Filesystem image too big" passt das Firmware-Image in den Flash-Speicher der ausgewählten Box, der restliche Platz im Flash könnte aber für die Aufzeichnung von Nachrichten auf dem von AVM in der FW integrierten Anrufbeantworter zu klein sein oder komplett fehlen. Die Firmware sollte trotz dieser Warnung funktionieren, für Anrufbeantworter-Daten, FAX-Nachrichten und Sonstiges empfiehlt sich einen Stick mit einer FAT-Partition anzulegen und entsprechend in AVM-WebIF angeben, dass der Anrufbeantworter (oder andere Dienste) den externen Speicher nutzen sollten.

Hintergrundinformationen: Seit einigen Firmware-Versionen versucht AVM die restlichen Bytes im Flash dafür zu nutzen, eine jffs2-Partition anzulegen. Auf dieser Partition werden z.B. Anrufbeantworter-Nachrichten (TAM) und evtl. noch Faxe und Ähnliches abgespeichert. Bei älteren Boxen (z.B. 7170) kommt es fast immer dazu, dass im Image kaum mehr Platz frei ist, sodass die jffs2-Partition nicht angelegt wird und die Meldung nur als Warnhinweis angesehen werden sollte. In FREETZ seit Revision [3]


Flashen des Firmware-Images

Wie installiere ich das Freetz-Image ?

Wenn noch eine Original-AVM-Firmware installiert ist, ...

gibt es zwei Möglichkeiten:

  • die normale Installation über das AVM-Webinterface (wie gewohnt beim Update)
  • das Script Push firmware.sh (befindet sich im Freetz Build-Verzeichnis - also z.B. unter "freetz-1.1.2"). Hiermit lässt sich auch bei den Speedports Freetz installieren, was über das Webinterface nicht so einfach möglich ist

Wenn bereits Freetz auf der Box ist, ...

  • ist die bequemste Variante das Firmware-Update über die Freetz-Webinterface-Startseite. Dabei können bei Bedarf auch die AVM-Dienste weiterlaufen (Internetverbindung bleibt somit bestehen) oder können Angehalten werden, um den zusätzlichen Platz im RAM zu gewinnen. Das Gute an dieser Methode ist, dass man nach dem Upload des Images einen ausführlichen Bericht zu sehen bekommt und anschließend den Zeitpunkt des Reboots (und somit des eigentlichen Updates) manuell festlegen kann.

Flashen eines freetz-images + einer .External :

Grundsätzlich sei gesagt, daß für diese Funktion freetz bereits auf der Box laufen muß.

Sowohl die .image-datei als auch die .external-Datei, soweit diese erstellt wurde, lassen sich mit einem einzigen Rebootvorgang auf die Box laden. Dabei ist folgendes Vorgehen zu empfehlen:

  • Die .external-Datei hochladen. Es wird automatisch versucht alle Programme die schon ausgelagert wurden zu beenden. Sollte ein Fehler auftreten, bitte vorher händisch alle Programme beenden. Hintergrund: Beim Upload-Vorgang wird der Inhalt der alten mit der neuen .external überschrieben.
  • Die .image-Datei hochladen.
  • Box-Reboot anstoßen

Beim Flashen meldet das AVM-Webinterface, daß das Image keine passende Firmware enthält

Das in der Box (im Urlader) eingestellte Branding muss auch in der verwendeten Firmware enthalten sein. Also bitte mal prüfen, ob das der Fall ist und ggfs. das Image mit dem richtigen Branding neu erstellen.

Freetz-Trunk wurde per AVM Firmware-Update geflasht, nach dem Neustart scheint sich aber nichts geändert zu haben

Sollte nach dem Flashen von Freetz per Firmware-Update über das AVM-Webinterface und dem nachfolgenden Neustart das Freetz-Webinterface auf Port 81 nicht zur Verfügung stehen und sich auch die Firmware-Version im AVM-Webinterface nicht geändert haben, so war vermutlich das Flashen nicht erfolgreich. Ein deutlicher Hinweis darauf ist, wenn der Neustart der Box sehr schnell geht. Je nach Modell der Box und Größe der Firmware kann das Flashen ein bis zwei Minuten dauern und in dieser Zeit blinkt eine Kontroll-LED an der Box, genauso wie bei einem normalen Firmware Update. Ursache hierfür ist vermutlich ein Mangel an freiem Arbeitsspeicher auf der Box während dem Update.

Dann können folgende Schritte ggf. Abhilfe schaffen:

  • Zunächst ein Image ohne irgendwelche Pakete erstellen (was sowieso empfohlen wird) und ggf. durch Remove-Patches die Größe weiter reduzieren.
  • Alternativ die letzte Stable-Version oder eine andere ältere (und hoffentlich kleinere) Version runterladen und kompilieren.
  • Diese Version dann über das AVM-Webinterface flashen und die Box neustarten.
  • Dann das gewünschte Image über das Freetz-Webinterface (Port 81) flashen und auswählen, dass die AVM Dienste heruntergefahren werden.
  • Nach dem Flash-Vorgang im angezeigten Log überprüfen, ob der Vorgang erfolgreich war, und die Box über das Freetz-Webinterface neustarten.
  • Danach sollte das gewünschte Image erfolgreich geflasht worden sein.

Probleme nach dem (erfolgreichen) Flashen

Wie lautet das Standard-Passwort für Freetz ?

Das Standard-Passwort für Freetz(sowohl Konsolen- als auch Website-Login) lautet 'freetz'. Benutzername für die Konsole ist 'root', für das Freetz-Webinterface standardmäßig 'admin'. Beim ersten Einloggen per Telnet (user: root) muss das Passwort geändert werden. Im Webinterface erscheint ein Hinweis, falls das Standardpasswort gesetzt ist. Ändert das Passwort bitte zu eurer eigenen Sicherheit.

Nach dem Flashen ist das AVM-Webinterface nicht mehr erreichbar

Wenn im Image (z.B. wegen OpenVPN) die OpenSSL-Libraries eingebaut wurden, gibt es Probleme mit tr069. Es ist dann erforderlich entweder auf OpenSSL-Libs zu verzichten, oder tr069 zu deaktivieren. Dazu muss die Datei /var/flash/tr069.cfg mittels nvi oder nmcedit editiert werden. So sollte es aussehen:

{{{
# cat tr069.cfg
/*
* /var/flash/tr069.cfg
* Sun Sep 8 14:03:34 2002
*/
tr069cfg {
enabled = no;
igd {
...
}}}

Bei neueren Firmwares reicht es nicht mehr aus tr069 zu deaktivieren. Hier crasht der ctlmgr auch bei anderen Aktionen beim Zugriff auf die OpenSSL-Libs. Manchmal schafft das Ersetzen der libavmhmac (im menuconfig unter Advanced Options->Shared Libraries->Crypto & SSL->Replace libavmhmac) Abhilfe. Unter Umständen funktionieren danach aber nicht mehr alle Funktionen, wie z.B. die Fritz!Mini Unterstützung. Um heraus zu finden, ob die problematischen OpenSSL-Libs ins Image eingebunden werden, kann man folgenden Befehl ausführen:

libcrypto" .config
FREETZ_LIB_libcrypto=y
FREETZ_LIB_libssl=y

Es folgt eine Liste mit Paketen die die OpenSSL-Libs benötigen, manche auch nur optional: bip, curl, dropbear mit sftp-Support, mcabber, netsnmp, OpenVPN, Tor, transmission, Vsftpd und wget

Man sollte nun versuchen die betroffenen Pakete statisch zu bauen (d.h. ohne zusätzliche OpenSSL-Libs). Momentan ist dies z.B. mit OpenVPN und CURL möglich. Man muss allerdings beachten, dass Binaries dadurch sehr gross werden, weil die OpenSSL-Libs dann ein Teil des statischen Binary sind. In diesem Fall ist es anzuraten solche Pakete mit external auszulagern. Auch wenn eigentlich kein Paket mehr die OpenSSL-Libs benötigt, kann es sein, dass diese immer noch ins Image gepackt werden. Das kommt daher, dass menuconfig eine automatische Abwahl nicht unterstützt. Hierfür gibt es den Befehl

make config-clean-deps.
{{{
oliver@ubuntu:~/fritzbox/freetz/trunk$ make config-clean-deps
Step 1: temporarily deactivate all kernel modules, shared libraries and optional BusyBox applets ... DONE
Step 2: reactivate only elements required by selected packages ... DONE
The following elements have been deactivated:
 FREETZ_BUSYBOX_BRCTL
 FREETZ_LIB_libcrypto
}}}

Vorsicht: Wie im Beispiel zu sehen werden hierbei auch Optionen deaktiviert die absichtlich gewählt aber nicht per default aktiviert sind.

Nach dem Flashen ist die Box nicht mehr erreichbar und/oder rebootet ständig

Dies kann unterschiedlichste Gründe haben. Beheben lässt sich das Problem durch Einspielen einer anderen Firmware, in der die problematische Funktion nicht enthalten ist. Grundsätzlich wird dies natürlich bei den Original-Firmwares von AVM der Fall sein; man kann aber auch durch Deaktivieren von Optionen und Neuerstellen von Freetz ausprobieren, woran es liegt. Da das Webinterface nicht mehr erreichbar ist, muss ein Update auf andere Weg erfolgen. Hier gibt es zwei Möglichkeiten:

  • das Script tools/push_firmware.sh. Hiermit lassen sich beliebige Images einspielen.
  • ein Recover-Image von AVM. Dieses spielt wieder eine Original-Firmware von AVM ein.

Beim Aufruf des Original-AVM-Webinterface von aussen bekomme ich trotz Portweiterleitung nur eine weisse Seite ?

Dies ist ein 'Sicherheitsmechanismus' von AVM. Um dies zum Umgehen, muss für den Browser eine Erweiterung installiert werden, welche es erlaubt, den 'REFERER' auszuschalten.

Kann man Pakete/Patches nachinstallieren, ohne das FREETZ-Image neu zu erstellen ?

Nein, das ist im Normalfall und ohne Weiteres nicht möglich. Nach einer Veränderung der Konfiguration unter "menuconfig" sollte typischerweise ein "make" ausgeführt werden, welches als Ergebnis ein neues Image liefern soll. Dieses Image muss dann über Firmware- Update auf die Box gebracht werden, wenn man seine Änderungen auf der Box haben will. Einer der Gründe dafür ist das spezielle Dateisystem im Flash-Speicher der Box. Dieses Dateisystem ähnelt einer Archivdatei, ist sehr stark komprimiert und speziell für Flash- Speicher optimiert. Änderungen in einem solchen Dateisystem sind jedoch immer mit einer neuen Rearchivierung verbunden und erfordern somit den Neuaufbau des kompletten Systems.

Es gibt jedoch Ausnahmen aus dieser Regelung:

Man kann nur die Binaries der ausgelagerten Pakete neu kompilieren. Somit kann man z.B. ein Paket updaten, ohne ein neues Image zu erstellen. Diese Methode ist allerdings sehr riskant, weil external typischerweise nicht alle Dateien auslagert. Somit läuft man immer Gefahr Versionsunterschiede zwischen den ausgelagerten und fest integrierten Inhalten desselben Pakets zu bekommen.

Hier könnte man wenigstens theoretisch das komplette Dateisystem (typischerweise ext2) "on the fly" ändern und braucht dafür kein Firmwareupdate. Allerdings wird auch hier dringend empfohlen das USB-ROOT-System grundsätzlich als "read-only" zu mounten und nur bei Bedarf (z.B. fürs Update) es kurzzeitig beschreibbar zu machen.

Freetz Updaten, aber wie:

Ich habe momentan eine Laborversion installiert. Kann ich Freetz einfach darüber flashen ?

Es ist ratsam die Box zunächst zu recovern. Anschliessend den letzten Finalrelease aufspielen und die Einstellungen exportieren über das FB Webinterface. WICHTIG: Vor dem Recovern die aktuellen Zugangsdaten bereithalten. Diese findet man z.B. im 1und1 Controllcenter unter "Zugangsdaten"

Ich habe eine alte Freetz-Firmware auf der Box

Update von Freetz-Version XY auf Freetz-VersionYZ:

In diesem Fall muß nur ein neues Freetz kompiliert / gebaut werden. Wie das geht ist hier oder hier für Newbies beschrieben.

Wenn AVM wieder mal eine neue Firmware auf den Markt bringt:

In diesem Fall muß Freetz ebenfalls neu gebaut werden, jedoch muß man eine Freetz-Version benutzen die dieses neue AVM-Firmware bereits unterstützt. Welche Firmware-Versionen von welcher Freetz Version unterstützt wird kann man hier nachgelesen : Unterstützte Firmewares in den unterschiedlichen Freetz-Versionen

Konfiguration

Wo landen die diversen Konfigurationen auf der Fritzbox ?

Sämtliche Konfigurationen auf der Fritzbox liegen unter /tmp/flash. Dies ist zu beachten, wenn man eine Freetz-FW baut, da die Konfigurationen damit nicht im festen Firmware-Teil im Image liegen. Alles unter /tmp/flash wird daher beim FW-Update auch nicht verändert, so dass die diversen Konfigurationen nach einem FW-Update auch erhalten bleiben. Wichtig ist, dass man nach Änderungen an Konfigurationsdateien unter /tmp/flash noch das Kommando "modsave" in der Konsole aufruft, damit sie auch gespeichert werden.


Entfernen von Freetz und anderen Modifikationen

Im Ordner tools/images befindet sich ein uninstall image, das wie eine Firmware übers Webinterface geflasht wird und die Konfigurationsdateien entfernt. Da hiermit nur die Konfigurationsdateien entfernt werden ist natürlich auch noch eine original Firmware einzuspielen. Das "Update" sollte vor einem Neustart erfolgen, da die Konfigurationsdateien ansonsten wieder angelegt werden. Am Einfachsten ist der Weg über ein AVM Recover (Dateien gibts für jede Box auf dem AVM-FTP). Auch hier werden sämtliche Konfigurationsdateien von Freetz gelöscht.


Betrifft alle 73xx Modelle :

  • Da es immernoch und immer wieder zur selben Frage kommt : "wann läuft CCcam auf der 73xx ?"
  • Habe ich jetzt diese kurze Faq hier geschrieben
  • Es können nur mips binarys für die Fritzbox 73xx verwendet werden.
  • Aus dem selben Grund warum für die 73xx auch ein extra mips branch eingepflegt wurde.
73xx = mips(Big Endian)
der Rest der Fritzboxen = mipsel (little Endian)
keine sourcen = kein mips
oscam = sourcen = mips & mipsel Fritzbox = oscam binarys
Es gibt nur mipsel binarys von CCcam und Co
Daher ist auch mit chroot nichts zu machen 

Das heißt es läuft nur oscam.mips auf der Fritzbox7390 , Kein CCcam !!!!!!

Quellennachweise

Wichtige Links