Skip to content

Home Server Teil 5: Netatalk

17. Februar 2009

Um Dateien bequem und vor allem relativ schnell auf den ZFS pool kopieren zu können habe ich netatalk installiert, was den AFP Dienst für FreeBSD bereitstellt. Dafür installiert man einfach netatalk aus den Ports:

# cd /usr/ports/net/netatalk && make install clean

Dann den AFP Dienst für den Start beim Boot anschalten, in der /etc/rc.conf:

slpd_enable="YES"
netatalk_enable="YES"
atalkd_enable="YES"
papd_enable="NO"
cnid_metad_enable="YES"
afpd_enable="YES"
timelord_enable="NO"

Nach einem Neustart wurde ich dann mit der Fehlermeldung „main: atp_open: Protocol not supported“ konfrontiert. Damit netatalk funktionert muss der FreeBSD Kernel mit einer zusätzlichen Option neu kompiliert werden.

Kernel rekompilieren

Um den Kernel zu kompilieren werden die Sources benötigt: Am schnellsten geht das über sysinstall -> Distribution -> src -> All. Für den Kernel gibt es für jede Architektur eine Konfigurationsdatei. In meinem Fall auf einem 64 Bit System befindet sich die Konfiguration des Standardkernels unter /usr/src/sys/amd64/conf. Um nun den Kernel zu kompilieren wird die Standardkonfiguration GENERIC kopiert und angepasst.

# mkdir /root/kernels
# cd /usr/src/sys/amd64/conf
# cp GENERIC /root/kernels/GENERICMOD
# ln -s /root/kernels/GENERICMOD

Der Konfiguration GENERICMOD wird nun folgender options Eintrag hinzugefügt:

options   NETATALK   # AppleTalk

Bevor ich den Kernel neu kompiliere und installiere, habe ich noch eine Sicherung des aktuellen Kernels angelegt. Für alle Fälle.

# cp -r /boot/kernel /boot/kernel.working

Und nun noch den Kernel kompilieren und installieren:

# cd /usr/src
# make buildkernel KERNCONF=GENERICMOD
# make installkernel KERNCONF=GENERICMOD
# reboot

Der neue Kernel sollte nun beim Booten verwendet worden sein und netatalk dürfte nun auch laufen.

Share für Netatalk konfigurieren

Zu diesem Zeitpunkt sollte der AFP Dienst laufen.

# slptool findsrvs afp
afp://192.168.0.30/?NAME=nibbler&ZONE=,65535

Ja macht er.

Unter /usr/local/etc/AppleVolumes.default werden die Freigabe definiert, die über AFP zugreifbar sein sollen.

/tank tank options:usedot,noadouble,nohex cnidscheme:cdb

Da ich auch ein SVN betreiben werde, ist die option „usedot“ hilfreich, da somit auch .files möglich sind. Der cnidscheme ist zwar der Standardname, verhindert aber unnötige Fehlermeldungen.

Nun lässt sich der ZFS pool schonmal über den Finder mounten (CMD+K): afp://nibbler/tank

Share über Bonjour

Da ich nicht jeden Tag Lust habe über den Finder den pool zu mounten, wäre es ja schön wenn der Home Server direkt im Finder unter Freigaben auftauchen würde. So wie die TimeCapsule auch.

Für FreeBSD habe ich da in den Ports „howl“ und „avahi“ als Bonjour Implementationen gefunden. Ich habe jetzt erstmal zu avahi gegriffen:

cd /usr/ports/avahi && make install clean

Nach der Installation noch in der /etc/rc.conf einschalten:

dbus_enable="YES"
avahi_enable="YES"

Im Ordner /usr/local/etc/avahi/services befinden sich, im XML Format, Definitionen für Dienste die über Bonjour veröffentlich werden sollen. Für AFP (afpd) einfach eine weitere Definition hinzufügen (afpd.service):

<?xml version="1.0" standalone='no'?><!--*-nxml-*-->
<!DOCTYPE service-group SYSTEM "avahi-service.dtd">
<service-group>
  <name replace-wildcards="yes">%h</name>
  <service>
    <type>_afpovertcp._tcp</type>
    <port>548</port>
  </service>
  <service>
    <type>_device-info._tcp</type>
    <port>0</port>
    <txt-record>model=Xserve</txt-record>
  </service>
</service-group>

Mit _device-info kann man angeben als was sich der Dienst ausgeben soll. Da macht sich das Icon des Xserve im Finder natürlich recht schick. Interessant wäre irgendwie ein eigenes Icon an diese Stelle zu zaubern. (Das Icon des Xserver austauschen zählt nicht.)

Home Server als Bonjour ShareDas ist eine sehr komfortable Lösung bis jetzt. Die Schreibgeschwindigkeiten bewegen sich mit netatalk im Rahmen von 30-50MB/sec. Das ist zwar nicht Weltklasse, aber wenn man bedenkt, dass ZFS gleichzeitig noch die Paritätsdaten schreibt, bin ich für mehr Sicherheit bereit ein wenig Geschwindigkeit einzubüßen.


Advertisements
3 Kommentare leave one →
  1. 18. Februar 2009 09:39

    Sehr ausführliches Tutorial. Greifst Du nur mit einem User zu oder mit mehr als einem? Ich habe nämlich das Problem, dass, wenn ich einen Ordner erstelle, meine Frau diesen nicht öffnen kann. Es werden die Rechte drwx-S—– vergeben. Das ist ein Problem, dass ich mit netatalk auch schon unter Debian hatte.

  2. Sascha permalink
    19. Februar 2009 23:15

    Hallo,
    nein im Moment greife ich mit einem User auf den pool. Habe aber schon gesehen, dass remote erstellte Ordner diese Permissions haben.

  3. 11. Juni 2010 08:10

    Hi,

    Für Arbeitesgruppen muss man in der Datei /etc/netatalk/AppleVolumes.default die Freigabe so anlegen:

    Example 5.14. Volume for a collaborative workgroup
    /path/to/volume „Workgroup“ options:upriv dperm:0770 fperm:0660

    Quelle: http://netatalk.sourceforge.net/2.1/htmldocs/AppleVolumes.default.5.html

    Gruß
    Kai

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s

%d Bloggern gefällt das: