help/howtos/development/integrate_own_files
Howtos: Entwicklung
- Entpacken und Packen von Firmware-Images
- Kernel konfigurieren und kompilieren
- Developer Information
- Flash Partitionierung
- trac-post-commit-hook
- ADAM2-Bootloader
- Einstellungen speichern im Urlader-Environment
- Erstellen einer GUI für Pakete in Freetz
- Eigene Dateien in die Firmware integrieren
- Addon Paket installieren
- Patches in Freetz einspielen
- Freetz Build-Prozeß
- Ablauf eines Firmware-Updates
- Flash-Partitionen im laufenden Betrieb sichern
- Flash-Partitionen von außen mit FTP sichern
- Wie die FritzBox Manipulationen erkennt
- Eigene Programme kompilieren
- Busybox konfigurieren und kompilieren
- Dynamische Bandbreitenanzeige per SVG
- Platz sparen im Dateisystem der FritzBox
- Shell Coding Conventions
- Wie baue ich ein eigenes Paket für Freetz?
- Package Development
- Cross-Compiler / Toolchain erstellen
- First steps - How to start your first freetz package
Eigene Dateien in die Firmware integrieren
Die Fritzbox besitzt zwei Speicherbereiche:
- den Flash?
- den Arbeitsspeicher (RAM)
Um im laufenden Betrieb Dateien anzulegen und zu verändern, lässt sich das Verzeichnis /temp nutzen. Es liegt im Arbeitsspeicher in einer RAM-Disk und arbeitet wie ein normales beschreibbares Dateisystem. Folgende Dinge sind jedoch zu beachten:
- Es nutzt den vorhandenen Arbeitsspeicher mit, der je nach Box bis zu 64MB gross ist. Wird die Menge der Daten im Arbeitsspeicher zu groß, startet die Box ohne Vorwarnung neu.
- Alles, was im Arbeitsspeicher liegt, ist nach einem Reboot oder Stromausfall verloren.
Für die "feste Integration" gibt es mehrere Möglichkeiten:
| Variante | Pros | Contras |
|---|---|---|
| via Freetz Image |
|
|
via debug.cfg
|
|
|
| Nachladen von Webserver |
|
|
| Nachladen vom USB Stick |
|
|
| WebDAV- bzw. NFS- Share mounten |
|
|
Die "perfekte Lösung" gibt es natürlich nicht. Je nach Anwendungsfall werden die Möglichkeiten kombiniert.
Feste Integration über das Freetz Image
Dies kann ohne großen Aufwand über das Verzeichnis ./root/ realisiert werden. Einfach die gewünschten Dateien in das Verzeichnis ./root/ an die Stelle kopieren, an der sie im root Dateisystem der Box landen sollen (außer ./root/lib/ und ./root/usr/lib/, welche seperat behandelt werden). Beispiel: eine Datei ./root/usr/bin/foo wird auf der Box in /usr/bin/foo landen.
Erzeugen der Dateien aus der debug.cfg
Beim Booten werden die gewünschten Dateien im Verzeichnis /temp neu erstellt. Dazu wird das Script debug.cfg missbraucht, das beim Starten der FritzBox automatisch ausgeführt wird. Da die debug.cfg selbst im beschreibbaren TFFS des Flash (mtd3/4) liegt, gehen ihre Inhalte beim Reboot nicht verloren.
Beispiel:
Der Code wird einfach in die debug.cfg eingefügt. Am einfachsten geht es mit Putty:
- mit der Box via telnet / SSH verbinden
- nvi /var/flash/debug.cfg
- an der passenden stelle "i" drücken
- Code in Zwischenablage kopieren
- rechte Maustaste auf Putty fügt den Text ein (leider verschiebt sich das Einrücken, was aber der Funktion keinen Abbruch tut)
- nacheinander ESC ESC : w q RETURN drücken (Abbrechen wäre: ESC ESC : q ! RETURN)
- Neustarten
Hier wird ein Skript erzeugt, das sich mit /var/tmp/checkonline.sh aufrufen lässt. Es zeigt an, welcher der neun Rechner im FB-LAN online ist. Wichtig ist, daß der "Endmarker" (hier 'ENDCHECK') nicht eingerückt ist. Die letzte Zeile macht das Script ausführbar. Abbruch mit STRG+C.
cat > /var/tmp/checkonline.sh << 'ENDCHECK'
#!/bin/sh
while [ 1 = 1 ]
do
clear
echo Online:
date
echo ------------------------------------------------
for a in "2 Desktop1" "3 Michael" "20 Christina" "21 -" "22 -" "23 -" "24 -" "25 -" "26 -" "27 -" "28 -" "29 -" "45 FB WLAN SL(WDS)"
do
ping -c 1 192.168.178.$a |grep "bytes from ">/dev/null && echo 192.168.178.$a &
done
sleep 1
echo ------------------------------------------------
sleep 9
done
ENDCHECK
chmod +x /var/tmp/checkonline.sh
Nachladen vom Webserver
Beim Booten werden alle gewünschten Dateinen aus dem Internet oder von einem Webserver im Intranet auf die Box geladen.
Nachladen vom USB-Stick
Beim Booten werden alle gewünschten Dateinen direkt vom USB Stick bzw. via FTP vom internen FTP Server auf die Box geladen.
WebDAV Share mounten
Für Freetz gibt es das Paket WebDAV, über das man einen WebDAV-Share direkt mounten kann. Als Konsequenz werden alle Remote-Dateien so behandelt, als wären sie lokal vorhanden, und zwar ohne gesondertes Nachladen.
NFS-Share mounten
Mit dem NFS Paket lässt sich gleiches erreichen wie mit WebDAV (s.o.), nur etwas stabiler
