MacにはTime Macmachineという強力なバックアップ機能がありますが、バックアップ先として指定できるのは純正のTime CapsuleやBuffaloなどの一部のNASのみです。Time Capsuleを使うのが手っ取り早いとは思うのですが、無線機能とかいらないし、2TBで26,000円とちょっとお高い。なにより、せっかくPogoplugを運用中なのだから、これを利用したい。ということで、PogoplugをTime Machineのバックアップ先として利用できるように設定してみました。
PogoplugをTime Machineのバックアップ先にするためにPogoplugの使い勝手が失われるのでは意味がありませんが、今回は
- いまままで通りPogoPlugを使用可能
- USB接続のHDDを追加せず、これまでのドライブを継続利用
- FAT32/NTFSからフォーマットの変更不要
という条件を満たしつつTime Capsule化ができました。
なお、以下の作業を行うまえに、PogoPlugにOpenPogoを導入していることが前提です。
それと、今回はネットであちこち調べつつ作業しましたが、主に参考にさせて頂いたのは、下記の3つの記事です。
- OSX Lion + Pogoplug でTimeMachineに挑戦(EncloCircle)
- Turning pogoplug into a TimeMachine(SEONGBAE’S RANDOM THOUGHTS ON …NEARLY ANYTHING…)
- MacのTime Machineのバックアップ先にBuffaloのLinkstation(NAS)を設定する方法(sorarium)
netatalkのインストール
Mac OSX LionでTime Machineを使用するにはAFP3.0に対応したnetatalk2.2が必要になるので、Pogoplugにこれをインストールします。リポジトリからもnetatalk 2.2.0-2がインストールできるのですが、これではTime Machineから利用できなかったので、ソースからビルドします。
まず、Pogoplug上でビルドを行うのに必要なパッケージをipkgでインストールします。gcc、autoconf、automake、pkgconf、dbus、avahi、openssl、avahi、libgcrypt、libdb52あたりが必要です。すべて
# ipkg install 〜
でインストールできます。
netatalkのソースは、こちらからダウンロードしてきます。tar.gz形式のものをダウンロードするようにします。ダウンロードしたものは、/tmp/.cemnt/mnt_sda1/あたり(OpenPogoを導入したUSBメモリ上)にコピー、展開します。
# tar zxvf jrmithdobbs-netatalk-2-2-0-p6-6e40f7d.tar.gz
続いてソースにパッチを適用します。といっても手作業ですけど。Turning pogoplug into a TimeMachineに記載の通りの内容です。
Index: afp_options.c =================================================================== RCS file: /cvsroot/netatalk/netatalk/etc/afpd/afp_options.c,v retrieving revision 1.45 diff -r1.45 afp_options.c 212a213,216 > if (strstr(buf, " -noallowroot")) > options->flags &= ~OPTION_ALLOW_ROOT; > if (strstr(buf, " -allowroot")) > options->flags |= OPTION_ALLOW_ROOT; Index: auth.c =================================================================== RCS file: /cvsroot/netatalk/netatalk/etc/afpd/auth.c,v retrieving revision 1.63 diff -r1.63 auth.c 255c255,256 < if ( pwd->pw_uid == 0 ) { /* don't allow root login */ --- > if (!(obj->options.flags & OPTION_ALLOW_ROOT) > && pwd->pw_uid == 0 ) { /* don't allow root login */ Index: globals.h =================================================================== RCS file: /cvsroot/netatalk/netatalk/etc/afpd/globals.h,v retrieving revision 1.26 diff -r1.26 globals.h 39a40 > #define OPTION_ALLOW_ROOT (1 << 8) #注 (1 << 10)に修正しました cvs diff: Diffing nls
最後のglobals.hはnetatalk/etc/afpdではなく、netatalk/include/atalkにありました。また、「#define OPTION_ALLOW_ROOT (1 << 8)」は、「#define OPTION_ALLOW_ROOT (1 << 10)」に修正しました。
このあとはconfigure、make、make installといういつもの流れです。configureのオプションは完全に手探りですが、以下の内容で動いています。
# mount -o remount,exec /tmp/.cemnt/mnt_sda1 # cd jrmithdobbs-netatalk-2-2-0-p6-6e40f7d # CFLAGS="-O -DSHADOWPW" CPPFLAGS="-I/opt/include" LDFLAGS="-L/opt/lib -Wl,-rpath,/opt/lib" ./configure --prefix=/opt --with-bdb=/opt/ --with-ldap=no --enable-afp3 # make # make install
いろいろ設定
netatalkのインストールが終わったらあとは設定です。
/etc/hostsの設定
127.0.0.1 localhost.localdomain localhost 127.0.0.1 Pogoplug
/opt/etc/avahi/avahi-daemon.confの修正
[server] host-name=pogomachine
/opt/etc/netatalk/afpd.confの修正
末尾に下記を追加します。
- -transall -uamlist uams_dhx2.so -nosavepassword -allowroot -setuplog "default LOG_NOTE /opt/var/log/netatalk.log"
setuplog以下はなくても動きますが、最初はエラーの確認のためにあったほうがいいと思います。
/opt/etc/netatalk/AppleVolumes.defaultの修正
末尾の「〜」をコメントアウトして以下のように修正。
# The "~" below indicates that Home directories are visible by default. # If you do not wish to have people accessing their Home directories, # please put a pound sign in front of the tilde or delete it. #~ /tmp/.cemnt/mnt_sdb1/TimeCapsule "TimeCapsule" allow:root rwlist:root cnidscheme:dbd options:tm
「/tmp/.cemnt/mnt_sdb1/TimeCapsule」はPogoPlugのドライブ上のディレクトリで、ここにバックアップアップファイルが生成されることになります。適当な名前で作っておきます。
avahiユーザの作成
# addgroup avahi # adduser avahi -G avahi
afpd用ロックファイルディレクトリの作成
# mkdir -p /var/lock
サービスの起動
やっとサービスの起動です。下記のように順番に起動します。
# /opt/sbin/avahi-daemon -D # /opt/sbin/avahi-dnsconfd -D # /opt/sbin/cnid_metad # /opt/sbin/afpd
ここまでの作業がうまく行っていれば、Time Machineの設定で上記のようにPogoPlugが選択可能になっているはずです。
(2012/3/19 追記)
avahiが起動しない場合には、一度dbusを起動し直す。
# /opt/etc/init.d/S20dbus stop # /opt/etc/init.d/S20dbus start
stopの時、「no such process.」と言われるようなら、下記を実行してから再度dbusを起動する。
rm /opt/var/run/dbus/*
(追記終わり)
ただし、選択はできてもこのままではバックアップに失敗するはずです。なので、引き続き、以下の作業を実施します。
バックアップ用ディスクイメージの作成
ユーティリティからディスクユーティリティを起動し、ディスクイメージを作成します。
最上段の「名前」はMacの「共有名_マックアドレス」とする必要があるようです。例えば、Macの名称が「MyMac」、マックアドレスが「12:34:56:78:9a:bc」であれば、「MyMac_123456789abc」となります。2つめの「名前」は適当でOKです。
「ディスクイメージ」は「スパースバンドル・ディスクイメージ」を選択。「サイズ」使用するPogoPlugのドライブサイズ次第ですが、私は使用しているMacBook Airの約3倍のサイズになる384GBにしてみました。余裕があるなら1TBでも2TBでも構いません。このサイズは、「スパースバンドル・ディスクイメージ」を選択後でないと大きなサイズは選べないので注意が必要です。
出来上がったディスクイメージ(拡張子がsparsebundle)は、AppleVolumes.defaultで指定したディレクトリ(ここではTimeCapsule)に置きます。
完了!
以上の設定で、PogoPlugがTime machineのバックアップ先として使用できるようになりました。バックアップの時間は、初回は4時間程かかりましたが、その後は10分〜15分程度になっています。ほかのディスクと比べたことがないのでわかりませんが、ちょっと遅い気はします。まぁ、いまあるPogoplugを活用できたのでよしとしましょう。
でもお金に余裕があれば純正のTime Capsuleも試してみたいなぁ。