Edited at

Raspberry PiをTime Capsuleにする(2019年8月編)


はじめに

Time Capsule作ろうと思ったのですが情報が古かったりしてかなりハマったので新しく書き記すことにしました。

こんなのを作る方法として今回のNetatalkを使う方法と、Sambaを使う方法の2種類があり、将来性のことを考えたら後者の方がいいかなーと思いましたが、残念ながら私の環境では動きませんでした。誰か成功したらやり方教えて下さい。


環境


  • Raspbian Buster

  • macOS Mojave

  • netatalk 3.1.12


HDDの準備

HDDをMac OS拡張(HFS+)でフォーマットします。

Macが起動しなくなってバックアップから戻す時、バックアップしたHDDを直接つないで読み込ませる必要があるのでこの作業が必要です。

ext4だと泣くことになります。泣きました。

Macに一旦つないでディスクユーティリティからフォーマットしましょう。

フォーマット後、デスクトップにあるHDDのアイコンを右クリックし、「情報を見る」からeveryoneにR/Wの権限を与えましょう。

後述するhfsprogsが既にRaspberry Piに入ってる人はGParted等からフォーマットする事も出来ます。


先ずはおまじない

念のためやっておきましょう

sudo apt update

sudo apt upgrade


Netatalkとかのインストール

ここも他のサイトでは大量のパッケージを入れてビルドしてみたいなことをやってますが、シンプルに

sudo apt install netatalk 

sudo apt install avahi-daemon

で問題ありません。


HFS+を扱うための諸々のインストール

sudo apt install hfsprogs hfsplus


自動マウントとfstabの編集

マウント先のフォルダをまず作ります。私は/media/tmにマウントしたので

sudo mkdir /media/tm

sudo chown pi:pi /media/tm
sudo chmod 777 /media/tm

次に、フォーマット済みのHDDを接続して

sudo blkid

でUUIDを調べます。TYPE="hfsplus"がついてるやつがそれです。

UUIDをコピーしたら、

sudo nano /etc/fstab 

でfstabを開いて

UUID=[PUT YOUR UUID] /media/tm hfsplus force,rw,user,auto,nofail 0 0

を追記します。

ここまで完了したらsudo mount /media/tmで特にエラーも出ずマウントされればオッケーです。


Netatalk等の設定

こっから下は情報が錯乱してて私も動くまで色々試行錯誤したので、もしかしたらおかしいところがあるかもしれないのですが、最低限これで大丈夫なんじゃないだろうかってのを書き記します。

動かなかったら報告ください...

ひとまずこれは絶対必要そうなafp.confの設定です。

sudo nano /etc/netatalk/afp.conf

で設定ファイルを開いて


afp.conf

[Global]

mimic model = TimeCapsule6,106
mac charset = MAC_JAPANESE

[TimeMachine]
path = /media/tm
time machine = yes


に変更します。

続いて、

sudo nano /etc/nsswitch.conf

で設定ファイルを開いて

hostsの部分を


nsswitch.conf

files mdns4_minimal [NOTFOUND=return] dns mdns4 mdns


に書き換えます。

そんでもって

 sudo vim /etc/avahi/services/afpd.service


afpd.service

<?xml version="1.0" standalone='no'?><!--*-nxml-*-->

<!DOCTYPE service-group SYSTEM "avahi-service.dtd">
<service-group>
<name replace-wildcards="yes">%h</name>
<service>
<type>_afpovertcp._tcp</type>
<port>548</port>
</service>
<service>
<type>_device-info._tcp</type>
<port>0</port>
<txt-record>model=TimeCapsule</txt-record>
</service>
</service-group>

って書いてやります。

ここまでやったら

sudo service avahi-daemon start

sudo service netatalk start
sudo systemctl enable avahi-daemon
sudo systemctl enable netatalk

とすればMacのシステム環境設定→TimeMachine→ディスク選択に出てくると思います。多分


これでダメだったら...

sudo nano /etc/nsswitch.conf

をまた開いて


nsswitch.conf

passwd:         compat

group: compat
shadow: compat

にしてみてください

また、afp.confの場所も

sudo nano /etc/netatalk/afp.conf

ではなく、

 sudo nano /usr/local/etc/afp.conf

かもしれません。


再起動して書き込めなくなったら

これで治る

sudo fsck.hfsplus -f /dev/sdb1

sudo mount -a