OS X Lion が Time Machine でエラーを出す原因と回避策

OS X Lion の Time Machine が、今まで Snow Leopard ではマウントできていたサーバーのボリュームをマウントできなくてエラーを出してしまう。

この辺の詳しい話はいつもお世話になっているココに詳しく書いてある。


ということで、サーバーに netatalk 2.2.0 をインストールすれば問題は解決するのでインストールしてみた。
基本的にココの手順をそのままにココの設定を踏襲という感じで。

CentOS 6 に netatalk 2.2.0 をインストールする準備

avahi-daemon の確認

[paraches@localhost netatalk]$ yum list installed | grep avahi
avahi.x86_64            0.6.25-8.el6    @anaconda-CentOS-201106060106.x86_64/6.0
avahi-autoipd.x86_64    0.6.25-8.el6    @anaconda-CentOS-201106060106.x86_64/6.0
avahi-devel.x86_64      0.6.25-8.el6    @base                                   
avahi-glib.x86_64       0.6.25-8.el6    @anaconda-CentOS-201106060106.x86_64/6.0
avahi-glib-devel.x86_64 0.6.25-8.el6    @base                                   
avahi-libs.i686         0.6.25-8.el6    @base                                   
avahi-libs.x86_64       0.6.25-8.el6    @anaconda-CentOS-201106060106.x86_64/6.0
avahi-ui.x86_64         0.6.25-8.el6    @anaconda-CentOS-201106060106.x86_64/6.0
avahi-ui-devel.x86_64   0.6.25-8.el6    @base                                   
[paraches@localhost netatalk]$ 

devel なパッケージも入ってないと、netatalk のビルドで Zeroconf support が no になっちゃうので注意。


openssl の確認

[paraches@localhost netatalk]$ yum list installed | grep openssl
openssl.x86_64          1.0.0-4.el6_0.2 @updates                                
openssl-devel.x86_64    1.0.0-4.el6_0.2 @updates                                
[paraches@localhost ~]$ 


libgcrypt の確認

[paraches@localhost netatalk]$ yum list installed | grep libgcrypt
libgcrypt.i686          1.4.5-3.el6     @base                                   
libgcrypt.x86_64        1.4.5-3.el6     @anaconda-CentOS-201106060106.x86_64/6.0
libgcrypt-devel.x86_64  1.4.5-3.el6     @anaconda-CentOS-201106060106.x86_64/6.0


Berkley DB をビルドしてインストール
2011/07/31 Update : CentOS 6 ならば元々入っている Berkeley DB で大丈夫だそうです。コメント欄にて教えていただきました。ありがとうございます。)
ココから落としてくる。ダウンロードはユーザー登録とかちょっと面倒。
前回はバージョン 5.1.25 だったのに今回は 5.2.28 になってる…。

[paraches@localhost myTest]$ tar zxvf db-5.2.28.tar.gz 
[paraches@localhost myTest]$ cd db-5.2.28

build_unix に移動して configure, make, make install する。

[paraches@localhost db-5.2.28]$ cd build_unix/
[paraches@localhost build_unix]$ ../dist/configure 
[paraches@localhost build_unix]$ make
[paraches@localhost build_unix]$ sudo make install

というわけで、Berkley DB のインストールも終了。
インストールされた場所は

Libraries have been installed in:
   /usr/local/BerkeleyDB.5.2/lib

CentOS 6 に netatalk 2.2.0 をインストールする

まずはソースファイルをダウンロードして展開。

[paraches@localhost myTest]$ wget http://sourceforge.net/projects/netatalk/files/netatalk/2.2/netatalk-2.2.0.tar.gz
[paraches@localhost myTest]$ tar zxvf netatalk-2.2.0.tar.gz 
[paraches@localhost myTest]$ cd netatalk-2.2.0

Berkeley DB の場所を指定して、CentOS なので --enable-redhat を付けて configure する。

[paraches@localhost netatalk-2.2.0]$ ./configure --enable-redhat --with-bdb=/usr/local/BerkeleyDB.5.2
<省略>
Using libraries:
    LIBS = -lpthread  -L$(top_srcdir)/libatalk
    CFLAGS = -I$(top_srcdir)/include -D_U_="__attribute__((unused))" -g -O2 -I$(top_srcdir)/sys
    SSL:
        LIBS   =  -L/usr/lib64 -lcrypto
        CFLAGS =  -I/usr/include/openssl
    LIBGCRYPT:
        LIBS   = -lgcrypt -ldl -lgpg-error
        CFLAGS = 
    PAM:
        LIBS   =  -lpam
        CFLAGS = 
    WRAP:
        LIBS   = 
        CFLAGS = 
    BDB:
        LIBS   =  -L/usr/local/BerkeleyDB.5.2/lib -ldb-5.2
        CFLAGS =  -I/usr/local/BerkeleyDB.5.2/include/
