Project “My Time Capsule” – or – How to build a Time Machine and workgroup server for OS X Lion

In the web you find a lot of information on how to build a server for Apple Time Machine or little work-groups with Mac clients. Some ideas are build upon SMB as file server protocol others use Apple Filing Protocol (AFP). Some guides are very good, but rather old (like this one) and will not work with OS X Lion. Another guide gives all the information that is needed to build a server for Time Machine, but is missing the basic for information on how to install AFP.

With this article i want to give you a complete guide for installing Netatalk (AFP) and building an own Time Machine backup server, using Ubuntu Server 10.4 LTS. …and yes, it will be fully compatible with OS X Lion and behaves like a Time Capsule from Apple! All modifications are done on the Linux machine. Nothing has to be changed on the Mac.

A few days ago the open source community silently released the Netatalk Package 2.2.0 with support for AFP 3.0, which is necessary for OS X Lion and Time Machine.

Warning: I use Ubuntu Server 10.04 LTS for this guide and haven‘t tried it with other versions or Linux distributions. It is wise to make a complete backup of the Linux server machine before you go on. I’m not responsible for any form of damage or data loss.

Let‘s start:
At first ssh to your ubuntu server machine and login as root.

Hint: If you are not logged in as root-user, you have to „sudo“ every shell command in this article!

Now make sure that your machine is up-to-date with:
apt-get update
apt-get upgrade

Netatalk must not be installed! If you are not sure, remove it with:
apt-get remove netatalk

Next step is to install all necessary packages to build netatalk from the sources:
apt-get build-dep netatalk
apt-get install cracklib2-dev fakeroot libssl-dev

Now download and extract netatalk 2.2.0 from sourceforge:

wget http://sourceforge.net/projects/netatalk/files/netatalk/2.2/netatalk-2.2.0.tar.bz2
tar xfvj netatalk-2.2.0.tar.bz2
cd netatalk-2.2.0

Configure, compile and install the extracted sources:
./configure –enable-debian –with-cnid-cdb-backend –disable-cups

Hint: I disabled cups, because i don‘t need printer support.

make
make install

The make command will compile the sources and takes a while. Both commands dumping a lot of information but should complete without errors.

Now it‘s time to configure netatalk:
First edit /etc/default/netatalk:

Search for the following lines in the configuration file and make sure they are switched on / off like this:
ATALKD_RUN=no
PAPD_RUN=no
CNID_METAD_RUN=yes
AFPD_RUN=yes
TIMELORD_RUN=no
A2BOOT_RUN=no

This will switch on Apple Filing Protocol (AFP) and meta information database.
Old AppleTalk, Printer server, Time synchronization and boot support are not needed.

Next edit /usr/local/etc/netatalk/afpd.conf
Go to the last line and make sure it looks like this:

- -tcp -noddp -uamlist uams_dhx.so,uams_dhx2.so -nosavepassword

This configures the behavior of the virtual file server and is explained in the afpd.conf man pages.
After that we need to edit the file where all shared volumes are configured: /usr/local/etc/netatalk/AppleVolumes.default

Search for ~ in the file and remove it, otherwise all Linux home folders will be accessible as shared volumes. Add a share for TimeMachine and configure the maximum size of the virtual volume, like this:

/backup/TimeMachine TimeMachine allow:userXY cnidscheme:cdb options:usedots,upriv,tm volsizelimit:200000

Description of parameters:
/backup/TimeMachine – location for TimeMachine backups on the Linux machine
TimeMachine – Name of the network share
allow:userXY – allowed user (read/write access) – can be a comma separated list of users or groups – group names have a @ as prefix (like this: @users)
cnidscheme:cdb – type of database for meta information
options:usedots,upriv,tm - This share supports .Files/.Folders (usedots) with special privileges (upriv) and is time machine compatible ™
volsizelimit:200000 – Is the maximum size of the virtual volume (in this example: 200 GB)

Please read the man pages for all options, or search for AppleVolumes.default in the web.

Here is a another example for a simple network share:

/data/music MusicFiles allow:@users cnidbscheme:cdb options:usedots

This allows all people in the group „users“ read/write access to a share named „MusicFiles“.

Now it‘s time to restart netatalk:
/etc/init.d/netatalk restart

Actually you won‘t see your shares on the Mac, because there is no service on the Linux machine that publishes them. We need to install the Avahi-daemon first:

apt-get install avahi-daemon
apt-get install libnss-mdns

Let‘s configure avahi:
First edit /etc/nsswitch.conf

Add the word mdns to the following line:

hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4

