into the void

ソフトウェアに関する雑多な調査日記

Androidを載せたbeagleboard-xmをTimeMachine用のNASにするまで(其の参)

依存するライブラリやプログラムのポーティングができたので次はnetatalk
これもまずはPC Linux(Ubuntu)上でどんな動作をするのか確認してみる。

netatalkのビルド

netatalkのサイトから安定版の最新ソース(2.2.2)を持ってくる。
http://netatalk.sourceforge.net/
基本的にはconfigureしてmake、make installするだけ。

$./configure --enable-debian

下記のようなsummaryが表示される。

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   =  -lcrypto
        CFLAGS =  -I/usr/include/openssl
    BDB:
        LIBS   =  -ldb-4.8
        CFLAGS = 
Configure summary:
    Install style:
         debian
    AFP:
         Large file support (>2GB) for AFP3: yes
         Extended Attributes: ad | sys
    CNID:
         backends:  dbd last tdb
    UAMS:
         DHX     ( SHADOW)
         RANDNUM (afppasswd)
         clrtxt  ( SHADOW)
         guest
    Options:
         DDP (AppleTalk) support: no
         SLP support:             no
         Zeroconf support:        yes
         tcp wrapper support:     no
         quota support:           yes
         admin group support:     yes
         valid shell check:       yes
         cracklib support:        no
         dropbox kludge:          no
         force volume uid/gid:    no
         ACL support:             no
         LDAP support:            no

makeができたらinstallする前にafpdの基本情報を確かめておく。

$make
$./etc/afpd/afpd -V
afpd 2.2.2 - Apple Filing Protocol (AFP) daemon of Netatalk

This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
Foundation; either version 2 of the License, or (at your option) any later
version. Please see the file COPYING for further information and details.

afpd has been compiled with support for these features:

          AFP versions:	2.2 3.0 3.1 3.2 3.3 
DDP(AppleTalk) Support:	No
         CNID backends:	dbd last tdb 
           SLP support:	No
      Zeroconf support:	Yes
  TCP wrappers support:	No
         Quota support:	Yes
   Admin group support:	Yes
    Valid shell checks:	Yes
      cracklib support:	No
        Dropbox kludge:	No
  Force volume uid/gid:	No
            EA support:	ad | sys
           ACL support:	No
          LDAP support:	No

             afpd.conf:	/usr/local/etc/netatalk/afpd.conf
   AppleVolumes.system:	/usr/local/etc/netatalk/AppleVolumes.system
  AppleVolumes.default:	/usr/local/etc/netatalk/AppleVolumes.default
    afp_signature.conf:	/usr/local/etc/netatalk/afp_signature.conf
      afp_voluuid.conf:	/usr/local/etc/netatalk/afp_voluuid.conf
         afp_ldap.conf:	not supported
       UAM search path:	/usr/local/etc/netatalk/uams/
  Server messages path:	/usr/local/etc/netatalk/msg/
              lockfile:	/var/lock/afpd

とりあえず大丈夫そうに見えたのでmake install。

make install

netatalkの設定

設定ファイルはnetatalk(/etc/default/netatalk)とafpd.conf(/usr/local/etc/netatalk/afpd.conf)とAppleVolumes.default(/usr/local/etc/netatalk/AppleVolumes.default)の3つ。それぞれ付ぃあるの場所はconfigureのオプションで変えられる。実際どこになっているかは、afpd -Vで確認。今回はmake installの前に確認済。
この辺の設定は下記のサイトを参考にした。
http://www003.upp.so-net.ne.jp/hat/netatalk/andsamba.html

netatalk.conf(/etc/default/netatalk)

文字コードに関する設定(ATALK_UNIX_CHARSET、ATALK_MAC_CHARSET)とcnidのログ出力(CNID_CONFIG)に関する設定のみ変更する。下記はオリジナルのnetatalk.confとの差分

