[INFO] avahi für die FritzBox

sf3978

IPPF-Promi
Mitglied seit
2 Dez 2007
Beiträge
8,014
Punkte für Reaktionen
28
Punkte
48
Mit den Patches im Anhang, kann avahi (daemon, dns-server, library) mit Freetz für die FritzBox kompiliert werden.

EDIT:
siehe Beitrag #25: avahi-daemon 0.6.30
 

Anhänge

  • libdaemon_mk.patch.txt
    1.8 KB · Aufrufe: 21
  • avahi-daemon.patch.txt
    7.4 KB · Aufrufe: 30
Zuletzt bearbeitet:
Code:
$(PKG)_DEPENDS_ON := expat
Fehlt da nicht noch was? (pcap, gettext, daemon)

MfG Oliver
 
Ist doch Alles im Patch:;)
Code:
+AVAHI_DAEMON_LIBS := -lpcap -lexpat -ldaemon -lintl
+$(PKG)_DEPENDS_ON := expat
 

Anhänge

  • make_avahi-daemon-precompiled.txt.tar.gz
    12.4 KB · Aufrufe: 18
Zuletzt bearbeitet:
Wenn dein Paket diese 4 Libs braucht, dann braucht er auch ein $(PKG)_DEPENDS_ON für diese 4 Libs und nicht nur für expat.

Mfg Oliver
 
Kann sein. In der Config.in sind die libs mit "select" ja auch angegeben und die Abhängigkeiten werden erkannt. "make avahi-daemon-precompiled" läuft ohne Fehlermeldung durch.

EDIT:
libpcap und libdaemon werden akzeptiert:
$(PKG)_DEPENDS_ON := expat libpcap libdaemon

Mit libintl gibt es eine Fehlermeldung.

EDIT 2:
Ja mit libintl kann es ja auch nicht funktionieren. gettext ist richtig und damit funktioniert es auch:
$(PKG)_DEPENDS_ON := expat libpcap libdaemon gettext
 
Zuletzt bearbeitet:
In der Config.in sind die libs mit "select" ja auch angegeben und die Abhängigkeiten werden erkannt.
Mit "select" gibst Du an, was alles ins Image kopiert werden muss, damit die Paket-Abhängigkeiten zur Laufzeit aufgelöst werden können. Mit DEPENDS_ON werden die Paket-Abhängigkeiten zur Compile-Zeit aufgelöst... Es läuft deswegen durch, weil andere Pakete in Deiner .config von denselben Libraries abhängen und diese somit in der STAGING_DIR bereits vorhanden sind. Mit einer "leeren" nur Dein Paket enthaltenden .config würde sich das Ganze nicht übersetzen lassen, daher ist es ein Fehler, wie Oliver richtig angemerlkt hat...
 
OK, verstanden. Von der libdaemon hängt zwar kein 2. Paket ab, aber es waren noch Reste in der STAGING_DIR. Ein "make libdaemon-dirclean" reicht hier nicht, man muss auch "-clean" machen, damit Alles weg ist. Danke für den Hinweis. Der Fehler ist behoben:
Code:
$(PKG)_DEPENDS_ON := expat libpcap libdaemon gettext

EDIT:
avahi-daemon findet die libraries aus "/usr/lib/freetz" nicht, obwohl diese vorhanden sind:
Code:
/var/mod/root # ldd /usr/bin/avahi-daemon
        libavahi-common.so.3 => not found
        libavahi-core.so.6 => not found
        libpthread.so.0 => /lib/libpthread.so.0 (0x2aabe000)
        libdl.so.0 => /lib/libdl.so.0 (0x2aae2000)
        libpcap.so.1.1 => not found
        libexpat.so.1 => not found
        libdaemon.so.0 => not found
        libintl.so.8 => not found
        libc.so.0 => /lib/libc.so.0 (0x2aaf5000)
        libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x2abaa000)
        ld-uClibc.so.0 => /lib/ld-uClibc.so.0 (0x2aaa8000)
Muss evtl. jetzt ein neues Paket, zum benutzen der libraries aus diesem Verzeichnis (/usr/lib/freetz), irgendwo registriert/eingetragen werden? Trunk 4745. Danke.

