Apps für Fritzbox (Wunschliste - Fortsetzung)

olistudent schrieb:
Entweder nimmst du den toolchain-Pfad in den PATH auf, oder du gibst den Pfad zum gcc komplett an.
Das cgi-Skript muss nach /usr/www/$firmware_version/cgi-bin. Das sind einfache Bash-Skripte.

Um Dateien ins Flash-Image zu bekommen musst du nicht mit gcc rumeiern.

Schau dir mal haveniceday's-Skript an, da siehst du wie es funktioniert.
eumex-to-fritz

MfG Oliver

Dass das nach cgi-bin muss, war mir klar, ich bin nur auf der Suche nach einer Lösung in Richtung mount -o bind ...
Zumindest für die ersten Versuche in diese Richtung. Ansonsten könnte ich mir wirklich mal das haveaniceday-Skript anschauen. Das Zeug im cgi-bin-Verzeichnis sind übrigens KEINE Skripte sondern binaries.

Auf die Gefahr hin, mich jetzt zu blamieren: Wenn das Einfügen von Dateien in den Flash-Speicher ohne gcc geht, weshalb kompiliert ihr dann beim danisahne-mod wie verrückt in der Gegend rum? Nur um mehr Platz im Flash frei zu bekommen? Irgendwie hab ich das Gefühl, dass ich da noch viel zu lernen habe, bis ich die Kiste endlich mal verstehe.
 
Der ds-mod enthält alle Binaries vorkompiliert, so dass man nicht die Toolchain bauen muss um sich eine Firmware zu erstellen. Den gcc brauchst du aber, wenn du neue Programme kompilieren willst. Mehr Platz im Flash gab es immer durch Modifikation der Kernel Sourcen und die muss ich natürlich danach kompilieren, um den modifizierten Kernel zu erhalten, der dann unter ./kernel/kernel-{4mb|ohio-8mb}.bin im ds-mod ist.

Bei deinen Fragen muss ich mal vorsichtig nachhacken: Für was der gcc gut ist weißt du? Für das Entpacken und Zusammenpacken des Firmware Image ist kein gcc nötig, da es sich hier um Tar Archive und Squashfs Dateisystem-Images handelt.

Mfg,
danisahne
 
Du kannst nur mit "mount -o bind" Dateien "überschreiben" die schon da sind.
Unter cgi-bin sind natürlich auch Binaries. Ich bin jetzt vom system_status ausgegangen.

Ohne Compiler gibt es keine Programme, deshalb compilieren wir hier wie verrückt in der Gegend rum.
Quizfrage: Du willst zum Beispiel einen FTP-Server auf der FritzBox installieren. Wie kommst du an eine Datei die auf
der FritzBox läuft? :mrgreen:


MfG Oliver
 
olistudent schrieb:
Du kannst nur mit "mount -o bind" Dateien "überschreiben" die schon da sind.

Genau DAS hab ich auch festgestellt - gibts da keine netten Tricks, um genau das zu umgehen?

Zum gcc: Klar kenn ich den, bin Informatik-Student und somit dem leider auch schon näher gekommen, als mir lieb ist. Hab nur absolut 0 Erfahrung mit Embedded Systems, SquashFS & Co - hätte ja sein können, dass das Dateisystem da irgendwie reingelinkt wird oder so, was weiß ich.

Ich versuche gerade, OpenSSL zu compilieren. Habe jetzt ein ./Configure zu machen ...

