[letztes update vom 15.06.2010] afpd mit mDNS/zeroconf/Bonjour auf FreeBSD 8 (aber genauso auf FreeBSD 7 bzw 7.1 )
- netatalk-2.1.1_1,1 als AFP Server
- avahi-0.6.24 für den mDNS Broadcoast
- nss_mdns-0.10_1 als mDNS Resolver
neuen Kernel kompilen mit options NETATALK Mag zwar nicht wirklich nötig sein, denn afp läuft auch ohne, aber dann taucht in /var/log/messages bei jedem Start ein Mar 21 11:13:52 brutus afpd[1127]: main: atp_open: Protocol not supported auf.
# cd /usr/ports/net/netatalk
# make install clean
# cd /usr/ports/dns/nss_mdns
# make install clean`
avahi ist Vorraussetzung für nss_mdns, wird also direkt mitinstalliert, default Konfiguration bis auf [X] LIBDNS. in /etc/rc.conf:
`dbus_enable="YES"
avahi_daemon_enable="YES"
cnid_metad_enable="YES" # cnid backend für afpd
netatalk_enable="YES"
afpd_enable="YES"`
/usr/local/etc/netatalk.conf:
ATALKD_RUN=no # kein AppleTalk
PAPD_RUN=no
AFPD_RUN=yes
Für jeden zu veröffentlichenden Dienst ist in /usr/local/etc/avahi/services eine XML-Datei nachfolgendem Schema anzulegen, hier ein Beispiel für afp,
Name der Datei z.B. afp.service:
`< ?xml version="1.0" standalone='no'?> < !DOCTYPE service-group SYSTEM "avahi-service.dtd">
%h
_afpovertcp._tcp 548 `
Alle (?) Service Types sind hier beschrieben: http://www.dns-sd.org/ServiceTypes.html
Wer in der Findersidebar gerne einen anderes Bild als das standard Apple Display sehen möchte, fügt noch direkt über ein:
_device-info._tcp model=bsd 0 `
Statt model=Xserve sind noch mehrere andere Modelle möglich.
Damit auch hostname.local aufgelöst wird die Zeile host: in /etc/nsswitch.conf bearbeiten:
hosts: files mdns_minimal [NOTFOUND=return] dns mdns
Die zu exportierenden Volumes hier eintragen: /usr/local/etc/AppleVolumes.default
/data allow:user1,user2,@group1, @group2 dbpath:/var/AppleDB options:usedot,noadouble,nohex
/data wird geshared
die Benutzer user1 und user, sowie die Gruppen (bzw deren. Mitglieder) group1 und group2 haben Zugriff.
dbpath:/var/AppleDB
verlegt den .AppleDB Ordner
für weiter optionen siehe: AppleVolumes.default
ein "~" in einer Zeile shared die Home-Verzeichnisse.
Die Optiontmstellt das Volumen Time Machine zur Verfügung.
hat man mehr als ein Network Interface evtl. noch /usr/local/etc/afpd.conf editieren.
will man nicht neustarten: # /usr/local/etc/rc.d/netatalk start # /usr/local/etc/rc.d/dbus start # /usr/local/etc/rc.d/avahi-daemon start`
In /var/log/messages tauchen ein paar Warnungen auf: "WARNING: No NSS support for mDNS detected, consider installing nss-dns!" trotz installiertem (und funktionierendem!) nss-dns. Nunja.
Und mehr oder weniger regelmäßig im Betrieb:
Mar 18 21:44:16 brutus afpd[pid]: bad function 4C
Mar 18 21:46:12 brutus afpd[pid]: bad function 4E
Mar 18 21:46:18 brutus afpd[pid]: bad function 4F
unter netatalk 2.1 tauchen diese Fehlermeldungen nicht mehr auf und sind evtl implementiert.
Diese Funktionen sind bisher undokumentierte Änderungen im AFP Protokoll, siehe hier: http://lists.apple.com/archives/filesystem-dev/2008/Apr/msg00031.html (4C in hex ist 76 dezimal, 4E 78 und 4F 79.)
76 ist ein Spotlight Kommando. 78 und 79 werden für Timemachine Backups auf den AFP-Volumen benötigt, unter anderem sicher gehen, dass die Daten auch wirklich auf der Platte sind und nicht noch im Cache liegen. Wann und ob diese Funktionen von netatalk bereitgestellt werden, scheint noch nicht festzustehen.
Wer unbedingt möchte, kann natürlich auch schon jetzt TimeMachine Backups
auf den AFP Server machen (
http://www.macosxhints.com/article.php?story=20071028173642747
), besonders sicher scheint dies aber nicht zu sein.
[update2 17.6.2009] TimeMachine Unterstützung ist bereits in HEAD und
wird wohl mit netatalk 2.1 released werden (Re: [Netatalk-devel] Development
Roadmap)
[update 3 10.10.2009] Time Machine Unterstützung kommt schon mit Netatalk 2.0.5, der zweite Release Canditade ist schon veröffentlicht, siehe: http://www.netafp.com/node/4
[update1 20.03.2009] Umstieg von howl auf avahi, mehr Informationen zu undokumentieten Funktionen
[tags]FreeBSD, Apple, OSX, afpd, netatalk, bonjour, zeroconf, mDNS, howto, lang:de[/tags]