Last step is to create service configuration file for publishing.
Create a new file /etc/avahi/services/afpd.service and copy/paste the following XML:

<?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=AirPort</txt-record>
<txt-record>sys=waMA=«Server MAC Address»,adVF=0×100</txt-record>
<txt-record>dk0=adVF=0×81,adVN=TimeMachine</txt-record>
</service>
</service-group>

A few modifications have to be made, before you save and close the new file.

In the field „model=AirPort“ you can choose between PowerBook, PowerMac, Macmini, iMac, MacBook, MacBookPro, MacBookAir, MacPro, AppleTV1,1, AirPort, Xserve. This will be the type of icon you will see in Finder on the Mac.

Replace «Server MAC Address» with the mac address of your Linux server in the field sys=waMA=«Server MAC Address»,adVF=0×100.
(You can determine it with ifconfig eth0 in the terminal)

The next line needs a bit more explanation:
dk0=adVF=0×81,adVN=TimeMachine

dk0= is the volume number. You can create more than one backup volume. Just create more txt-record entries in the file with dk1=… dk2=… and so on.
adVF=0×81 is the AirDisk flag, which tells OS X that this volume has support for TimeMachine.
adVN=TimeMachine is the name of the network share we configured in AppleVolumes.default

Finally we are ready to restart avahi:
/etc/init.d/avahi-daemon restart

Hint: Avahi daemon automatically checks and reloads the service configuration file if something has changed

After a few seconds the icon of our new server should appear in Finder. Now configure Time Machine on the Mac. In the list of available volumes you should see the record „TimeMachine on serverXY“.

Initial backup will take very long. (In my case 9 hours!) – This is the same behavior as on a real Time Capsule.

What i forgot:
When you click the server icon in finder, all your configured shares (from AppleVolume.default) will appear after a login with your Linux username and password.

I hope this guide will help you setting up a Linux based Time Machine and workgroup server.

Feel free to comment or share this article!

Important Information for OS X Lion 10.7.2 users:

With 10.7.2 you will get the following error, if you try to access your network shares:
Something wrong with the volume’s CNID DB, using temporary CNID DB instead. Check server messages for details!

Please install the Berkley DB on your Ubuntu Server with:
apt-get install libdb4.6

After that edit the file /usr/local/etc/netatalk/AppleVolumes.default
Replace cnidbscheme:cdb with cnidbscheme:dbd.

Restart netatalk with /etc/init.d/netatalk restart

Ubuntu Server 10.04 LTS friert ein

Hallo,

Göris blog als auch der Blog von Lara und Emilia waren in letzter Zeit an mehreren Tagen nicht erreichbar. Grund dafür war ein ständig “einfrierender” Server. Nein, nicht wegen der niedrigen Temperaturen, sondern weil Ubuntu 10.04 seit dem letzten Kernel Update anscheinend ein Eigenleben führt.

Der Server ist ein DELL Laptop (Inspiron 640m). Seit einem der letzten Updates (vermutlich das Update auf Kernel 2.6.32-26-generic-pae) friert das System scheinbar willkürlich ein und nur ein kompletter Kaltstart hilft aus dieser Situation. Viele Leute haben das Verhalten bereits im Internet ausführlich geschildert und es gibt sogar einen offiziellen Bug-Report. Bisher aber ohne Lösung. Es ist nur äußerst schwer dem Problem auf die Spur zu kommen, da wirklich keines der Logs in /var/logs Indizien zeigt. Das System bleibt einfach zu einem Zeitpunkt X stehen. Dies kann nach wenigen Stunden oder auch erst nach 1-2 Tagen passieren.

Nach einigen Analysen und Versuchen konnte ich ACPI als Verdächtigen eingrenzen und einen Workaround erarbeiten. Dies hat mich motiviert die Lösung hier im Blog zu veröffentlichen.

Das System verwendet seit dem Upgrade auf Server 10.04 das ACPI vollständig. Daher habe ich es beim Hochfahren über das GRUB-Bootmenü (SHIFT gedrückt halten beim Booten) mit der der Kernel-Option (acpi=off) abgeschaltet. Das System lief danach mehrere Tage stabil. Jedoch nur mit einem Prozessorkern und ohne CPU Throttling.

Auf das Power Management und den zweiten Prozessorkern wollte ich jedoch nicht verzichten. Nach dem Studium einiger Blogs und Foren, sowie der verschiedenen ACPI-Optionen konnte ich das Problem weiter verdichten, auf das ACPI gesteuerte IRQ-Routing. Die Optionen PNPACPI=OFF und ACPI=NOIRQ stellen die richtige Kombination an Kernel-Optionen dar, um das IRQ-Routing über ACPI zu deaktivieren. Das restliche ACPI funktioniert wie erwartet und das System läuft seit über einer Woche ohne Neustart stabil.

