Netatalk のセットアップ(Raspberry Pi 3 )
スポンサーリンク
macOS とRaspberry Pi のデータ共有用にNetatalk をセットアップする作業メモです。
USBメモリという手もありますが、ネットワーク越しにデータをやり取りする方が便利です。scp
だとちょっとめんどいし、NFSでもいいけどmacOSとLinux間のデータ共有なのでNetatalk (AFP) をインストールすればいいよねってことで。
前置き
Netatalkはunix系OS上でApple のファイル共有プロトコルを利用するためのプログラム(デーモン)です。最新版はバージョン3系ですが、Raspberry Pi の公式OSであるRaspbianで提供されているのはバージョン2.2.5です。
新しいバージョンであればSamba*1との統合が実現できるようです。
ラズパイをファイルサーバーとして使う予定はないので素直に古いですが標準パッケージを使います。 2016年にこの旧バージョンというのも悲しいものがありますが、この記事はNetatalk バージョン 2.2.5 の設定の話です。
なお、macOS 自体が、AFPからWindowsと同じSMBプロトコルベースに移行しようとしているそうなので安定運用したいならSamba+AFP(netatalk) 構成にした方が良いようです。
補足
Netalkのバージョン3系をソースからインストールする方法については他の方が書かれているのでそちらを参照。
- Install Netatalk 3.1.10 on Debian 8 Jessie - Netatalk Wiki
- Raspberry Pi と外付けハードディスクで Time Capsule 互換機を作る
- Raspberry Pi3をMacのTimeMachineのディスクとして利用するまでの手順 - 怪しい物を開発するブログ
- Netatalk 2.xから3.xへ移行する人のための情報
準備
設定手順としては下記のサイトを参考にしました。
まずはファイルシステム側が拡張属性の保存に対応している必要があります。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」でネットワークのコンピュータの一覧へ。
アクセスするとラズパイのホスト名が表示されるのでダブルクリック。
ウィンドウの右上に「別名で接続」というボタンがあるのでこれをクリック。
ユーザ名としてpi
、パスワードにラズパイ側のパスワードを入力。
自動起動させる設定
問題がなければサービスとして有効化する。
$ sudo systemctl enable netatalk
まとめ
最新版ではないですが、これでmacOS側から自由にラズパイ側のファイルにアクセスできます。
以上です。
それでは。