[Frage] Telegram auf einer Fritzbox 7270 V3 ?

petit_miner

Neuer User
Mitglied seit
23 Jul 2015
Beiträge
14
Punkte für Reaktionen
0
Punkte
0
Hallo,
Ich habe mir auf meiner 7270 erfolgreich freetz installiert.
Mir kam dabei die Idee auf Telegram auf meiner Fritz Box zu installieren.
Alle erforderlichen Büchereien habe ich im freetz Build Menü gefunden.
Momentan hapert es daran das ein gcc (C Compiler) fehlt, zumindestens ist keiner in der $Path eingetragen.
Ist es überhaupt möglich Telegram auf meiner Fritzbox zu installieren?
Ressourcenfressend ist das Programm nicht! :)
Hier ist ein Link zum Sourcecode:
https://github.com/vysheng/tg
Vielen Dank im voraus
 
Was ist (ein) Telegram?
PS: ich bin 55 Jahre alt.
 
Ein Instant-Messaging-Dienst, wird oft als WhatsApp-Alternative bezeichnet
 
Wozu die dritte Sub-Alternative zur vierten Alternative?
Ist das Ding Ende-zu-Ende verschlüsselt? Tatsächlich oder nur pseudo?
 
Bei Telegram gibt es eine offene API nicht wie bei Whatsapp, aber darum geht es ja hier eigentlich nicht.
Ich benutze Telegram auch nur um meinen Raspberry PI zu steuern.
Nun auf meine Frage zurück zu kommen ist es möglich oder nicht?
 
Nun auf meine Frage zurück zu kommen ist es möglich oder nicht?
Möglich ja, es gibt m.W. sogar die Möglichkeit, den gcc für die Box erstellen zu lassen (hast Du in Freetz den Expertenmodus aktiviert in "menuconfig"?). Allerdings fehlt dann wohl (wieder nur nach meinem Kenntnisstand, bitte korrigieren, wenn das veraltet ist) der Rest für das automatische Build auf der Box ... z.B. das "make"-Kommando. Das per autoconf generierte 'configure' braucht sicherlich (neben "bash", denn "ash" der Busybox wird ziemlich sicher nicht funktionieren) auch wesentlich mehr Voraussetzungen, als eine "normale Freetz-Installation" bietet, angefangen bei Header-Files und noch nicht beendet bei den fehlenden Linker-Files für die "Büchereien". Auf der Box selbst würde ich das also an Deiner Stelle nicht unbedingt übersetzen wollen.

Aber dafür gibt es ja das Freetz-Build-System und genau dort wäre dann auch wieder richtige Platz für ein "cross compile". Die notwendigen Zutaten sollten vorliegen, ggf. braucht es noch die Lua-Development-Files, die sind (m.W.) noch nicht Bestandteil der Build-Umgebung.

Fazit: Ja, es ist möglich. Nein, es ist derzeit nicht als "Paket" eingebaut. Selber machen oder jemand anderen, der sich damit auskennt, für die Idee begeistern.
 
Danke Whoopie
Der Link hört sich viel versprechend an :cool:
 
So einfach ist es dann doch leider nicht.
Normalerweise sucht die configure Datei nach allen Büchereien und headers Dateien.
Doch leider findet die configure Datei manche Büchereien einfach nicht. Zlib usw.
Ich habe es mit diesem Befehl versucht: ./configure --build=i386-linux-gnu --target=mipsel-linux --host=mipsel-linux
Wenn ich die configure Datei ohne Parameter starte wird eine Make Datei (passend für meine Hardware) gebaut und dort findet er alle Büchereien.
Ich gehe momentan davon aus das es einen Extra Ordner in der Toolchain gibt oder die Büchereien auch extra mit der Toolchain gebaut werden müssen.
 
Ja, alle Libraries müssen natürlich auch für die Fritzbox gebaut werden.
Ich schicke heute Abend mal eine "Mini-Anleitung" dazu, mit dem zumindest übersetzen geht (Funktion nicht getestet).

Du kannst ja mal das Ergebnis testen, ob es funktioniert...
 

Anhänge

  • telegram-cli_mipsel_static.gz
    1.1 MB · Aufrufe: 4