Ein Listing sagt mehr als 1000 Worte...
Code:
pick os/compiler from:
BC-32 BS2000-OSD BSD-generic32 BSD-generic64 BSD-ia64 BSD-sparc64 BSD-sparcv8
BSD-x86 BSD-x86-elf BSD-x86_64 Cygwin Cygwin-pre1.3 DJGPP MPE/iX-gcc OS2-EMX
OS390-Unix ReliantUNIX SINIX SINIX-N UWIN VC-CE VC-NT VC-WIN32 VC-WIN64A
VC-WIN64I aix-cc aix-gcc aix3-cc aix64-cc aux3-gcc bsdi-elf-gcc cc cray-j90
cray-t3e darwin-i386-cc darwin-ppc-cc dgux-R3-gcc dgux-R4-gcc dgux-R4-x86-gcc
dist gcc hpux-cc hpux-gcc hpux-ia64-cc hpux-ia64-gcc hpux-parisc-cc
hpux-parisc-cc-o4 hpux-parisc-gcc hpux-parisc1_0-cc hpux-parisc2-cc
hpux-parisc2-gcc hpux64-ia64-cc hpux64-ia64-gcc hpux64-parisc2-cc
hpux64-parisc2-gcc hurd-x86 irix-cc irix-gcc irix-mips3-cc irix-mips3-gcc
irix64-mips4-cc irix64-mips4-gcc linux-alpha+bwx-ccc linux-alpha+bwx-gcc
linux-alpha-ccc linux-alpha-gcc linux-aout linux-elf linux-generic32
linux-generic64 linux-ia32-icc linux-ia64 linux-ia64-ecc linux-ia64-icc
linux-ppc linux-ppc64 linux-sparcv8 linux-sparcv9 linux-x86_64 linux64-sparcv9
mingw ncr-scde netware-clib netware-libc netware-libc-bsdsock netware-libc-gcc
newsos4-gcc nextstep nextstep3.3 osf1-alpha-cc osf1-alpha-gcc purify qnx4 qnx6
rhapsody-ppc-cc sco5-cc sco5-gcc solaris-sparcv7-cc solaris-sparcv7-gcc
solaris-sparcv8-cc solaris-sparcv8-gcc solaris-sparcv9-cc solaris-sparcv9-gcc
solaris-x86-cc solaris-x86-gcc solaris64-sparcv9-cc solaris64-sparcv9-gcc
solaris64-x86_64-cc solaris64-x86_64-gcc sunos-gcc tandem-c89 tru64-alpha-cc
ultrix-cc ultrix-gcc unixware-2.0 unixware-2.1 unixware-7 unixware-7-gcc
vos-gcc vxworks-mipsle vxworks-ppc405 vxworks-ppc750 vxworks-ppc750-debug
vxworks-ppc860 debug debug-BSD-x86-elf debug-Cygwin debug-ben debug-ben-debug
debug-ben-openbsd debug-ben-openbsd-debug debug-ben-strict debug-bodo
debug-darwin-ppc-cc debug-geoff debug-levitte-linux-elf
debug-levitte-linux-elf-extreme debug-levitte-linux-noasm
debug-levitte-linux-noasm-extreme debug-linux-elf debug-linux-elf-noefence
debug-linux-pentium debug-linux-ppro debug-rse debug-solaris-sparcv8-cc
debug-solaris-sparcv8-gcc debug-solaris-sparcv9-cc debug-solaris-sparcv9-gcc
debug-steve debug-steve-linux-pseudo64 debug-ulf debug-vos-gcc

Also "mipsel" find ich darin nicht..
 
Zuletzt bearbeitet:
fischefr schrieb:
Genau DAS hab ich auch festgestellt - gibts da keine netten Tricks, um genau das zu umgehen?
Du könntest das ganze Verzeichnis cgi-bin kopieren (cp -a) und dann dieses Verzeichnis mit mount -o bind mounten. Damit müßte das ganze Verzeichnis cgi-bin beschreibbar sein. Allerdings verbraucht das halt mehr Arbeitsspeicher, da nun eben alle Dateien im Verzeichnis cgi-bin im RAM sind.
fischefr schrieb:
Ich versuche gerade, OpenSSL zu compilieren. Habe jetzt ein ./Configure zu machen ...
Code:
make openssl
bzw.
Code:
make openssl-precompiled
könnte dir auch weiterhelfen ;)

Mfg,
danisahne
 
Schau mal im openwrt nach. Da kann man schön abgucken. Unter packages sind die ganzen Makefiles und Patches.
Code:
svn checkout https://svn.openwrt.org/openwrt/trunk/openwrt .
Oder nimm gleich den dsmod...

MfG Oliver
 
danisahne schrieb:
Du könntest das ganze Verzeichnis cgi-bin kopieren (cp -a) und dann dieses Verzeichnis mit mount -o bind mounten. Damit müßte das ganze Verzeichnis cgi-bin beschreibbar sein. Allerdings verbraucht das halt mehr Arbeitsspeicher, da nun eben alle Dateien im Verzeichnis cgi-bin im RAM sind.

Code:
make openssl
bzw.
Code:
make openssl-precompiled
könnte dir auch weiterhelfen ;)

Mfg,
danisahne

