読者です 読者をやめる 読者になる 読者になる

Netatalk のセットアップ(Raspberry Pi 3 )

ラズパイ Raspberry Pi Linux macOS

macOSRaspberry Pi のデータ共有用にNetatalk をセットアップする作業メモです。

USBメモリという手もありますが、ネットワーク越しにデータをやり取りする方が便利です。scpだとちょっとめんどいし、NFSでもいいけどmacOSLinux間のデータ共有なのでNetatalk (AFP) をインストールすればいいよねってことで。

前置き

Netatalkunix系OS上でApple のファイル共有プロトコルを利用するためのプログラム(デーモン)です。最新版はバージョン3系ですが、Raspberry Pi の公式OSであるRaspbianで提供されているのはバージョン2.2.5です。

新しいバージョンであればSamba*1との統合が実現できるようです。

ラズパイをファイルサーバーとして使う予定はないので素直に古いですが標準パッケージを使います。 2016年にこの旧バージョンというのも悲しいものがありますが、この記事はNetatalk バージョン 2.2.5 の設定の話です。


なお、macOS 自体が、AFPからWindowsと同じSMBプロトコルベースに移行しようとしているそうなので安定運用したいならSamba+AFP(netatalk) 構成にした方が良いようです。

情報元:Netatalk and Samba

補足

Netalkのバージョン3系をソースからインストールする方法については他の方が書かれているのでそちらを参照。

準備

設定手順としては下記のサイトを参考にしました。

まずはファイルシステム側が拡張属性の保存に対応している必要があります。user_xattrというオプションがフォーマット時に有効にされているかをチェックします。 (アクセスしたい対象である)ラズパイ側のユーザーのホームディレクトリを含むパーティションの状態だけ確認。

$ sudo tune2fs -l /dev/mmcblk0p2 | grep "Default mount options"
Default mount options:    user_xattr acl

上記の出力であれば、意図的に無効にしない限り、ルートパーティションをマウントする時点でオプションが有効になります。 もし上記のようになっていないなら、マウントオプションにuser_xattrを追加する必要があります。

デフォルトでは/etc/fstabは下記の状態で、明示的に無効化されていないので問題はない。

/dev/mmcblk0p2  /               ext4    defaults,noatime  0       1

/etc/fstabを修正した場合は再起動するかルートパーティションを再マウント。

インストールと設定

インストール

aptでインストールするのでコマンド一発です。

$ sudo apt install netatalk

設定ファイルの修正

修正対象の設定ファイルは以下の3つ。

他のディストリビューションの場合は/etc/default/netatalkではなく/etec/netatalk/netatalk.confになるかと思います。 また、バージョン3系は設定ファイルがシンプルになるとか。

/etc/default/netatalk の修正

まず文字コードとCNID_CONFIG を設定。

#ATALK_UNIX_CHARSET='LOCALE'
#ATALK_MAC_CHARSET='MAC_ROMAN'

という箇所を以下のように修正。

ATALK_UNIX_CHARSET='UTF8'
ATALK_MAC_CHARSET='MAC_JAPANESE'

ATALK_MAC_CHARSETはMacOS9のためのものなので不要かも。

以下の行を探して行頭のコメント記号を外す。

AFPD_UAMLIST="-U uams_dhx2.so,uams_clrtxt.so"
(skip)
CNID_CONFIG="-l log_note -f /var/log/netatalk.log"

書式は設定ファイル自体に記載がありますが必要であれば冒頭のサイトか下記参照。

公式ドキュメント:netatalk.conf

/etc/netatalk/afpd.conf の修正

最終行に下記を追加。

- -maccodepage MAC_JAPANESE -setuplog "default log_info /var/log/afpd.log"

公式ドキュメント:afpd.conf

/etc/netatalk/AppleVolumes.default

:DEFAULT という行を以下のように変更。'maccharset'の項目はMacOS9用だそうなので不要な気もするが一応。

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

さらに末尾に以下のような行があることを確認しておく(各ユーザーのホームディレクトリを公開する設定。要パスワード認証)。

~/                      "Home Directory"

上記とは別にデータの共有領域を設定するためにファイルの末尾に以下を追加(必須ではない)。

/opt/dataを"Data Directory"という名前で"users"というグループのユーザーからアクセス可能にする設定。

/opt/data               "Data Directory"  allow:@users

公式ドキュメント:AppleVolumes.default

共有用のフォルダを作成してアクセス権を付与しておきます。

$ sudo mkdir /opt/data
$ sudo chmod a+w /opt/data

デーモンの起動

$ sudo systemctl  restart netatalk

いつも通り。正常に起動しかは下記で確認。

$ sudo systemctl status netatalk

'active (running)'となっていれば問題なし。必要なら/var/log配下に上記で設定したログファイルに何か出力されているはず。

接続テスト

ここまで完了したらmacOS側から接続してみます。Finderを起動して、「Shift」+「Cmd」+「K」でネットワークのコンピュータの一覧へ。

アクセスするとラズパイのホスト名が表示されるのでダブルクリック。

f:id:atuyosi:20161018165500p:plain

f:id:atuyosi:20161018165709p:plain
ウィンドウの右上に「別名で接続」というボタンがあるのでこれをクリック。

f:id:atuyosi:20161018165452p:plain
ユーザ名としてpi、パスワードにラズパイ側のパスワードを入力。

自動起動させる設定

問題がなければサービスとして有効化する。

$ sudo systemctl  enable netatalk

まとめ

最新版ではないですが、これでmacOS側から自由にラズパイ側のファイルにアクセスできます。

以上です。


それでは。

*1:Windows用のファイル共有プロトコルに対応したファイル共有ソフトウェア