Integration smbd/nmbd in die Fritz!Box-Firmware
Nach langer Zeit komme ich dann doch nochmal dazu, am Projekt “Samba auf der Fritz!Box 3070″ weiterzuarbeiten…
Was dem Projekt immer noch fehlt ist die Integration der Samba-Binaries in die Firmware, sodaß der Freigabedienst beim Einschalten der Box automatisch gestartet wird, ohne die Binaries und/oder die Konfiguration auf einem USB-Stick oder einer USB-Platte gelagert zu haben, und selbige dann noch per manuellem Aufruf via Telnet oder SSH starten zu müssen. Der Einfachheit halber habe ich mich dazu entschieden, für dieses vorhaben den Mod von danisahne (aktuelle/verwendete Version 0.2rc5) zu benutzen, da dieser automatisiert angepasste Firmwares per einfachem Aufruf von “make” erzeugen kann und obendrein von Haus aus noch einige gute brauchbare Features aufzuweisen hat (z.b. SSH-Server)
Mehr Infos zum Mod im “offiziellen” Thread im IP-Phone-Forum.
Also das Ganze runtergeladen, entpackt, und “make menuconfig” aufgerufen. Diejenigen, die schonmal einen Linux-Kernel selber kompiliert haben, werden das jetzt erscheinende ncurses-basierte Config-Frontend bestimmt wiedererkennen
Ich wähle also als Box-Typ “Fritz!Box 3070″ aus, ändere Testhalber noch ein paar Optionen und speichere und verlasse dann das Config-Menü. Ins Verzeichnis “root/usr/bin” im Danisahne-Mod-Verzeichnis lege ich noch mein zuvor erstelltes MIPS-smbd-Binary und passenden nmbd ab (immerhin zusammen 3,8mb an Extra-Daten, die ins Filesystem.image gepresst werden müssen!), und starte den Firmware-Build-Prozess mit “make”.
Nach kurzer Zeit habe ich dann im root-Verzeichnis vom Mod mein Firmware-Image mit integrierten Samba-Binaries liegen. Dank LZMA-Patch sind sogar noch Platzreserven für eventuelle zusätzliche Erweiterungen übrig!
Das ganze installiere ich jetzt über die Fritz!Box-Weboberfläche als Firmware-Update auf die Box. Selbige startet neu – und entpuppt sich direkt als sogenannter Recovery-Fall…
Nungut, kurz Google, die IP-Phone-Forum-Suchfunktion und die ds-0.2-mod-Dokumentation gefragt – das sollte mit “make recover” zu machen sein (Danisahne hat enrik‘s Recover-Script als Make-Target integriert). Die Box aus- und wieder eingeschaltet, eben genannten Befehl während der Urlader (adam2) der Box läuft, ausgeführt. Das Script meldet mir, daß die Box gefunden wird (gerne werden auch gleich mehrere Boxen gefunden?), zeigt mir verschiedene Revisionsnummern an, und zuletzt “flashing kernel… failed: 502 Command not implemented”… Einfach Recovern geht also nicht…
Zu eben diesem Problem gabs dann auch keine Informationen seitens Google oder dem Fritzbox-Mod-Bereich im IP-Phone-Forum.
Ein paar “make recover”‘s später (mehrere Quellen berichten über mehrfach benötigte Anlaufversuche, die Box zu Recovern), stellte ich dann fest, daß die Box nach dem “502″ nicht durchbootet, sondern beim Urlader stehen bleibt. Da der Update-Vorgang per FTP geschieht, habe ich mich dann mit adam2/adam2 per FTP am Urlader angemeldet und nach einigem Probieren dann zwei Unterschiede im Vergleich zum Update-Vorgang einer 7050 (welcher von enrik auf seiner Seite dokumentiert und auch entsprechend im Recover-Script implementiert ist) festgestellt:
- Der Urlader der 3070 möchte nur 2 Parameter im PUT-Kommando übergeben haben: PUT [Dateiname] mtd1 (D.h. der erste Parameter spezifiziert die Datei, die geflasht werden soll, und der zweite Parameter sagt der Box, in welchen Flash-Bereich die Datei geschrieben werden soll)
- Der Dateitransfer muß via passivem FTP vollzogen werden. Ein einfaches PORT-Kommando wird mit oben erwähntem Fehler 502 quittiert.
Nachdem der Recover-Vorgang manuell funktioniert hat, habe ich enrik’s Script an entsprechenden Stellen an die 3070-Eigenheiten angepasst, um den Vorgang des Recoverns in Zukunft einfach zu halten.
Die Box startete anschliessend wieder mit der Original Firmware. Weitere Tests mit dem Danisahne-Mod mit anderen Optionen und mit/ohne smb-Binaries brachten immer dasselbe Ergebnis – die Box startet nicht mehr. Ein serielles Interface sollte aufzeigen, was da schief läuft…