Configure summary:
    Install style:
         redhat
    AFP:
         AFP 3.x calls activated: 
         Extended Attributes: ad | sys
    CNID:
         backends:  dbd last tdb
    UAMS:
         DHX     (PAM SHADOW)
         DHX2    (PAM SHADOW)
         RANDNUM (PAM SHADOW)
         passwd  (PAM SHADOW)
         guest
    Options:
         DDP (AppleTalk) support: no
         CUPS support:            no
         SLP support:             no
         Zeroconf support:        yes
         tcp wrapper support:     no
         quota support:           no
         admin group support:     yes
         valid shell check:       yes
         cracklib support:        no
         dropbox kludge:          no
         force volume uid/gid:    no
         Apple 2 boot support:    no
         ACL support:             yes
[paraches@localhost netatalk-2.2.0]$ 

make & make install

[paraches@localhost netatalk-2.2.0]$ make
[paraches@localhost netatalk-2.2.0]$ sudo make install

あっさり netatalk 2.2.20 インストール終了。

CentOS 6 で netatalk 2.2.0 の Lion Time Machine 対応設定

設定ファイルの場所確認

[paraches@localhost netatalk-2.2.0]$ cd /usr/local/etc/netatalk/
[paraches@localhost netatalk]$ ls -al
合計 76
drwxr-xr-x. 3 root root  4096  7月 29 14:19 2011 .
drwxr-xr-x. 3 root root  4096  7月 29 14:19 2011 ..
-rw-r--r--. 1 root root  9560  7月 29 14:19 2011 AppleVolumes.default
-rw-r--r--. 1 root root 25650  7月 29 14:19 2011 AppleVolumes.system
-rw-r--r--. 1 root root   371  7月 29 14:19 2011 afp_ldap.conf
-rw-r--r--. 1 root root 16215  7月 29 14:19 2011 afpd.conf
-rw-r--r--. 1 root root  1944  7月 29 14:19 2011 netatalk.conf
drwxr-xr-x. 2 root root  4096  7月 29 14:19 2011 uams
[paraches@localhost netatalk]$ 


afpd.conf の設定
ファイルの一番最後に以下の1行を入れただけ。何かあった時に /var/log/netatalk.log でログがみられる。

- -uamlist uams_dhx2.so -setuplog "default LOG_INFO /var/log/netatalk.log"


AppleVolumes.default の設定
DEFAULT の部分と、ファイルの最後に Time Machine 用のボリュームの設定を加えただけ。

:DEFAULT: options:upriv,usedots dperm:0700 fperm:0600 ea:sys

~/timemachine "Time Machine Vol" options:tm volsizelimit:10240

これで、サーバの中の自分のディレクトリと、自分のディレクトリの中の timemachine というディレクトリが見えるようになる。
自分のディレクトリの中の timemachine ディレクトリは Time Machine 用でサイズは 10G に設定。ボリューム名は「Time Machine Vol」。


netatalk が自動的に起動するようにしてから起動

[paraches@localhost netatalk]$ sudo chkconfig netatalk on
[paraches@localhost netatalk]$ sudo /etc/init.d/netatalk start
Starting Netatalk services: 
  Starting cnid_metad:                                     [  OK  ]
  Starting afpd:                                           [  OK  ]

[paraches@localhost netatalk]$ 

これで netatalk 2.2.0 が起動した!

OS X Lion で Time Machine サーバとして使う

netatalk 2.2.0 になっても Lion から Time Machine でバックアップを取る手順は変わらない。
バックアップ用のディスクをマウントして

2011/07/31 Update : わざわざマウントしなくても選択できるそうです。コメント欄にて教えていただきました。ありがとうございます。)


Time Machine でディスクを選択して


こんだけで OK。


後は時間が来たら Time Machine が勝手に起動して、勝手にディスクをマウントしてバックアップを取ってくれる。


netatalk 2.2 になって AFP3.3 に対応したり Time Machine には必須みたいなので、MacOS X で Time Machine のバックアップ先に netatalk を使っている人はバージョンアップをお勧め!