Selbstgebaute Time Capsule nach Debian Art

Gestern wurde die neue Version (2.0.5) Netatalk veröffentlich und bringt als neues Feature Time Machine support. Bisher konnte man Time Machine zwar zur Kooperation mit nicht Apple Geräten überrreden aber gerade wenn es um Backups geht, möchte ich keine Option wie "TMShowUnsupportedNetworkVolumes" aktivieren müssen. Die neue Version net netatalk rüstet jetzt Support für die mit Time Machine eingeführten AFP Befehle nach und kann damit von Time Machine verwendet werden ohne das am Mac rumfrikeln muss.

Privat ich habe Netalk 2.0.4 + diverse Patche aus der Mailingliste und dann in Folge die RCs von 2.0.5 erfolgreich im Einsatz, in der Firma testen wir gerade 2.0.5 RC3.

Hier also die Anleitung in fünf einfachen Schritten, Basis ist eine aktuelle Debian 5 AMD64 minimal Installation.

Abhängigkeiten und Buildtools installieren

cd /usr/local/src/
apt-get source netatalk
apt-get build-dep netatalk
apt-get install libssl-dev libcrack2-dev build-essential devscripts

Paketbau

cd netatalk-2.0.3
dch -v 2.0.5 "Switch to 2.0.5 release"
cd ../netatalk-2.0.5
sed -i -e 's/^\(DEB_UPSTREAM_TARBALL_MD5\b\)/#\1/' debian/rules
debian/rules get-orig-source
DEB_BUILD_OPTIONS=ssl dpkg-buildpackage -rfakeroot

Wenn der Build Prozess durchläuft, sollten am Ende noch einige Fehler auftauchen, das das neue Paket nicht signiert werden konnte. Das ist volkommen ok und kann getrost ignoriert werden.

Installieren

dpkg -i /usr/local/src/netatalk_2.0.5*.deb
aptitude hold netatalk

Der Name des fertigen debs ändert sich je nach Architektur die man einsetzt und um ein versehentliches überschreiben bei einem Update zu verhindern sollte das Paket auch gleich auf Hold gesetzt werden.

Konfiguration, Bonjour & Co.

apt-get install avahi-daemon libnss-mdns

Jetzt müssen noch einige Config Dateien angepasst werden:
/etc/default/netatalk
Das neu starten aller Dienste von netatalk kann sehr lange dauern, am besten man deaktiviert alles was man nicht braucht.

ATALKD_RUN=yes
PAPD_RUN=no
CNID_METAD_RUN=yes
AFPD_RUN=yes
TIMELORD_RUN=no
A2BOOT_RUN=no

/etc/netatalk/AppleVolumes.default
Am Ende der Datei muss eine Zeile eingefügt werden um die neue Freigabe zu definieren.
/var/backups/timemachine/$u TimeMachine allow:user1,user2 cnidscheme:cdb options:tm,usedots,upriv

Dadurch wird das Verzeichnis "/var/backups/timemachine/" unter dem Namen "TimeMachine" zur verfügung gestellt. Das "$u" im Pfad wird durch den Benutzernamen ersetzt, so kann man verhindern das die Kollegen untereinander in ihren Backups rum stöbern. Netatalk erstellt das Verzeichnis leider nicht automatisch, es ihn stört aber auch nicht wenn es erstmal nicht existiert. Bevor man Backups erstellen kann, muss man das Verzeichnis aber mit mkdir von Hand anlegen. Der eigentliche TimeMachine Support in netatalk wird übrigens durch das "tm" bei options aktiviert.

/etc/avahi/services/afpd.service
Der Inhalt der Datei muss komplett ersetzt werden.

<?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>_adisk._tcp</type>
    <port>9</port>
    <txt-record>sys=waMA=00:11:22:33:44:55</txt-record>
    <txt-record>dk2=adVF=0x83,adVN=TimeMachine,adVU=956cf67c-f448-453f-9dec-dd17855ee076</txt-record>
  </service>
  <service>
    <type>_device-info._tcp</type>
    <port>0</port>
    <txt-record>model=RackMac</txt-record>
  </service>
</service-group>

Der Teil mit "00:11:22:33:44:55" muss durch die MAC Adresse des Debian Servers ersetzt werden und mit "model=RackMac" kann man beeinflussen wie die selbstgebaute Time Capsule im Finder angezeit wird, hier ein 19'' Server. Mögliche Modelle sind übrigens: PowerBook, PowerMac, Macmini, iMac, MacBook, MacBookPro, MacBookAir, MacPro, AppleTV1,1, AirPort. Die Information was möglich ist verteckt sich übrigens in einer plist: /System/Library/CoreServices/CoreTypes.bundle/Contents/Info.plist

Aktivieren

Die Linux Seite

Der letzte Schritt auf Linux Seite ist das neustarten der Dienste

/etc/init.d/netatalk restart
/etc/init.d/avahi-daemon restart

Die Mac Seite

Als erstes muss sichergestellt werden das der Computer einen richtigen Namen hat, sonst gibt es Probleme beim einrichten der TimeMachine. Unter Systemeinstellungen, Freigaben, muss bei "Gerätenamen" irgendetwas drin stehen, am besten etwas kurzes ohne Sonderzeichen.

Wenn der Computer einen Namen hat kann man die TimeMachine aktivieren, ganz normal über Systemeinstellungen, Time Machine und über "Volumen auswählen ..." sollte unsere Time Capsule gefunden werden.

Probleme beim einrichten des Backup Laufwerks

Beim einrichten von Time Machine wird auf dem Ziel-Lauferk ein Sparsebundle erzeugt, es sieht so aus als ob OS X damit ein Problem hat wenn das Ziel mehrere Terra Byte gross ist da es hier immer mit einem Fehler abbricht. Der Fehler lässt sich umgehen wenn man das Sparsebundle von Hand anlegt und in das Backup Share kopiert, der Trick dabei ist das das Bundle den richtigen Namen bekommt. Im Namen des Bundles müssen der Name des Mac und die MAC Adresse des Kabel Netzwerks drin stehen.

In einem Terminal Fenster auf dem Mac

hdiutil create -library SPUD -megabytes 51200 -fs HFS+J -type SPARSEBUNDLE -volname "$(hostname -s)_$(ifconfig en0 ether |grep ether | cut -c 8- |sed -e 's/[:| |\t]//g').sparsebundle" "$(hostname -s)_$(ifconfig en0 ether |grep ether | cut -c 8- |sed -e 's/[:| |\t]//g').sparsebundle"

Mit diesem Einzeiler wird auf dem Desktop ein 50GB Sparcebundle erzeugt das bereits den richtigen Namen hat. Sobald das Bundle auf den Server kopiert wurde, lässt sich die Time Machine einrichten und zukünftigen Backups steht nichtmehr im Wege.

Quellen

Neben den Projektseiten von netatalk, war vor allem dieser Blog Artikel eine gute Inspiration