Danke für die Datei und vor allem das du mir dabei hilfst. :cool:
Das Ich alle Libraries extra für die Fritzbox brauche habe ich gestern bei der zlib gesehen.
Die Datei ist aufjedenfall im richtigem "Format"
file telegram-cli
telegram-cli: ELF 32-bit LSB executable, MIPS, MIPS32 version 1 (SYSV), statically linked, stripped
Die Datei lässt sich auf der Fritzbox ausführen aber es werden noch ein paar weitere Dateien benötigt.
Hast du das ganze über eine Makefile gemacht?
Oder nur so kompilimiert?
Ich hatte Probleme mit einem undefinierten rpl_realloc in einer Datei, doch stand in dieser kein rpl_realloc drin.:confused:
Hattest du das Problem auch?
 
Eine "Anleitung" muss ich auf dem anderen PC erstellen, da hab ich das mitgeschrieben. Ich schicke das heute Abend.
Ist mit dem enthaltenen "make" gemacht.
Der "configure"-Aufruf braucht noch einige zusätzliche Parameter (für die Libraries und auch für die "malloc"-Probleme, dafür war es wenn ich mich recht entsinne "ac_cv_func_malloc_0_nonnull=yes ac_cv_func_realloc_0_nonnull=yes").
Was für Dateien fehlen denn? Fehlen übersetzte Programme oder kannst du die aus deinem Source-Dateien nehmen?
 
Ich bräuchte den ganzen Ordner nach der Kompilation, sonst funktioniert das ganze leider nicht.
 
Ich schicke später die "Anleitung", dann kannst du das nachbauen.
Kannst du bitte mal ein möglichst einfaches Beispiel für die Benutzung vom Programm posten?!?
 
Weils was anderes ist, mal als neuer Beitrag:

Also, so hab ichs gemacht:

im "make menuconfig" die "richtige" Box ausgewählt und diese Libraries gewählt

uclibc/libubacktrace (fürs statische Bauen; dafür muss bei der Toolchain die uClibc Version 0.9.33.2 gewählt werden !) libevent, openssl, zlib, readline und libconfig.

(kann man bis auf ubacktarce auch "von Hand" so bauen:

make libevent-precompiled
make openssl-precompiled
make zlib-precompiled
make readline-precompiled
make libconfig-precompiled
)

Dann muss das configure den Pfad zu den Libraries bekommen, zlib braucht den Pfad nochmal.
Damit funktioniert schonmal das configure.

Code:
#Pfad zum Freetz-Ordner
FREETZ=/run/shm/trunk

PATH="$FREETZ/toolchain/target/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games" CC="$FREETZ/toolchain/target/bin/mipsel-linux-uclibc-gcc" CFLAGS="-march=4kc -mtune=4kc -msoft-float -Os -pipe -Wa,--trap -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64" LDFLAGS="-L$FREETZ/toolchain/target/usr/lib/" PKG_CONFIG_PATH="$FREETZ/toolchain/target/bin/../lib/pkgconfig" PKG_CONFIG_LIBDIR="$FREETZ/toolchain//target/bin/../lib/pkgconfig" GLOBAL_LIBDIR=$FREETZ/toolchain/target/usr/lib  ./configure  ac_cv_func_malloc_0_nonnull=yes ac_cv_func_realloc_0_nonnull=yes   --target=mipsel-linux --host=mipsel-linux --build=x86_64-pc-linux-gnu --with-zlib=$FREETZ/toolchain/target/usr/ --disable-liblua --disable-python --disable-json

Make hat dann das Problem, dass Source-Files erst während des "make" erzeugt werden, das läuft natürlich schief, wenn die Binaries für die Fritzbox gebaut sind auf dem PC ausgeführt werden. Eine Unterscheidung für "HOSTCC" oder sowas hab ich nicht gefunden.
Ich hab dann einen "Quick-and-Dirty" Workaround gemacht, und das Programm zusätzlich direkt auf dem Host übersetzt und dann beim Fehler während des "make"-Laufes die Binaries vom Host genommen (erst "cp ../tg.HOST/bin/tl-parser bin/", dann später "cp ../tg.HOST/bin/generate bin/").

Zuletz habe ich dann noch (eben falls dirty, ich weiß ;-)) das Programm von Hand nochmal statisch gelinkt, damit ich
es hier ohne Libs anfügen kann.
Dazu musste ich dem letzten Compiler-Aufruf zum Linken neben "-static" noch die Libraries "ubacktrace" und "ncurses"zusätzlich mit angeben (also "-static" und "-lncurses -lubacktrace"):

Code:
$FREETZ/toolchain/target/bin/mipsel-linux-uclibc-gcc objs/main.o objs/loop.o objs/interface.o objs/lua-tg.o objs/json-tg.o objs/python-tg.o objs/python-types.o libs/libtgl.a -L/$FREETZ/toolchain/target/usr/lib/ -L/usr/local/lib -L$FREETZ/toolchain/target/usr/lib -L$FREETZ/toolchain/target/usr/lib -L$FREETZ/toolchain/build/mipsel_gcc-4.6.4_uClibc-0.9.33.2/mipsel-linux-uclibc/usr/lib   -static  -rdynamic -ggdb -levent -lconfig -lz -levent -lm   -lreadline -lssl -lcrypto -ldl   -ldl -lpthread -lutil -lncurses -lubacktrace -o bin/telegram-cli

Danach noch wenigstens etwas kleiner machen und "strippen":
Code:
$FREETZ/toolchain/target/bin/mipsel-linux-uclibc-strip --remove-section={.comment,.note,.pdr} --remove-section={.comment,.note,.pdr} bin/telegram-cli
 
Vielen Dank für die Hilfe :)
Könntest du mir kurz den Teil mit dem kopieren noch mal erklären, da ich nicht so richtig verstanden habe was du da vorhast.
Der Rest klingt plausibel.
 
während des "make" werden Source-Files erzeugt, dazu werden die gerade gebauten Programme genutzt:

Code:
....
/run/shm/trunk/toolchain/target/bin/mipsel-linux-uclibc-gcc objs/tl-parser.o objs/tlc.o objs/crc32.o -L/run/shm/trunk/toolchain/target/usr/lib/ -L/usr/local/lib -L/run/shm/trunk/toolchain/target/usr//lib -L/run/shm/trunk/toolchain/target/usr//lib -L/run/shm/trunk/toolchain/build/mipsel_gcc-4.6.4_uClibc-0.9.33.2/mipsel-linux-uclibc/usr/lib   -rdynamic -ggdb -levent -lconfig -lz -levent -lm   -lreadline -lssl -lcrypto -ldl   -ldl -lpthread -lutil -o bin/tl-parser
bin/tl-parser -e auto/scheme.tlo auto/scheme.tl
bin/tl-parser: 1: bin/tl-parser: Syntax error: "(" unexpected
make: *** [auto/scheme.tlo] Fehler 2
joerg@joerg-Ubuntu:/run/shm/trunk/tg.MIPSEL$
Natürlich kann "bin/tl-parser" nicht ausgeführt werden, es ist ja ein "mipsel-Programm"
Code:
joerg@joerg-Ubuntu:/run/shm/trunk/tg.MIPSEL$ file bin/tl-parser 
bin/tl-parser: ELF 32-bit LSB  executable, MIPS, MIPS32 version 1, dynamically linked (uses shared libs), not stripped
joerg@joerg-Ubuntu:/run/shm/trunk/tg.MIPSEL$

Daher habe ich (später kommt das nochmal mit "bin/generate") das Programm einfach "nativ" auf dem PC übersetzt und dann, als der Fehler auftrat, das x86-Programm an diese Stelle kopiert.
 
OK, danke ich habe es jetzt kompiliert bekommen aber wenn ich die Datei auf meiner Box starte erhalte ich nur die Antwort "killed" :/
Ich probiere es morgen nochmal zu kompilieren, läuft es denn auf deiner Box?
Brauche ich die Büchereien nur zum "Bauen"? oder müssen die auch auf meiner Fritz Box drauf sein das Telegram läuft?
 
Auch wenn alle Büchereien auf der Box installiert sind kriege ich beim Starten die Fehlermeldung killed,
nochmal auf deine Frage zurück zu kommen das Programm startet man so ./telegram-cli
Gibt es irgendwie einen Sicherheitsheitsmechanismus der das Ausführen von Programmen verhindert?
Wie kann man denn den GCC Compiler auf der Box installieren?
Letzter Versuch wäre ja ein lokaler Bau, sonst wüsste ich nicht was ich noch ausprobieren könnte.
 
Wenn es statisch gebaut ist, sollte es ohne jede Library auskommen...

Kann es sein, dass das Programm einfach zuviel Speicher braucht?!?
Bei mir kommt auch gleich ein "killed"...
 
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.