Wer GRUB2 verwendet kann unter /etc/grub.d in der Datei 40_custom einen eigenen Bootmenü-Eintrag anlegen, der die beiden Kernel-Optionen beinhaltet. Wie so ein Eintrag genau aussehen muss, kann man sich in /boot/grub/grub.cfg ansehen. Danach unter /etc/default/grub den GRUB_DEFAULT Eintrag auf den neu angelegten Bootmenü-Eintrag zeigen lassen. Zum Abschluss noch über “update-grub” das Bootmenü aktualisieren lassen.

Fertig.

Lasst mich wissen, ob es bei Euch die Probleme unter Ubuntu Server 10.04 LTS gelöst hat.

Vertragsverlängerung beim Mobilfunkanbieter meines Vertrauens (..Fortsetzung)

Puuh.. Was für ein Dezember!

Jedenfalls hat sich das Problem mit dem falschen Vertrag nach mehreren sehr ausführlichen Telefonaten aufgeklärt. Normalerweise hätte ich das bereits erhaltene Gerät zurück senden und die Änderung des Vertrages rückgängig machen müssen. Sozusagen ein vollständiger Neustart. Durch entsprechende Hartnäckigkeit und dank (einiger) wirklich netter Menschen beim Kundensupport, war es auch möglich meine Bestandsdaten zu ändern und so den Prozess abzukürzen.
Inzwischen konnte ich das neue Mobiltelefon in Betrieb nehmen.

The (happy) end!

Vertragsverlängerung beim Mobilfunkanbieter meines Vertrauens

Hallo liebe Leser,

hier mal ein Beitrag in eigener Sache.
Nachdem ich seit vielen Jahren meinem Mobilfunkanbieter treu geblieben bin, nicht zuletzt weil ich als Mitarbeiter des Konzerns sicherlich einige Vorzüge genieße, musste ich feststellen, dass einfache Sachen manchmal richtig kompliziert werden können.

Nach über 2 Jahren habe bzw. hatte ich aktuell die Möglichkeit meinen bestehenden Mobilfunkvertrag zu verlängern und dabei ein vergünstigtes Mobiltelefon zu erhalten.
Bereits mehrere Monate gab es Lieferschwierigkeiten mit dem Gerät, aber das ist nichts Neues. Dann wartet man diese Monate halt ab.
Als das Gerät dann verfügbar war, gab es noch keine konkreten Angebote für Mitarbeiter bzw. erst einmal sollten alle anderen (Neu-)Kunden bevorzugt werden. Auch dies kann man verstehen und übt sich weiterhin in Geduld.
Jetzt beschleunigt sich der Prozess aber rapide.

Ein gestern (01. Dez.) getätigter Anruf bei der Hotline bestätigte, dass es jetzt auch für Mitarbeiter die Möglichkeit gäbe, dass Mobiltelefon zu bestellen. Da eine Vertragsverlängerung aber (noch) nicht über die Webseite des Anbieters möglich ist, könne ich das gleich jetzt am Telefon erledigen. Gesagt getan.
Man teilte mir aber noch mit, dass es bei der Variante des Mobiltelefons mit 16 GB Speicher zur Zeit Lieferengpässe gebe. Die Bestellung für die 32 GB Version kann er (der Mensch an der Hotline) zwar annehmen, aber es gäbe noch Probleme dies in das Bestellsystem zu übernehmen. Aussage: “Es könne ein paar Tage dauern. Er nimmt meinem Wunsch auf und legt ihn sich auf -Wiedervorlage-”
Ok.. Kein Problem, wenn’s denn klappt.
Ich habe dann noch eindeutig betont, dass es für mich wichtig sei, meinen aktuellen Vertrag unter existierenden Vertragsbedingungen beizubehalten. Ich wünsche KEINEN Wechsel des Vertrages. Lediglich eine VERLÄNGERUNG. Er meinte: O.k. Vertrag beibehalten.
(Grund: Mein bisheriger Vertrag ist zwar 3 € teurer als die aktuelle Variante, aber ich habe dadurch eine Menge Freiminuten in ALLE Netze und nicht nur in das des Mobilfunkanbieters.)

