If you don’t speak German but would like to work on this project, please let me know by adding a comment in the forum.
Netatalk ist im Beta-Test. Bitte Probleme und Anregungen im Bugtracker Github Issues erfassen, zuerst aber unbedingt “Konfiguration” weiter unten lesen!
Wer bereits eine Netatalk-Version von vor dem 4.12.2010 installiert hat, muss zusätzlich folgende Kommandos ausführen, um libdb zu patchen und neu zu bauen:
cd freetz/trunk sed -i 's%enable-smallbuild%enable-smallbuild\n$(PKG)_CONFIGURE_OPTIONS += --with-mutex=MIPS/gcc-assembly%' make/libs/db.mk make db-dirclean
Im Moment schrauben nur ich (Sven) und dg1kjd (Jens) an diesen Paketen. Um mit mir Kontakt aufzuznehmen, schreibe eine Reply ins Forum, schicke mir auf Github eine Message an “svoop” oder suche mich auf IRC (nick: “svoop”).
Zuerst sollte das Git Repo geforked werden:
http://github.com/svoop/freetz-netatalk
Danach die Entwicklungsumgebung erzeugen. Anstelle von {USERNAME} sollte der eigene Github-Username eingesetzt werden:
mkdir freetz cd freetz svn checkout http://svn.freetz.org/trunk git clone git@github.com:{USERNAME}/freetz-netatalk.git netatalk ln -s ../../netatalk trunk/make/ sed -i 's%ncftp/Config.in%ncftp/Config.in\nsource make/netatalk/Config.in%' trunk/make/Config.in sed -i 's%enable-smallbuild%enable-smallbuild\n$(PKG)_CONFIGURE_OPTIONS += --with-mutex=MIPS/gcc-assembly%' trunk/make/libs/db.mk cd trunk make menuconfig
Das Netatalk-Paket befindet sich hier:
FREETZ_PACKAGE_NETATALK Package selection -> Testing -> Netatalk
AFP (Netatalk) unterscheidet sich fundamental von SMB (Samba)! Der wichtigste Unterschied besteht darin, dass AFP zum Referenzieren der Dateien und Verzeichnisse nicht die Pfade, sondern eine in gewisser Weise redundante CNID (Catalog Node ID) benutzt. Für das Mapping zwischen Pfad und CNID wird eine Datenbank im Verzeichnis .AppleDB
angelegt.
Diese Datenbank ist natürlich eine potentielle Fehlerquelle. Sehr schlecht ist Beispielsweise ein plötzlicher Tod des Datenbank-Daemons cnid_dbd
mit SIGKILL oder durch einen Stromausfall. In diesem Fall muss die Datenbank vor dem nächsten Mounten unbedingt mit dbd
repariert werden. Der Prozess darf nur mit SIGTERM abgeschossen werden.
Eine weitere Nebenwirkung ist, dass alle Änderungen am Filesystem via AFP geschehen müssen, d.h. auf ein AFP-Share darf mit anderen Methoden (SMB, SFTP, Shell etc) nicht geschrieben werden, denn nur AFP aktualisiert die CNID Datenbank. Wird z.B. mit SMB eine neue Datei erstellt, ist sie für AFP nicht sichtbar. Künftige Versionen von Netatalk werden möglicherweise einen Filesystem-Crawler beinhalten.
Damit die CNID Datenbank immer geschrieben werden kann, ist es wichtig, dass die von Netatalk gemeldete Kapazität des Shares eine Ecke geringer ist als die physikalische Kapazität. Die gemeldete Kapazität kann man mit volsizelimit:100000
definieren.
Wer ein Share als TimeMachine-Medium benutzen möchte, sollte sich die Option options:tm
näher anschauen und das Volsizelimit nicht zu knapp setzen.
Wer lieber in der Shell herumprobiert, muss einmal Netatalk über das Webinterface starten und stoppen. Dadurch werden die folgenden Konfigurationsdateien angelegt und können danach direkt bearbeitet werden:
- /mod/etc/netatalk/afpd.conf
- /mod/etc/netatalk/AppleVolumes.default
Starten der Daemons:
pre.
cnid_metad -s /sbin/cnid_dbd -l LOG_INFO
afpd -F /mod/etc/netatalk/afpd.conf -f /mod/etc/netatalk/AppleVolumes.default -P /var/run/afpd.pid
Stoppen der Daemons:
pre.
killall -SIGTERM afpd
killall -SIGTERM cnid_metad