Raspberry pi
Rspberry pi にUSBハードディスクを接続して,Mac の time machine のディスクと
したり,Linux マシンのバックアップディスクとしたり,UPNP メディアサーバとしたり
する計画.
Insttall
本体のインストール.今回はRASPBIANで.
- micro SD にコピーするイメージを https://www.raspberrypi.org/downloads/ から
ダウンロード.
- ダウンロードしたイメージファイルを解凍して,micro SD にコピー.
https://www.raspberrypi.org/documentation/installation/installing-images/linux.md
- micro SD カードをスロットに挿して起動.イーサネットケーブルを接続.IP アドレスがDHCPによって設定されるはずなので,(当てずっぽうに)ssh で接続.
- Raspberry pi の設定.
raspi-config
- デフォルトエディタの設定.
sudo update-alternatives --config editor
- Firmware のアップデート.再起動
sudo rpi-update
sudo apt-get update; sudo apt-get upgrade
必要なら再起動.
- ユーザの設定.
uid と gid もなんかうまくやっておくと,あとでNFSを使うときに便利かも.
HDD の接続と設定
USB HDDを接続して,mount する設定.
まず,ディスクの UUID を調べる.
$ sudo lsblk
/dev/mmcblk0p1: SEC_TYPE="msdos" LABEL="boot" UUID="15CD-3B79" TYPE="vfat"
/dev/mmcblk0p2: UUID="13d368bf-6dbf-4751-8ba1-88bed06bef77" TYPE="ext4"
/dev/sda1: LABEL="time_machine" UUID="b25dd4f7-9c17-4d3a-8dd2-3837a6f6acc6" TYPE="ext4"
/dev/sda2: LABEL="backup" UUID="eae3badb-d4f3-4fd7-922a-0e1d437f8006" TYPE="ext4"
/dev/sdb1: LABEL="MEDIA" UUID="AFB6-9DF4" TYPE="vfat"
マウントポイントを作成して,/etc/fstab
の編集.
UID=AFB6-9DF4 /mnt/media vfat codepage=932,iocharset=utf8,uid=1000,gid=1000 0 0
UUID=b25dd4f7-9c17-4d3a-8dd2-3837a6f6acc6 /backup/time_machine ext4 defaults 0 0
UUID=eae3badb-d4f3-4fd7-922a-0e1d437f8006 /backup/linux ext4 defaults 0 0
netatalk
Mac OS から接続したり,Time Machine ディスクとして使うための設定.
sudo apt-get install netatalk
/etc/netatalk/AppleVolumes.default
を編集.
/mnt/time_machine "Time machine" options:tm allow:tanahiro
/mnt/media "media"
NFS
Linux からディスクをマウントするため.
サーバ
Rasbperry pi にNFSサーバをインストール.
sudo apt-get install nfs-common nfs-kernel-server
/etc/exports
を編集.
/backup/linux linux(rw,sync,no_sbtree_check)
ブート時にサービスを起動させる.
sudo update-rc.d rpcbind enable
sudo update-rc.d nfs-common enable
sudo update-rc.d nfs-kernel-server enable
クライアント
サービスのインストール.
sudo apt-get install nfs-common
/etc/fstab
の編集.
raspi:/backup /backup nfs defaults 0 0
参考
MiniDLNA (UPNP/DLNA)
サービスのインストール.
sudo apt-get install minidlna
コンフィグレーションファイル, /etc/minidlna.conf
の編集.
media_dir=V,/mnt/media
コンフィグレーションファイルのリロード.
sudo service minidlna force-reload
参考
HDD の回転数
ついでに,HDD が使われていない時に回転を止めるようなスクリプト.
sdparm
ツールのインストール.
sudo apt-get install sdparm
スクリプト
INTERVAL 秒ことにディスクの状態をチェックして,もし変化がなければ spindown.
#!/bin/sh
if [ $# -lt 2 ]; then
echo "usage: usbhdd_spindown.sh [UUID] [INTERVAL]"
exit 0
fi
disk=`findfs UUID="$1"`
if [ -z $disk ]; then
echo "could not find UUID $1"
exit 0
fi
disk=`echo "$disk" | sed -e "s@/dev/@@"`
interval=$2
state=`grep " $disk " /proc/diskstats`
count=$interval
sleep_time=20
up=1
while [ true ]; do
sleep $sleep_time
count=$(($count - $sleep_time))
newstate=`grep " $disk " /proc/diskstats`
if [ "$state" = "$newstate" ]; then
if [ $count -lt 0 ]; then
count=$interval
if [ $up -gt 0 ]; then
sync
state=`grep " $disk " /proc/diskstats`
sdparm --readonly --command=stop /dev/$disk > /dev/null 2>&1
up=$?
fi
fi
else
count=$interval
state="$newstate"
up=1
fi
done
/etc/inittab
に起動時に実行するように記述.
# spindown usb hdd
USR0:2:once:/usr/local/bin/usbhdd_spindown.sh AFB6-9DF4 120
参考1
参考2