help/howtos/development/adam2

Howtos: Entwicklung

  1. Entpacken und Packen von Firmware-Images
    1. Tools und Syntax
    2. Vorgehensweise
  2. Kernel konfigurieren und kompilieren
  3. Developer Information
  4. Flash Partitionierung
    1. Hidden SquashFS
    2. Contiguous SquashFS
    3. Hidden Root
  5. trac-post-commit-hook
  6. ADAM2-Bootloader
    1. ADAM2-Backup anlegen
    2. ADAM2 überschreiben
    3. ADAM2-Befehle
    4. ADAM-Quellcode
  7. Einstellungen speichern im Urlader-Environment
    1. Vorwort und Motivation
    2. Lösungsmöglichkeiten
    3. Bootloader Environment
    4. Variable "kernel_args"
    5. Kernel_Args-API
    6. Mögliche Anwendungsfälle
  8. Erstellen einer GUI für Pakete in Freetz
    1. Motivation
    2. Grundlagen
    3. Wie funktioniert das mit der GUI?
  9. Eigene Dateien in die Firmware integrieren
    1. Feste Integration über das Freetz Image
    2. Erzeugen der Dateien aus der debug.cfg
    3. Nachladen vom Webserver
    4. Nachladen vom USB-Stick
    5. WebDAV Share mounten
    6. NFS-Share mounten
  10. Addon Paket installieren
  11. Patches in Freetz einspielen
  12. Freetz Build-Prozeß
    1. Vorwort und Motivation
    2. Grundsätzliches
  13. Ablauf eines Firmware-Updates
  14. Flash-Partitionen im laufenden Betrieb sichern
    1. Motivation
    2. Voraussetzungen
    3. Lösungsweg
    4. Wege, sich schnell einen Überblick zu verschaffen
    5. Zusammenfassung
  15. Flash-Partitionen von außen mit FTP sichern
    1. Motivation
    2. Voraussetzungen
    3. Allgemeine Informationen zur Datensicherung
    4. Sicherung mit Linux-Standard-FTP (ftp)
    5. Sicherung mit Linux-NcFTP (ncftpget)
    6. Sicherung mit Cygwin-NcFTP (ncftpget)
    7. Uploads via FTP
  16. Wie die FritzBox Manipulationen erkennt
    1. Ursachen
    2. Diagnose
    3. Lösungen
    4. Schlußwort und Ausblick
  17. Eigene Programme kompilieren
  18. Busybox konfigurieren und kompilieren
  19. Dynamische Bandbreitenanzeige per SVG
    1. Anleitung zur Test-Installation
  20. Platz sparen im Dateisystem der FritzBox
    1. Vorwort und Motivation
    2. Bestandsaufnahme: Wo stecken die Platzfresser?
    3. Weitere Spartricks
    4. Schlußwort
  21. Shell Coding Conventions
    1. Shell Language
    2. Basic Format
    3. If, For, and While
    4. Test Built-in
    5. Single-line if-statements
    6. Infinite Loops
    7. Exit Status and If/While Statements
    8. Variable References
    9. Variable Naming
    10. Quoting
    11. Variable Assignments
    12. Testing for (Non-)Empty Strings
    13. Commenting
    14. Pathnames
    15. Interpreter Magic
  22. Wie baue ich ein eigenes Paket für Freetz?
  23. Package Development
    1. Persistent Package Settings
  24. Cross-Compiler / Toolchain erstellen
  25. First steps - How to start your first freetz package
    1. Foreword and Motivation
    2. Where to Ask Questions and to Discuss
    3. Build Environment
    4. Use of the "empty" Package as Starting Point
    5. Add New Package for "make menuconfig"
    6. Call Procedures "make menuconfig" and "make"
    7. Testing
    8. Preparing New Package for Public Integration to Freetz Trunk

ADAM2-Bootloader

Der Bootloader erfüllt mehrere Aufgaben. Grob gesagt, sorgt er dafür, daß

  • die Box gebootet werden kann,
  • diverse grundlegende Hardware-Parameter persistent gespeichert werden (ähnlich den Daten, die man beim PC im BIOS-Setup einstellt) und
  • daß man per FTP oder serieller Konsole beim Booten einen Einsprungspunkt hat, um Dinge wie ein Firmware-Update oder ein Recover durchzuführen.

Einen passenden Grundlagenartikel soll jemand schreiben, der sich besser damit auskennt, denn ich habe z.B. das ADAM2-FTP-Interface noch nie benutzt. Eine kleine Linksammlung zum Thema lege ich trotzdem an - bitte alle mithelfen, sie zu vervollständigen!

ADAM2-Backup anlegen

Das ist einfach, z.B. so (vgl. Flash-Partitionen im laufenden Betrieb sichern):

cat /dev/mtdblock3 > /var/fritz/adam2

ADAM2 überschreiben

Dieser Punkt ist momentan noch Gegenstand der Forschung und soll bald ergänzt werden, sobald man mir Ergebnisse zuträgt. Es geht darum, ob und wie man es im laufenden Betrieb machen kann, denn direkt über ADAM2-FTP geht es wohl nicht - wohl, weil ADAM2 sich überschreiben müsste, während es benutzt wird. (Dieser Abschnitt ist ziemlich spekulativ im Moment. Er ist eher ein Platzhalter für gesichertere Informationen in der Zukunft.)

Update vom 29.03.2007: Ein Benutzer hat mich darauf hingewiesen, dass laut diesem IPPF-Thread (Postings 194-199)] wohl Folgendes funktionieren soll, wie dort zwei Benutzer bestätigt haben:

/!\ Achtung, Benutzung auf eigene Gefahr, ich habe noch keine Bestätigung von "meinem" anderen Tester! /!\

cat /var/fritz/adam2 > /dev/mtdblock3

Also einfach genau umgekehrt wie bei der Sicherung.

Nachdem das sogar die Urlader-Update-Routine aus dem 7050_14.04.31-Update so macht, sollte es wohl der richtige Weg sein. Dass man das richtige Device erwischt, kann man durch Lesen von /proc/mtd verifizieren. — enrik 2007/03/30 16:42

ADAM2-Befehle

Informationen dazu gibt es z.B. hier:

  • http://www.seattlewireless.net/index.cgi/ADAM2
  • IP-Phone-Forum - Suchfunktion
  • Außerdem habe ich mal aus meinem ADAM2 (FritzBox Fon WLAN 7170) mittels des UNIX-Kommandos strings alles herausgezogen, was es so an Text-Informationen gab. Man sieht die Kommandos, die Environment-Variablen des Urladers und anderes Interessantes. Einfach mal ausprobieren, zum Zitieren ist es zu viel.

ADAM-Quellcode

Unter dem weiter oben geposteten Link (Seattle Wireless) findet sich auch ein Download-Link für den ADAM2-Quellcode, welcher in einem GPL-Tarball von Linksys steckt. Der Download ist recht groß, aber darin stecken tatsächlich auch die ADAM2-Sourcen, von welcher Version auch immer. Verwandt mit der von AVM wird sie allemal sein, identisch sicher nicht. Aber als Ausgangspunkt für die C-Hacker sollte es genügen. Wer weiß, vielleicht bekommen wir doch mal irgendwann eine "firmware from scratch" inkl. eigenem Bootloader.

Alexander Kriegisch (kriegaex)