Das soll jetzt heißen, dass du mir wieder mal zuvor gekommen bist, oder?
Aber mir gehts eigentlich ums Prinzip, nicht nur um die fertige Binary.
Wie groß darf eigentlich das Flash-Image genau sein? 32 MB hat der Flash soweit ich weiß, aber davon muss man doch ein wenig abziehen für den Bereich, auf dem debug.cfg & Co liegen. Gibts eigentlich für die debug.cfg ein Größenlimit? Ich weiß, ich löcher euch jetzt gehörig mit Fragen, aber mich interessiert das Zeug einfach und ich hab keine andere Info-Quellen.
Langsam bekomm ich das Gefühl, dass ich mir zuviel vorgenommen habe.
 
32 MB wären schön, aber es gibt nur Fritzboxen mit 2, 4 oder 8 MB.

Aus dem Kopf heraus:

debug.cfg & co (TFFS) haben auf den Boxen mit 2 MB Flash 2 x 32 KB, auf den Boxen mit 4 und 8 MB Flash waren es glaub ich 2 x 128 KB bzw. 2 x 256 KB. Der Bootloader ADAM2 ist glaube ich auf allen Boxen mir 64 KB dabei. Viel mehr belegt da der Kernel, der so ca 400 KB braucht. Wenn du den ds-mod benutzt, dann sagt er dir aber schon, sobald du das Limit überschritten hast.

EDIT: openssl hab ich schon vor ein paar Wochen eingebaut in Vorbereitung auf OpenVPN. Ich habs im Mod mit zlib support kompiliert. Weiß darüber jemand was genaueres? Wozu kann die libssl die zlib brauchen?

EDIT2: Die maximale Größe von kernel.image und filesystem.image kann in der ADAM environment nachgeschaut werden. Für kernel.image (mtd1) ist es beispielsweise auf der FBF 7050 (4 MB Flash) 704 KB und für filesystem.image (mtd0) 3072 KB. Diese 3 MB fürs Dateisystem beziehen sich auf das komprimierte Squashfs Image. Durch Tricks lassen sich aber auch unbenutzte Teile von mtd1 noch für das Dateisystem Image nutzen (das wurde hier im Forum immer contiguous squashfs genannt).

EDIT3: Ich habe nun die verschiedenen Flash Partitionierungen in der Wiki zusammengefasst: [wiki]software:ds-mod:development:flash[/wiki]

Mfg,
danisahne
 
Zuletzt bearbeitet:
Squashfs um binaries ergänzbar?

Hallo zusammen,

entschuldigt bitte, wenn ich in Euren Thread so hereinplatze. Aber meine Frage ist nicht so ganz offtopic zu diesem Thread:

Da ich nur wenige zusätzliche Binärdateien (z.B. dropbear) benötige, möchte ich gerne diese fest in das Squashfs einbinden. Leider sind meine Kenntnisse dazu rudimentär. Wenn ich es aber richtig verstanden habe, muß ich zunächst
1. das Squashfs auf der Box erzeugen und als Datei zwischenlagern.
2. auf einen anderen PC kopieren.
3. "Extrahieren",
4. Das benötigte Binary und zusätzliche Config-Dateien in die passenden Verzeichnisse kopieren.
5. Eine neue Squashfs Datei aus dem Ergebnis von 4. erzeugen.
6. Diese Datei auf die Box hochladen.

Wie wird dann das neue Squashfs erzeugt?

Hier fehlen mir die Kenntnisse. Diese Methode halte ich aber ansonsten für praktisch, wenn man nicht ständig was ändern muß.
Meine größten Schwierigkeiten habe ich bei Punkt 1. und 6. Bzgl. des Squashfs als solches habe ich schon das betreffende HOWTO gelesen.
Für 1. würde sich ja temporär sogar lohnen, das ftpfs einzubinden.

Vielen Dank für Eure Antworten!

mfg

Wolfram
 
Erst mal mußt du genau wissen was du tust, wenn du das machen willst, und du solltest dich mit dem Wiederherstellen der Box auskennen. Fritzbox ist nicht gleich Fritzbox, eine Übersicht über die Flash Einteilung hab ich zufällig gestern geschrieben: [wiki]software:ds-mod:start[/wiki].

