LoginSignup
1
5

More than 5 years have passed since last update.

Raspbian Stretch をバックアップ&ファイルサーバー化

Last updated at Posted at 2017-10-10

はじめに

RaspberryPI を Mac のバックアップサーバー&ファイルサーバーにするべく, avahi-daemon と netatalk をインストールしてみます。

2017年10月10日時点のインストール手順なので,新しい Raspbian をご使用の場合は異なる手順になる場合がありますので予めご了承ください。

使用する主要なソフトウェアとバージョン

  • RASPBIAN STRETCH LITE (2017-09-07)
  • netatalk 3.1.11
  • avahi-daemon 0.6.32-2

※ これらは頻繁にバージョンアップするので,必ず一致させる必要はありません。

構成

お好きな構成にしていただければと思いますが,参考までに私が作った構成を紹介します。

Raspberry PI に 2 台のポータブル HDD を USB 接続して,バックアップ先は一方のポータブル HDD にします。片方は ext4 でフォーマットしてあり,もう片方は ExFAT でフォーマットしたものになります。

注意

Linux Native ではないファイルシステムでフォーマットされた HDD の使用は推奨されません。
詳細は http://www003.upp.so-net.ne.jp/hat/netatalk/andsamba.html の「やらないほうがいいこと」をご覧ください。
特に理由がなければファイルシステムは ext4 等にすることをオススメいたします。

安定した電力を供給したいので,ポータブル HDD はセルフパワー供給可能な USB ハブを使用します。

つまり, Raspberry PI の USB ポートには USB ハブがついていて, USB ハブには ポータブル HDD が接続されています。USB ハブには電源アダプターを接続した状態にします。 Raspberry PI 本体への電源供給は USB ハブから USB ケーブル経由で行います。

ただ, Raspberry PI 本体の USB ポートにポータブル HDD を接続しても電力不足で HDD が動かない可能性があります。

Raspbian をダウンロード

https://www.raspberrypi.org/downloads/raspbian/

上記サイトから「RASPBIAN STRETCH LITE」をダウンロードします。
2017年10月10日時点で,ダウンロードしたのは以下のファイルです。

2017-09-07-raspbian-stretch-lite.zip

ダウンロードした上記 zip ファイルを展開します。すると「 2017-09-07-raspbian-stretch-lite.img 」というファイルが展開されます。

Raspbian を SD カードに書き込み

SD カードを mac に挿します。
次のコマンドで SD カードのディスクを確認します。

df -h
Filesystem      Size   Used  Avail Capacity iused               ifree %iused  Mounted on
/dev/disk1s1   466Gi  146Gi  318Gi    32% 2106888 9223372036852668919    0%   /
 :
/dev/disk1s4   466Gi  1.0Gi  318Gi     1%       1 9223372036854775806    0%   /private/var/vm
/dev/disk2s1   7.4Gi  2.5Mi  7.4Gi     1%       0                   0  100%   /Volumes/NO NAME

/dev/disk2s1 が SD カードのディスクということがわかりました。 /dev/disk2s1 という文字は環境によって変わるので,必ず df -h コマンドで調べるようにしてください。

アンマウントしましょう。

注意

ここで間違ったディスクを指定して作業を進めると意図しないディスクを消してしまう可能性があります。良く見て確かめて入力してください。
間違った操作でデータを消したとしても当ページの記事を書いた私自身は責任を負いかねますので,自己責任で作業してください。

diskutil unmount /dev/disk2s1

次に書き込みを行いますが,アンマウントした状態のディスクの名前は少し変わります。「/dev/diskNsM」のsMの部分を除き,diskNの頭にrをつけます。「/dev/disk2s1」であれば/dev/rdisk2となります。

「2017-09-07-raspbian-stretch-lite.img」のあるディレクトリーで次のコマンドを実行します。

sudo dd bs=1m if=2017-09-07-raspbian-stretch-lite.img of=/dev/rdisk2

書き込みが終わると,自動的にマウントされるのでアンマウントして Raspberry PI にセットして起動します。

IP アドレスを固定にする

/etc/dhcpcd.conf を開き,ファイルの最後に次の通り設定を行います。
ここでは IP アドレスを 192.168.1.100 とします。

interface eth0
static ip_address=192.168.1.100/24
static routers=192.168.1.1
static domain_name_servers=192.168.1.1 8.8.8.8

SSH を使用可能にする

注意しなくてはならないのは,過去のRaspbian とは違い,SSHが最初から使用可能な状態になりません。ディスプレイとキーボードで作業してください。

root でログインして,次のコマンドを実行します。

touch /boot/ssh

再起動します。以降は SSH で接続して作業ができます。

セットアップ

次のコマンドを実行します。

raspi-config

ロケールの変更

Localization Options を選択します。
Change Locale を選択します。

ロケールの一覧が現れるので,スクロールして,「ja_JP.UTF-8 UTF-8」に*を入れます。
次のページでデフォルトのロケールをどれにするか聞かれるので「ja_JP.UTF-8 UTF-8」にします。

タイムゾーンの変更

Localization Options を選択します。
Change Timezone を選択します。

Asia を選択します。
Tokyo を選択します。

再起動

raspi-config のトップページで,「Finish」を選択すると,再起動するかどうかを聞かれるので,再起動します。

必要なソフトウェアのインストール