EDIT 2:
Habe das Problem jetzt weniger elegant mit symlinks gelöst:
Code:
/var/mod/root # ldd /usr/bin/avahi-daemon
        libavahi-common.so.3 => /lib/libavahi-common.so.3 (0x2aabe000)
        libavahi-core.so.6 => not found
        libpthread.so.0 => /lib/libpthread.so.0 (0x2aad9000)
        libdl.so.0 => /lib/libdl.so.0 (0x2aafd000)
        libpcap.so.1.1 => /lib/libpcap.so.1.1 (0x2ab10000)
        libexpat.so.1 => /lib/libexpat.so.1 (0x2ab50000)
        libdaemon.so.0 => /lib/libdaemon.so.0 (0x2ab80000)
        libintl.so.8 => /lib/libintl.so.8 (0x2ab96000)
        libc.so.0 => /lib/libc.so.0 (0x2abae000)
        libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x2ac63000)
        ld-uClibc.so.0 => /lib/ld-uClibc.so.0 (0x2aaa8000)

EDIT 3:
Jetzt ist die libavahi-core.so.6 auch da:
Code:
/var/mod/root # ldd /usr/bin/avahi-daemon
        libavahi-common.so.3 => /lib/libavahi-common.so.3 (0x2aabe000)
        libavahi-core.so.6 => /lib/libavahi-core.so.6 (0x2aad9000)
        libpthread.so.0 => /lib/libpthread.so.0 (0x2ab1c000)
        libdl.so.0 => /lib/libdl.so.0 (0x2ab40000)
        libpcap.so.1.1 => /lib/libpcap.so.1.1 (0x2ab53000)
        libexpat.so.1 => /lib/libexpat.so.1 (0x2ab93000)
        libdaemon.so.0 => /lib/libdaemon.so.0 (0x2abc3000)
        libintl.so.8 => /lib/libintl.so.8 (0x2abd9000)
        libc.so.0 => /lib/libc.so.0 (0x2abf1000)
        libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x2aca6000)
        ld-uClibc.so.0 => /lib/ld-uClibc.so.0 (0x2aaa8000)
Code:
/var/mod/root # avahi-daemon -h
avahi-daemon [options]
    -h --help          Show this help
    -D --daemonize     Daemonize after startup (implies -s)
    -s --syslog        Write log messages to syslog(3) instead of STDERR
    -k --kill          Kill a running daemon
    -r --reload        Request a running daemon to reload static services
    -c --check         Return 0 if a daemon is already running
    -V --version       Show version
    -f --file=FILE     Load the specified configuration file instead of
                       /etc/avahi/avahi-daemon.conf
       --no-rlimits    Don't enforce resource limits
       --no-drop-root  Don't drop privileges
       --no-proc-title Don't modify process title
       --debug         Increase verbosity
 
Zuletzt bearbeitet:
Probier mal mit "$(PKG)_CONFIGURE_PRE_CMDS += $(call PKG_PREVENT_RPATH_HARDCODING,./configure)" anstatt irgendwas zu symlinken.

MfG Oliver
 
avahi-daemon findet die libraries aus "/usr/lib/freetz" nicht, obwohl diese vorhanden sind
RPATH? Schaue mit
Code:
readelf -d avahi-daemon | grep RPATH
welcher RPATH in dem binary enthalten ist, wird höchstwahrscheinlich irgendein Pfad aus Deinem Build-Verzeichnis sein. Versuch' mit einem der Macros PKG_PREVENT_RPATH_HARDCODING oder REPLACE_LIBTOOL das Problem zu lösen.

Edit: Oliver war minimal schneller :)
 
Code:
/var/mod/root # echo $LD_LIBRARY_PATH
/mod/lib
Vielen Dank an Euch für die Hilfe. Die Lösung ist:
Code:
$(PKG)_CONFIGURE_PRE_CMDS += $(call PKG_PREVENT_RPATH_HARDCODING,./configure)
Jetzt werden die libraries auch im Verzeichnis "/usr/lib/freetz" gesucht und gefunden:
Code:
/var/mod/root # ldd /usr/bin/avahi-daemon
        libavahi-common.so.3 => /usr/lib/freetz/libavahi-common.so.3 (0x2aabe000)
        libavahi-core.so.6 => /usr/lib/freetz/libavahi-core.so.6 (0x2aad9000)
        libpthread.so.0 => /lib/libpthread.so.0 (0x2ab1c000)
        libdl.so.0 => /lib/libdl.so.0 (0x2ab40000)
        libpcap.so.1.1 => /usr/lib/freetz/libpcap.so.1.1 (0x2ab53000)
        libexpat.so.1 => /usr/lib/freetz/libexpat.so.1 (0x2ab93000)
        libdaemon.so.0 => /usr/lib/freetz/libdaemon.so.0 (0x2abc3000)
        libintl.so.8 => /usr/lib/freetz/libintl.so.8 (0x2abd9000)
        libc.so.0 => /lib/libc.so.0 (0x2abf1000)
        libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x2aca6000)
        ld-uClibc.so.0 => /lib/ld-uClibc.so.0 (0x2aaa8000)