diff ./config/netatalk.conf /etc/default/netatalk 
11,12c11,16
< ATALK_UNIX_CHARSET='LOCALE'
< ATALK_MAC_CHARSET='MAC_ROMAN'
---
> # edited
> #ATALK_UNIX_CHARSET='LOCALE'
> ATALK_UNIX_CHARSET='UTF8'
> # edited
> #ATALK_MAC_CHARSET='MAC_ROMAN'
> ATALK_MAC_CHARSET='MAC_JAPANESE'
39a44,45
> # edited
> CNID_CONFIG="-l LOG_NOTE -f /var/log/netatalk.log"
aftp.conf

afp daemonに関する設定。デフォルトのafpd.confの最後に下記を追記した。ユーザ認証方式(-uamlist)、文字コード(-maccodepage)、ログ出力(-setuplog)に関するオプションをつける。特にlionからアクセスするためにはuams_dhx2.soが必須。

- -tcp -uamlist uams_dhx2.so,uams_dhx.so -maccodepage MAC_JAPANESE -setuplog "default LOG_NOTE /var/log/netatalk.log"
AppleVolumes.default

afpで公開するディレクトリの情報を設定する。デフォルトだとユーザのホームディレクトリが公開されるようになっているのでファイルの末尾を下記のように変更する。

# The line below sets some DEFAULT, starting with Netatalk 2.1.
# コメントアウト
#:DEFAULT: options:upriv,usedots

# 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.
# コメントアウト
#~

# 追記
:DEFAULT: options:upriv,usedots cnidscheme:dbd maccharset:MAC_JAPANESE volcharset:UTF8 dperm:0700 fperm:0600 ea:sys

# 追記(公開したいディレクトリ)
/home/afp "afpdata"

# End of File

動作確認

netatalk(afpdとcnid)を起動してMacからアクセスできるか試してみる。

sudo service netatalk start

Mac OS (Lion)からafp:///afp_dataでアクセスしてみた。。。が、つながらず。「接続しようとしているサーバのバージョンはサポートされません」といわれる。。。
asip-status.plなるツールでapfdのステータスをチェックできるらしいのでしてみた。

$ ./asip-status.pl 192.168.1.100
AFP reply from 192.168.1.100:548
Flags: 1  Cmd: 3  ID: 57005
Reply: DSIGetStatus
Request ID: 57005
Machine type: Netatalk2.2.2
AFP versions: AFP2.2,AFPX03,AFP3.1,AFP3.2,AFP3.3
UAMs: DHCAST128
Volume Icon & Mask: exist
Flags: SupportsCopyFile,SupportsServerMessages,SupportsServerSignature,SupportsTCP/IP,SupportsSrvrNotifications,SupportsOpenDirectory,SupportsUTF8Servername,SupportsUUIDs,SupportsSuperClient
Server name: lynx
Signature:
f7 7c c1 a1 2a a3 66 b5 d0 83 62 03 e5 c9 4f e5  .|..*.f...b...O.
                                                  
Network address: 192.168.1.100 (TCP/IP address)
UTF8 Servername: lynx

UAMsでDHX2が有効になっていない? LionからDHX2が必須になったということでエラーメッセージの内容とも一致する。logレベルをLOG_NOTEからLOG_MAXDEBUGにかえて/var/log/netatalk.logを確認してみたが、こっちでもエラーが出ていた。

Apr 15 04:44:21.802660 afpd[460] {auth.c:1143} (D5:AFPDaemon): uam: loading (/usr/local/etc/netatalk/uams/uams_dhx2.so)
Apr 15 04:44:21.803021 afpd[460] {auth.c:1150} (D5:AFPDaemon): uam: uam not found (status=-1)

どうもuams_dhx2.soがうまくビルドできていない様子。configureのsummaryも確認してみると、DHXは有効になっているがDHX2は見当たらない。
調べた結果、DHX2をビルドするのに必要なlibcryptがインストールされていないことが原因ぽい。
Ubuntuにlibgcrypt11-devをインストールしてconfigureからやりなおしたらちゃんとつながるようになった。

configureのsummary抜粋
  UAMS:
         DHX     ( SHADOW)
         DHX2    ( SHADOW)
         RANDNUM (afppasswd)
         clrtxt  ( SHADOW)
         guest
asip-status.plの出力抜粋
UAMs: DHCAST128,DHX2

PC Linux上で動作確認できたので、android環境へのポーティングにうつる。