Le chalenge est donc le suivant : utiliser le protocole AFP (Apple Filing Protocol) sur Ubuntu 10.04.

Pour cela il faut installer le package netatalk.
Malheureusement, celui-ci n'intègre pas par défaut le support SSL nécessaire à l'authentification à partir d'un Mac.
Pas grave, nous allons le recompiler !

Compilation de Netatalk

Netatalk

sudo apt-get build-dep netatalk
sudo apt-get install cracklib2-dev fakeroot libssl-dev
sudo apt-get source netatalk
cd netatalk-2.0.5
sudo DEB_BUILD_OPTIONS=ssl dpkg-buildpackage -rfakeroot

Normalement, ça devrait suffire à produire le .deb qui va bien avec SSL, mais chez moi ça n'a pas fonctionné. L'authentification échouait à chaque fois pour une problème de modules uam non chargés.
En fouillant dans le fichier de compilation, j'ai trouvé les lignes de test à modifier afin de forcer la compilation avec SSL/UAM. J'ai commenté les lignes qui empêche la compilation UAM :

debian/rules (ligne 96)

# libgcrypt is GPL-compatible, but openssl supports randnum auth
#ifneq (,$(findstring openssl,$(DEB_BUILD_OPTIONS)))
DEB_CONFIGURE_EXTRA_FLAGS += with-ssl-dir enable-pgp-uam
uamlist = uams_dhx2.so,uams_clrtxt.so,uams_dhx.so,uams_randnum.so
#else
#DEB_CONFIGURE_EXTRA_FLAGS += --without-ssl-dir
#uamlist = uams_dhx2.so,uams_clrtxt.so
#endif

Ensuite, on recommence :

sudo DEB_BUILD_OPTIONS=ssl dpkg-buildpackage -rfakeroot

Et on installe le package situé dans le répertoire au dessus :

sudo dpkg -i netatalk_2.0.5-3_i386.deb

Configuration de Netatalk

Dans le fichier /etc/default/netatalk on indique les services souhaités :

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

Dans le fichier /etc/netatalk/afpd.conf on remplace la dernière ligne par :

- -transall -uamlist uams_randnum.so,uams_dhx.so -nosavepassword -advertise_ssh

Configuration des partages

Dans le fichier /etc/netatalk/AppleVolumes.default on modifie les partages configurés par défaut par :

/home/<user> "$u" allow:<user> cnidscheme:cdb
/volume/vers/repertoire/TimeMachine TimeMachine allow:<user> cnidscheme:cdb options:usedots,upriv

Remplacer <user> par le login du système Linux (si possible le même que celui du Mac).
La première ligne est pour utiliser le répertoire Home de l'utilisateur du mac sur le serveur Linux (si celui-ci est existant).
La seconde ligne est pour annoncer un disque pour TimeMachine.

On peut lancer le service Netatalk :

sudo service netatalk start

Annoncer les services sur le réseau

Avahi

Histoire de faire ça à la mode Apple, on va configurer avahi (implémentation libre de ZeroConf) qui va annoncer sur le réseau local les services AFP.

Création d'un fichier /etc/avahi/services/afpd.service contenant :

<?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>

On peut relancer le service :

service avahi-daemon restart

C'est terminé pour Linux, ouf !

Côté Mac

Normalement, sur le Mac, un volume réseau a été détecté dans le Finder et il suffit de s'authentifier pour monter le disque réseau.
Dans la configuration de TimeMachine, le disque réseau annoncé est détecté.

Ubuntu sert maintenant de disque réseau pour TimeMachine !

Il me reste à trouver un équivalent pour Ubuntu ce coup-ci (Back In Time, Flyback, ...)

Lien

Un grand merci à l'auteur de ce tuto : http://www.kremalicious.com/2008/06/ubuntu-as-mac-file-server-and-time-machine-volume/