woweil schrieb:
1. das Squashfs auf der Box erzeugen und als Datei zwischenlagern.
Nein, das Squashfs bekommst du aus dem Firmware Update. Ich hab dazu im Falle, dass die Firmware in die Kategorie Hidden Squashfs fällt vor langem eine Anleitung geschrieben: http://www.ip-phone-forum.de/showthread.php?t=90609

Mfg,
danisahne
 
Hallo danisahne,

vielen Dank für die schnelle Antwort. Deinen Thread http://www.ip-phone-forum.de/showthread.php?t=90609 habe ich mir angeschaut.
Ich denke auf diesem Wege ist eine Ergänzung von Binaries wirklich sinnvoll. Nur leider fehlt noch die Anleitung zu hidden root. Meine Fritz! ist eine 5010. Wenn ich in den anderen Threads richtig gelesen habe, dann verwendet diese hidden root.
Kann ich im Prinzip wie mit der voranstehenden Anleitung verfahren?

mfg

Wolfram
 
Ich habe mittlerweile auch ein paar kleine Fortschritte gemacht:

- Squashfs der Fritzbox erfolgreich gemountet (Kubuntu hat bereits SquashFS als modul, musste als nicht am Kernel rumpfuschen)
- Das Tool zum Erzeugen der Squashfs images kompiliert
- eigene cgi-Skripte in die Box einbinden erfolgreich erprobt

Und ich habe natürlich wieder eine neue (Schnaps???-)Idee:

Überlegung:
Nachdem es ja (sofern ich das richtig verstanden habe) bereits die Möglichkeit gibt, auf die Box via https von außen zuzugreifen, könnte man eine Konsole in die Weboberfläche integrieren. (Habe ich schon mal erwähnt). Dazu bräuchte ich die aktuelle Busybox, hat die schon mal jemand compiliert? mit
Code:
tail -f in.txt | busybox >> out.txt
und einem stupiden Skript sollte es (ggf. in Kombination mit Javascript) kein Problem sein, eine Shell in die Weboberfläche zu integrieren.
Ist so natürlich noch hölzern:
- Dateien werden immer länger
- nur 1 Benutzer gleichzeitig, sonst gibts eine Katastrophe

Nach einer längeren Diskussion mit einem Komilitonen bin ich zu dem Fazit gekommen, dass das via Skript etwas unangenehm werden könnte. Vereinfachte Alternative: Formularseite, wo der Benutzer ein shell-Skript tippen und ausführen lassen kann.
 
Zuletzt bearbeitet:
@danisahne
ich bin zwischenzeitlich nach Deinem Howto "Step by Step - Dateien dauerhaft ins Dateisystem modden" vorgegangen.

Aus dem kernel.image (wg. hidden root nicht aus filesystem.image) ließ sich mit dumpsquashfs ein dump erstellen. Anschließend war die selbe Verzeichnisstruktur auf der Platte wie auf der Box. Ich denke deshalb, daß das dumpsquashfs wohl geklappt hat.

Allerdings beim Ermittlen der Blocksize gibt es dann Probleme:
Ein
let BS="1<<$(od -i -N 1 -j 34 build/firmware/var/tmp/kernel.image | sed -n -e '1s#.* ##' -e 1p)"

ergibt als Wert 1. Dies akzeptiert mksquashfs nicht, da es nur Werte zwischen 512 Byte und 64 KB erwartet.

Jetzt habe ich an dieser Stelle eine Frage, die mit Sicherheit meine Unkenntnis deutlich macht, aber: Kann ich bei mksqushfs die Blocksize willkürlich mit 65536 oder 16384 angeben? Oder zerschieße ich mir bei einem anschließenden Upload des Image meine Box? Gibt es überhaupt wegen des hidden root eine Möglichkeit, das Filesystem zu bearbeiten?

mfg

Wolfram
 
Bei den aktuellen Firmwares kannst du 16384 oder 65536 verwenden, der Kernel kann beides. Das Ermitteln der Blockgröße ist also hinfällig. Ich werde das Howto heute Abend noch aktualisieren und um hidden Root ergänzen.
 
Vielen Dank für den Hinweis. Heute Abend, wenn keine Anrufe mehr erwartet werden, wird das Image getestet. Ich werde Dich darüber informieren.

mfg

Wolfram
 
Hallo danisahne,

