Howtos: Entwicklung
- Entpacken und Packen von Firmware-Images
- Patches in Freetz einspielen
- Developer Information
- Ablauf eines Firmware-Updates
- Eigene Programme kompilieren
- Dynamische Bandbreitenanzeige per SVG
- Platz sparen im Dateisystem der FritzBox
- Flash-Partitionen im laufenden Betrieb sichern
- Release Management
- First steps - How to start your first freetz package
- Kernel konfigurieren und kompilieren
- Menükonfiguration pflegen
- ADAM2-Bootloader
- Einstellungen speichern im Urlader-Environment
- Busybox konfigurieren und kompilieren
- Wie baue ich ein eigenes Paket für Freetz?
- Firmware-Image-Namen analysieren und interpretieren
- Addon Paket installieren
- Paketverwaltung für Freetz
- Wie die FritzBox Manipulationen erkennt
- Shell Coding Conventions
- Package Development
- Erstellen einer GUI für Pakete in Freetz
- Flash Partitionierung
- Trac Hooks
- Package Developing - Advanced Topics
- Eigene Dateien in die Firmware integrieren
- Freetz Build-Prozeß
- Flash-Partitionen von außen mit FTP sichern
- libmodcgi.sh
- Cross-Compiler / Toolchain erstellen
Flash Partitionierung
Im Flash der Fritzbox befinden sich bei jedem Modell folgende funktionale Einheiten:
- Bootloader: ADAM2 (+ Environment)
- Kernel: Linux 2.4.17_mvl21-malta-mips_fp_le oder 2.6.13.1-ohio
- Dateisystem: SquashFS (gzip oder lzma)
- Konfigurations-Dateien: TFFS
Bei der Flash Einteilung der Fritzboxen gibt es drei "Geschmacksrichtungen". Man kann dabei die Boxen in zwei Klassen einteilen: "Hidden Root" und "nicht-Hidden-Root". Bei den "nicht-Hidden-Root" Boxen kommt je nach Firmware Version Hidden SquashFS (bis *.04.01) oder Contiguous SquashFS zum Einsatz. Inzwischen haben alle Boxen, für die eine aktuelle Firmware mit Kernel 2.6.13.1 existiert, ein Bootloader-Update (EVA) bekommen. Damit wird das Flash Layout auf Hidden-Root umgestellt.
Ein Firmware Update lädt die enthaltenen Dateien filesystem.image nach mtd0 und kernel.image nach mtd1. Gelegentlich enthält ein Firmware Update auch eine Aktualisierung des Bootloaders welcher nach mtd2 geladen wird. Freetz modifiziert filesystem.image und kernel.image. Von einer Modifikation des Bootloaders ist dringend abzuraten, da man die Box ohne funktionierenden Bootloader nicht mehr wiederherstellen kann.
Die mtd Tabelle befindet sich im ADAM2 Environment und kann mit
cat /proc/sys/dev/adam2/environment | grep mtd
abgerufen werden. Bei Firmwares mit dem neuen Kernel (2.6.13.1) muss es so aussehen:
cat /proc/sys/urlader/environment | grep mtd
In dieser Tabelle sind immer mtd0 bis mtd4 aufgelistet. Im Falle von "Hidden Root" ist die Start und End-Adresse von mtd0 gleich 0 und mtd0 wird am Ende des Kernels ausgerichtet. Bei "nicht-Hidden-Root" Boxen werden mtd5 und mtd6 zusätzlich ausgerichtet am Ende des Kernels erzeugt. Zum Beispiel sieht die mtd Tabelle bei einer Fritzbox mit 4 MB Flash ohne Hidden Root folgendermaßen aus (passend zu den Schaubildern von Hidden SquashFS und Contiguous SquashFS am Beispiel der Fon WLAN 7050):
mtd0 0x900C0000,0x903C0000 mtd1 0x90010000,0x900C0000 mtd2 0x90000000,0x90010000 mtd3 0x903C0000,0x903E0000 mtd4 0x903E0000,0x90400000
Die mtd Tabelle einer Box mit 8 MB Flash mit Hidden Root (passend zum Schaubild von Hidden Root am Beispiel der 7170):
mtd0 0x90000000,0x90000000 mtd1 0x90010000,0x90780000 mtd2 0x90000000,0x90010000 mtd3 0x90780000,0x907C0000 mtd4 0x907C0000,0x90800000
Hidden SquashFS
Flash Legende
Diese Boxen verwenden bis Firmware Version *.04.01 Hidden SquashFS (original Firmware):
- 4 MB Flash
- Eumex 300 IP
- Fritzbox Fon
- Fritzbox Fon 5050
- Fritzbox Fon ATA
- Fritzbox Fon WLAN
- Fritzbox Fon WLAN 7050
- Fritzbox SL WLAN
- Fritzbox WLAN 3030
- Fritzbox WLAN 3050
Das Hidden SquashFS beginnt direkt hinter dem Kernel (256 Byte Padding) und enthält vor allem Treiber. Es wird während des Bootvorgangs im Startskript rc.S gemounted. Der Kernel und das Hidden SquashFS befinden sich in kernel.image, das root Dateisystem in filesystem.image. Hidden SquashFS am Beispiel der Fon WLAN 7050:
Contiguous SquashFS
Flash Legende
Diese Boxen verwenden Contiguous SquashFS (original Firmware):
- 2 MB Flash
- Fritzbox SL
- 4 MB Flash
- Fritzbox Fon WLAN 7050 14.04.03 Beta
Beim Contiguous SquashFS wird fängt das root Dateisystem direkt nach dem Kernel an (256 Byte Padding). Da das root Dateisystem nun über mtd0 und mtd1 verteilt liegt, muss es im Firmware Update auch dementsprechend auf die Dateien kernel.image (Kernel + Anfang des root Dateisystems) und filesystem.image (Rest des root Dateisystems) aufgeteilt werden. Contiguous SquashFS am Beispiel der Fon WLAN 7050:
Hidden Root
Flash Legende
Diese Boxen verwenden Hidden Root :
- alle Boxen mit Kernel 2.6.13.1
Bei Hidden Root befindet sich das root Dateisystem — ähnlich wie bei Contiguous SquashFS — direkt hinter dem Kernel (256 Byte Padding). Diese Boxen kann man daran erkennen, dass die Start- und End-Adresse von mtd0 in der mtd Tabelle gleich 0 und die Datei filesystem.image im Firmware Update leer ist. kernel.image enthält sowohl den Kernel als auch das root Dateisystem. Hidden Root am Beispiel der Fon WLAN 7170 (die kürzeren Balken für den Kernel und das root Dateisystem sollen nur andeuten, dass auf der Box von den 8 MB noch einiges mehr frei ist, als bei den 4 MB Boxen):
