カテゴリ:雑記

PogoPlugをTime Machineのバックアップ先として使えるようにしてみた

𝕏

※記事の内容は執筆時点のものです。記事内のリンクからアフィリエイト報酬を得ることがあります。

timemachintopogo

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つの記事です。

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

ここで設定した名称は、下記の部分に反映します。
avahi-daemon

/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

timemachine

ここまでの作業がうまく行っていれば、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/*

(追記終わり)

ただし、選択はできてもこのままではバックアップに失敗するはずです。なので、引き続き、以下の作業を実施します。

バックアップ用ディスクイメージの作成

ユーティリティからディスクユーティリティを起動し、ディスクイメージを作成します。

disk

最上段の「名前」は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も試してみたいなぁ。