既存のソフトウェアのアップデート

apt-get update && apt-get upgrade -y

netatalk が必要とするソフトウェアのインストール

apt-get install -y build-essential libevent-dev libssl-dev libgcrypt-dev libkrb5-dev libpam0g-dev libwrap0-dev libdb-dev libtdb-dev libmariadbclient-dev avahi-daemon libavahi-client-dev libacl1-dev libldap2-dev libcrack2-dev systemtap-sdt-dev libdbus-1-dev libdbus-glib-1-dev libglib2.0-dev libio-socket-inet6-perl tracker libtracker-sparql-1.0-dev libtracker-miner-1.0-dev exfat-fuse

netatalk のインストール

netatalk のダウンロードと展開

cd /usr/local/src
wget http://prdownloads.sourceforge.net/netatalk/netatalk-3.1.11.tar.bz2?download -O netatalk-3.1.11.tar.bz2
tar xvf netatalk-3.1.11.tar.bz2
cd netatalk-3.1.11

configure

./configure \
        --with-init-style=debian-systemd \
        --without-libevent \
        --without-tdb \
        --with-cracklib \
        --enable-krbV-uam \
        --with-pam-confdir=/etc/pam.d \
        --with-dbus-daemon=/usr/bin/dbus-daemon \
        --with-dbus-sysconf-dir=/etc/dbus-1/system.d \
        --with-tracker-pkgconfig-version=1.0

ビルド

make
make install

Time Machine 用ユーザーを作成

ユーザーを追加して,パスワードも設定します。

useradd -m timemachineuser
passwd timemachineuser

USB 接続したポータブル HDD のマウント

USB 接続したポータブル HDD をマウントするには次のようにします。

パーティション UUID を確認

ext4 でフォーマットした HDD と ExFAT でフォーマットした HDD を接続した場合以下のような表示になります。私の環境では /dev/sdaN が ext4 , /def/sdbN が EXFAT のディスクになっています。

この後, /dev/fstab にマウントする HDD デバイスを書き込むのですが, /dev/sdaN や, /dev/sdbN を指定すると,起動する度に入れ替わる可能性があるので, PARTUUID を使います。
/dev/sda2 と /dev/sdb2 をマウントしたいので, PARTUUID をメモします。

blkid コマンドを実行します。

blkid
/dev/mmcblk0p1: LABEL="boot" UUID="B64A-B272" TYPE="vfat" PARTUUID="966259d8-01"
/dev/mmcblk0p2: UUID="9a7607bd-5bef-4afc-ac6d-63a957744962" TYPE="ext4" PARTUUID="966259d8-02"
/dev/mmcblk0: PTUUID="966259d8" PTTYPE="dos"
/dev/sda1: UUID="3f242346-3608-4410-b06a-21b24a0de2ac" TYPE="ext4" PARTUUID="b7c18357-2d46-4336-a0af-420998e9a705"
/dev/sdb1: LABEL="EFI" UUID="67E6-17ED" TYPE="vfat" PARTLABEL="EFI System Partition" PARTUUID="46dfc8fc-3719-4bac-9bb0-f55aa762fc5f"
/dev/sdb2: LABEL="Archives" UUID="574A-FF6F" TYPE="exfat" PARTLABEL="Windows_NTFS_Untitled_2" PARTUUID="ed93a832-45e0-46c0-8ce4-3f461f0e5c2e"

ファイル /etc/fstab を次のように編集します。

proc            /proc           proc    defaults          0       0
PARTUUID=966259d8-01  /boot           vfat    defaults          0       2
PARTUUID=966259d8-02  /               ext4    defaults,noatime  0       1
PARTUUID=b7c18357-2d46-4336-a0af-420998e9a705 /mnt/TimeMachine   ext4    defaults,user_xattr,acl    0 2
PARTUUID=ed93a832-45e0-46c0-8ce4-3f461f0e5c2e /mnt/ExfatHdd exfat-fuse sync,auto,dev,exec,gid=65534,rw,uid=65534 0 0
# a swapfile is not a swap partition, no line here
#   use  dphys-swapfile swap[on|off]  for that

HDD のマウント先を作成

ディレクトリーを作成

mkdir /mnt/TimeMachine
mkdir /mnt/ExfatHdd

オーナーを変更

chown timemachineuser:timemachineuser /mnt/TimeMachine
chown timemachineuser:timemachineuser /mnt/ExfatHdd

パーミッションを変更

chmod 777 /mnt/TimeMachine
chmod 777 /mnt/ExfatHdd

afp の設定ファイルを編集

ファイル「/usr/local/etc/afp.conf」を編集

hosts allow = 192.168.1.0/24
mac charset = MAC_JAPANESE
log file = /var/log/netatalk.log
vol preset = my default values

[my default values]
valid users = timemachineuser
file perm = 0660
directory perm = 0770

[Time Machine]
path = /mnt/TimeMachine
time machine = yes

[Exfat Disk]
path = /mnt/ExfatHdd

avahi-daemon と netatalk を有効化

systemctl enable avahi-daemon
systemctl enable netatalk

再起動

Raspberry PI を再起動して,完了です。
あとは macOS でバックアップ先を指定すれば TimeMachine として機能します。
バックアップ先を指定するときに入力を要求されるユーザーとパスワードは, timemachineuser とそのパスワードです。

参考

1
5
5

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
5