EDIT:
Nach der Änderung:
Code:
:~/myfreetz/freetz4745/freetz-trunk/packages/avahi-daemon-0.6.25/root/usr/bin> readelf -d avahi-daemon | grep RPATH
 0x0000000f (RPATH)                      Library rpath: [/usr/lib/freetz]
 

Anhänge

  • proper_avahi-daemon.patch.txt
    7.9 KB · Aufrufe: 12
Zuletzt bearbeitet:
@Ralf: Nein, eben nicht, das ist doch die Lösung aller openssl-Probleme
 
Um die openssl-Probleme zu lösen, muss dieser Pfad in alle Libraries/Binaries, die direkt oder indirekt von den openssl-Libraries abhängen, hardkodiert werden. Es ist schlicht und ergreifend technisch deutlich einfacher, diesen Pfad in alle von uns übersetzten Libraries/Binaries hardzukodieren als gezielt nur in die, die es wirklich brauchen. Sollte zudem noch irgendeine Library ähnliche Probleme aufweisen, so ist die Lösung schon da. Das Plazieren der Libraries in /usr/lib/freetz bringt außerdem einen kleinen Performance-Vorteil zur Laufzeit, da die Libraries sofort unter /usr/lib/freetz gefunden werden und nicht noch in anderen Verzeichnissen gesucht werden müssen.
 
Fortschritt!

Mahlzeit,

ich habe mal daran weitergearbeitet und ein GitHub Repo im Stil von Sven's freetz-netatalk eingerichtet. Stand dieses Moduls entspricht auch in etwa jenem, i.e. irgendwas zwischen Alpha und Beta Stadium.

https://github.com/dg1kjd/freetz-avahi

Viel Spass,
--j
 
Hallo,

so nach einigen frustrierenden Stunden habe ich es geschafft, Avahi zum laufen zu bekommen. Erst mal vielen Dank an dg1Kjd.
Habe folgende Probleme festgestellt:
1. Avahi startete bei mir nicht, weil es den User nobody nicht fand. habe ihn selbst erstellt, aber das geht doch sicher eleganter, oder?
2. Die Konfigurationsdateien haben sich nicht selbst mit Beispieldaten erstellt. Habe ich manuell nachgeholt. Wenn jemand Intersse an der Konfiguration für netatalk hat, bitte melden.

aber dann rannte es und ich habe mir nun mit netatalk und HFS+ ne Timecapsule gebaut, die sich fast so verhält wie das original, Sprich: Timemachine stuft die Fritzbox als Supportet ein.

Spannend alles ;)
 
Hallo, habe ein Prob. mit avahi auf FREETZ

Meine Box 7270, läuft mit Freetz-1.1.4.
also vorher ohne Avahi:
Beim Start "make menuconfig"
slightly@StinkyLinux:~/freetz-1.1.4$ make menuconfig
WARNING: The program intltool-update was not found in path.
- Kompilier läuft aber durch, Image wurde erstellt und Box geladen i.o.


Avahi eingerichtet wie in https://github.com/dg1kjd/freetz-avahi beschrieben:

Nun mein Prob.: Beim Start "make menuconfig"
slightly@StinkyLinux:~/freetz-1.1.4$ make menuconfig
WARNING: The program intltool-update was not found in path.
make/avahi-daemon/Config.in:4:warning: 'select' used by config symbol 'FREETZ_PACKAGE_AVAHI_DAEMON' refer to undefined symbol 'FREETZ_LIB_libdaemon'
#
# using defaults found in .config
#
- Kompilier läuft natürlich nicht durch

Kann mir da bitte ev. jemand helfen !?
MfG JokerPro
 
Jo is drin,

hatte auch mal mit den beiden Patches getestet, brachte auch erst einmal nix.
(die aus deinem ersten Post)

MfG. JokerPro
 
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.