Völlig überraschend bekam ich heute (02. Dez.) eine SMS, dass meine Bestellung bereits per DHL unterwegs sei und ich die Sendung mit dem Code XY verfolgen könnte.
Na, das klappte ja mit der “Wiedervorlage”.
Aber aus irgendeinem Bauchgefühl heraus loggte ich mich wenige Minuten später in das Web-Portal des Mobilfunkanbieters ein. Ich weiß nicht warum, vielleicht um einfach nur zu schauen, ob hier das neue Gerät bereits aufgeführt ist.
Was musste ich da sehen – natürlich – ich habe jetzt einen Vertrag unter den neuen Vertragsbedingungen.
Keine 30 Sekunden später hatte ich gleich wieder die Hotline am Telefon (Fast ohne lästige Wartemelodie!).
Er (der man von der Kundenhotline) hat das Problem verstanden und wollte den Vertrag anpassen. Meinte dann noch: “O.k. Alten Vertrag/Tarif XY hat er ausgewählt. Welches Gerät soll es denn sein 16 oder 32 GB?”
Ich meinte: “Naja, ich habe bereits eine Versandbestätigung für das Mobiltelefon per SMS erhalten.”
Kurzes Schweigen, dann ein langer Seufzer am anderen Ende der Leitung. Hotline: “Dann müssen sie die Annahme des Paketes von DHL verweigern und im Nachhinein noch einmal Kontakt mit der Hotline aufnehmen und das Problem erneut schildern.”
Aber ich glaube nicht nur er (der Mitarbeiter an der Hotline), sondern auch ich, merkten noch während er den Satz sprach, dass dieses Vorgehen den gesamten Prozess (oder nennen wir es lieber “die Prozesskette”) nur weiter verkomplizieren würde. Zumal ich dann in ca. 4-5 Tagen wieder jemand anderen von der Hotline am Telefon haben werde, dem die Historie dieses Falls noch nicht bewusst ist. Ich hatte schon eine wage Vorahnung, dass ich mir dann Aussagen anhören müsste, wie zum Beispiel: “Den alten Tarif/Vertrag können wir nicht mehr buchen, weil er nicht in das System rein geht.” oder “Der neue Vertrag läuft ja schon seit 4 Tagen, dass können wir nicht mehr ändern.”
Wir haben den Sachverhalt dann noch einmal ruhig gemeinsam aufgenommen und er hat das an eine interne Eskalationsstelle weiter gegeben. “Man habe ja jetzt auch meine Rückrufnummer.”, meinte der sehr freundliche Mann.
Bei diesem letzten Satz musste ich etwas schmunzeln, aber gleichzeitig beschlich mich auch ein Gefühl der Angst, wenn ein Mobilfunkanbieter so etwas sagt.

Fortsetzung folgt….

Burn-out in der IT-Branche

In den heise online news, gab es vor einigen Tagen einen Artikel zum Thema Burn-out in der IT-Branche. Folgende Zeilen möchte ich hierzu mal kommentieren:

1. “Fortschreitende Standardisierung von Produkten und Prozesse der Softwareentwicklung führen zu einem schleichenden Verlust des Expertenstatus.”…

Definitiv nachvollziehbare Aussage. Die fortschreitende Ahnungslosigkeit erlebe ich jeden Tag, quasi -live-. :)

2. “Darüber hinaus prägen zunehmende Leistungsverdichtung, die Paradoxien moderner Managementkonzepte, eine Veränderung der betrieblichen Sozialordnung und eine generelle Zunahme von Unsicherheiten den Arbeitsalltag.”

Willkommen im “Enterprise Software Business”, welches durch einen Zickzack-Kurs des Managements erfolgreich kaputt gemacht wird.

3. “Zudem macht die permanente Verfügbarkeitserwartung (BlackBerry-Kultur) die Grenze zu Freizeit und Privatleben weithin durchlässig.”

Auch das trifft (leider) zu, aber wäre eigentlich nicht nötig. Bedingt wird die ständige Erreichbarkeit (aus eigener Erfahrung), wegen der fortschreitenden Ahnungslosigkeit (siehe Punkt 1)

…Ein Teufelskreis… ;)

Schöne Arbeitswoche und viel Spaß im Hamsterrad

Umfrage zu Windows Phone 7

Aus allgemeinem Interesse habe ich eine anonyme Umfrage zur Akzeptanz von Windows Phone 7 eingestellt. Es sind lediglich 5 Fragen, wobei ihr Euch zuvor eine Videodemonstration anschauen solltet.

Alles weitere findet Ihr unter: https://spreadsheets.google.com/viewform?formkey=dE5ITHl1MEhNRFM1dHlyWW5uc2tpd0E6MQ

P.S.: Die Ergebnisse werde ich dann hier veröffentlichen!