Настраиваем Debian/Ubuntu как Mac хранилище

Уже давно являюсь пользователем продукции Apple. Старенький макбук полностью справляется с теми задачами, что на него возлагаются. В основном конечно развлекательные. Но в последнее время стало не хватать места на 40 гиговом жестком диске. И вот наконец у меня зачесались руки настроить свой домашний сервер, как хранилище. Некоторое время работал по ftp, но это было не удобно. Было принято решение настроить наконец Appletalk, не зря же он есть и заодно приручить к нему TimeMachine:-)

Настройка всего этого можно разделить на несколько этапов:

  1. Установка Appletalk
  2. Настройка AppleTalk
  3. Установка Avahi
  4. Настройка Avahi
  5. Настройка TimeMachine

Ну что ж, приступим.

1. Установка AppleTalk

Пакет Netatalk — opensource реализация сервиса Appletalk (AFP сервер). Mac OS X требует поддержки шифрования, но стандартная сборка этого пакета не поддерживает шифрование. Поэтому необходимо пересобрать этот пакет.

Тут можно скачать уже правильно собранный пакет, и перейти к пункту 2.

Но лучше собрать самому выполнив эти команды:

Скачиваем сырцы:

$ cd /tmp
$ sudo apt-get build-dep netatalk
$ sudo apt-get source netatalk
$ cd netatalk-2*

Устанавливаем то, что нужно для сборки:

$ sudo apt-get install cracklib2-dev fakeroot libssl-dev

Собираем:

$ sudo DEB_BUILD_OPTIONS=ssl
$ sudo export DEB_BUILD_OPTIONS
$ sudo dpkg-buildpackage -rfakeroot

И, если все в порядке, устанавливаем:

$ sudo dpkg -i ../netatalk_2*.deb

Все не так страшно как казалось. Чтобы при обновлении системы правильный пакет не заменился более новым но не правильным ставим блок на пакет netatalk:

echo "netatalk hold" | sudo dpkg --set-selections

Всё, теперь перейдем к настройке.

2. Настройка AppleTalk

Сперва нужно отключить те сервисы, которые для решения текущей задачи не нужны. Приведем секцию в фаиле /etc/default/netatalk до такого вида:

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

Теперь пришло время главного конфигурационного файла /etc/netatalk/afpd.conf и внизу добавим эту строчку:

--transall -uamlist uams_randnum.so,uams_dhx2.so,uams_guest.so -nosavepassword -advertise_ssh

Теперь перейдем к настройке ресурсов, которые будут рассшарены по afp. Это настраивается в файле /etc/netatalk/AppleVolumes.default

Строка:

/home/torrent/downloads "Torrent-Downloads" allow:username,nobody rolist:nobody cnidscheme:cdb options:usedots

рассшаривает папку /home/torrent/downloads под именем Torrent-Downloads для пользователя username и для гостевого пользователя. Причем Гость может только читать из этой папки.

Строка:

/home/username/TimeMachine "TimeMachine" allow:username1,username2 cnidscheme:cdb options:usedots,upriv

рассшаривает ресурс для TimeMachine.

После редактирования конфигов, стоит перезапустить netatalk:

$ sudo /etc/init.d/netatalk restart

3. Установка Avahi

После проделанных выше шагов можно, с помощью Finder, зайти на рассшаренные ресурсы. Но каждый раз использовать для этого меню не удобно, нужно сделать так, чтобы сервер afp был виден в меню ресурсов Finder.

Для этого нам и понадобился Avahi. Avahi — демон предоставляющий в сети сервисы на подобии Bonjour.

Установка avahi проста:

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

В файле /etc/nsswitch.conf в строке начиающийся на hosts нужно добавить в конце mdns, вот так:

hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4 mdns

4. Настройка Avahi

Создадим фаил /etc/avahi/services/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>

И перезапустим avahi:

$ sudo /etc/init.d/avahi-daemon restart

Теперь хранилище должно было появится в левом сайдбаре Finder.

5. Настройка TimeMachine

В консоли мака нужно выполнить команду:

$ defaults write com.apple.systempreferences TMShowUnsupportedNetworkVolumes 1

Вот и все.