zwischenzeitlich habe ich das neue Image getestet. Es funktionierte nicht. Allerdings gab es auch keinen Recover-Fall. Die Info LED blinkte immer. Und ich konnte auch mit telnet auf die Box. Dabei habe ich unter var/tmp zwei Logdateien gefunden: update_error.log und update_out.log.
Interessant war, daß unter var nicht mehr das "install" Script lag.
Offensichtlich ging die Fritzbox von einem fehlerhaften Tar-Archiv aus:
tar: Unexpected EOF
Ich habe sicherheitshalber das Archiv mit dem busybox tar gemacht, um Inkompatibilitäten zu vermeiden.

Ich mal eine kurze Zusammenfassung der Beobachtungen hier eingefügt:

update_error.log:

tar: Unexpected EOF


update_out.log:

var/
var/tmp/
var/tmp/filesystem.image
var/tmp/kernel.image

es fehlt das Script install unter var/


Inhalt des Originalimage mit tar -tvf ermittelt:

drwxrwxr-x 0/0 0 2006-02-02 13:46:21 ./var/
drwxrwxr-x 0/0 0 2006-02-02 13:46:20 ./var/tmp/
-rw-rw---- 0/0 3313928 2006-02-02 13:46:20 ./var/tmp/kernel.image
-rw-rw---- 0/0 0 2006-02-02 13:46:20 ./var/tmp/filesystem.image
-r--r--r-- 0/0 30224 2006-02-02 13:45:48 ./var/flash_update.o
-rwxrwxr-x 0/0 2824 2006-02-02 13:46:21 ./var/info.txt
-rwxrwxr-x 0/0 15358 2006-02-02 13:46:21 ./var/install
-rwxrwxr-x 0/0 31700 2006-01-26 16:25:06 ./var/chksum

Inhalt des neu geschaffenen Archivs:

drwxrwxr-x root/root 0 2006-02-02 13:46:21 var/
drwxrwxr-x root/root 0 2006-02-02 13:46:20 var/tmp/
-rw-rw---- root/root 0 2006-02-02 13:46:20 var/tmp/filesystem.image
-rw-rw---- root/root 3280904 2006-04-13 12:49:58 var/tmp/kernel.image
-r--r--r-- root/root 30224 2006-02-02 13:45:48 var/flash_update.o
-rwxrwxr-x root/root 31700 2006-01-26 16:25:06 var/chksum
-rwxrwxr-x root/root 2824 2006-02-02 13:46:21 var/info.txt
-rwxrwxr-x root/root 15358 2006-02-02 13:46:21 var/install


Inhalt von /var/tmp auf der Box:

/var/tmp
# ls
csem group passwd sip1.js
filesystem.image hosts resolv.conf update_error.log
fw_ip kernel.image shadow update_out.log
 
Hallo danisahne,

ich vermute da ist ein ernsthafteres Problem mit dem Originalimage von avm. Jedenfalls ließ sich die Box nicht mit dem unveränderten Image updaten. In der update_error.log habe ich wieder die selbe Meldung gehabt: tar: Unexpected EOF. Da spricht ja eigentlich sehr dafür, daß die Box selbst mit dem Originalimage nicht zurechtkommt. Denn auf meine Linuxkiste läßt es sich einwandfrei extrahieren.
Nach hoffentlich konstruktiver Antwort von avm werde ich an die Sache neu herangehen und schauen, ob es dann geht.

Bis dahin wünsche ich allen ein schönes Osterfest.

mfg

Wolfram
 
Du hast die Box aber schon zwischen deinen Versuchen komplett neugestartet? Also Stecker raus und rein.
 
Wenn ich Webseiten auf der Box verändern/hinzufügen will, stehe ich vor einem Problem: Die Seiten liegen in einem Unterverzeichnis von var, was wiederrum im Hidden Squashfs liegt (was immer das genau ist). Kann ich da analog zum Verändern von filesystem.image vorgehen, oder muss ich da was beachten?
 
Nach mehreren Versuchen habe ich die Box dann auch aus- und eingeschaltet. Das hat alles nichts geholfen. Ansonsten funktioniert auch die Box einwandfrei. Es sind keine Störungen ersichtlich. Deshalb habe ich das Originalimage im Verdacht. Und darum habe ich jetzt den Support informiert. Ich hoffe nur, daß er sich nicht querstellt, weil ich den telnetd aktiviert habe und einen ähnlichen Screenshot wie hier zugesandt habe.

mfg

Wolfram
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.