OSX Lion + Pogoplug でTimeMachineに挑戦

先日Macbook Air(2011)を買って、環境の移行をシコシコやっていたわけですが、どうせならTimeMachineを手元にあるPogoplugから行いたくて、色々と挑戦していた。

成功したのでメモっておく。

なお、面倒なので忙しい方は素直にTimeCapsuleを買おう。

  1. OpenPogo化する

さすがにこれは適当にググッてもらったほうがいいと思う。

注意点としては、

  • ipkg update時にwgetがしょぼくてエラー
    • /usr/bin/wgetwget.busyboxにrename ... なんでしたのか忘れた。いらないかも。まあ適当にバックアップして。
    • /usr/bin/wget.shを以下の感じで作る
#!/bin/sh
arg=`echo $* | sed -e 's/--passive-ftp//g'`
/bin/busybox wget $arg
ln -s wget.sh wget
  • ipkg updateしてもopen pogoがなくなっててエラー
-bash-3.2# cat /opt/etc/ipkg/armel-feed.conf  
#src cross http://openpogo.com/repo
src cross http://ipkg.nslu2-linux.org/feeds/optware/cs08q1armel/cross/stable
  1. バックアップしたいディスクを予めHFS+でフォーマットする。

ついでにディレクトリをいっこ作っておこう。私は tm という名前のディレクトリを作った。Pogoplugの余計なメタデータがディスクのルートに作られるため。

  1. Pogoplugに差してマウントポイントを調べる

私は4つめだったので/tmp/.cemnt/mnt_sdd1だったお

  1. 依存関係をいっぱいインストールする

netatalk2.2.0-p6をビルドするのだが、たぶん色々と依存関係を解決せねばならない。

avahi, libgcrypt, libssl

あたりを ipkg installで入れよう。もしかしたら他にも必要かもしれない。 私はこの前にlibnslとsambaを入れているので。

netatalkの前に最新のberkeleyDBを入れる。oracleのHPからゲットしてくる。
普通にconfigure, make, make installすればいけたはず。

一点、私の環境では既存のlibdbがあったので、 configure --prefix=/opt/local とした。

  1. netatalk2.2.0-p6をインストールする

https://github.com/jrmithdobbs/netatalk-2-2-0-p6

ソースはここ。

次に、ソースにパッチを当てる。

http://seongbae.blogspot.com/2009/09/turning-pogoplug-into-timemachine.html

ここは参考になる。転載。

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)
cvs diff: Diffing nls

上記パッチを頑張って当てよう。
ちなみに、globals.hはatalkdディレクトリの方に移動しているので注意。
また、上記パッチは少し古いので、手動でやろう。確か

#define OPTION_ALLOW_ROOT    (1 << 10)

このあたりが違ったはず。

終わったらビルドする。

./configure --with-bdb=/opt/local --with-ldap=no --prefix=/opt

私の場合のconfigure option。

一応、私の場合の結果を貼っておく。ご参考。

>||

LIBS = -lpthread -L$(top_srcdir)/libatalk
CFLAGS = -I$(top_srcdir)/include -D_U_="__attribute__*1" -g -O2 -I$(top_srcdir)/sys
SSL:
LIBS = -L/opt/lib -L/opt -lcrypto
CFLAGS = -I/opt/include -I/opt/include/openssl
LIBGCRYPT:
LIBS = -L/opt/lib -lgcrypt -lgpg-error
CFLAGS = -I/opt/include -I/home/slug/optware/cs08q1armel/staging/opt/include
BDB:
LIBS = -L/opt/local/lib -ldb-5.2
CFLAGS = -I/opt/local/include/
Configure summary:
Install style:
none
AFP:
AFP 3.x calls activated:
Extended Attributes: ad | sys
CNID:
backends: dbd last tdb
UAMS:
DHX ( SHADOW)
DHX2 ( SHADOW)
RANDNUM ( SHADOW)
passwd ( 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: no
LDAP support: no
|

*1:unused