LoginSignup
17
21

More than 5 years have passed since last update.

RaspberryPiをセットアップしてopenmediavaultでNASにする

Last updated at Posted at 2016-09-19

RaspberryPiのSDカードを作成するところからopenmediavaultとminidlnaのインストールまでをヘッドレスで行う。
ついでに、ぼくのかんがえたさいきょうのラズパイバックアップ手順も書く。

準備

必要なものリスト。

  • Mac
  • Raspiberry Pi2 Model B
  • USB Wi-Fi アダプタ
  • 2Aぐらい対応のUSBアダプタ
  • MicroSDカードリーダライタ
  • 4GB以上のMicroSDカード
  • 2GBのMicroSDカード(システムバックアップに使う)

これからハードを買い集める人はRaspberryPi3にするといいと思う。その場合はWi-Fiアダプタは不要。
基本的にはeth0に接続するが、ネットワークの設定変更時のバックアップにwlan0も使うため、Wi-Fiも使えたほうが良い。

SDカードは、システムに挿しておくものと、バックアップ用にそれぞれ1枚確保。トラブル時や、テストする際にはSDカード入れ替えるだけでまるっとシステム切り替えられて便利なので、その辺に落ちているSDカードをかき集めておく。

常時起動するので、ファン付きのケースも確保しておくと良い。ファンは3.3Vに接続してヒートシンクも付けたらCPU温度30度前後で落ち着いている。

ヘッドレスで構築するので、キーボード/モニタなどは基本不要。ただし、bootstrapでのトラブルシュートには必要になるので、以下も持っておいたほうが良い。全てその辺に落ちているはずなので探しておく。

  • HDMIが接続できるモニタ(TVでOK)
  • USBキーボード
  • HDMIケーブル

構築手順

参考:
Raspberry Pi 2の初期設定(外付けモニタ・USBキーボードなし、OS:Raspbian)
http://qiita.com/kozykana/items/df6aa52cbb8917abc268

Raspberry Pi開封から無線LAN経由でSSH接続して初期設定するまでのマイ・ウェイ(モニタ・キーボード無し)
http://qiita.com/morizotter/items/48ad0b17207b0dd66cac

Raspberry Pi 2でファイルサーバを作るまでのまとめ
http://qiita.com/Cinosura/items/6ab435331ea2b3671a1d

1.raspbian-liteをダウンロード

Download Raspbian for Raspberry Pi
https://www.raspberrypi.org/downloads/raspbian/

ヘッドレスなのでliteを使う。
torrentのほうが当然早いのでオススメ。ダウンロードしたらsha1ハッシュを確認して解凍する。

Mac
$ openssl sha1 2016-05-27-raspbian-jessie-lite.zip
$ unzip 2016-05-27-raspbian-jessie-lite.zip

2.イメージ書き込み

diskutilでパスを確認してアンマウントと書き込みを行う。書き込み中はCtrl+Tで進捗確認できる。

Mac
$ diskutil list
$ sudo diskutil unmountDisk /dev/disk2
$ sudo dd bs=1m if=*.img of=/dev/rdisk2
$ sudo diskutil unmountDisk /dev/disk2

3.RaspberryPiにSSH接続

RaspberryPiにSDカードを挿し、EtherケーブルとWi-Fiアダプタを挿して起動する。
raspberry.localに接続しても良いが、広告されるまで時間がかかる。待ちきれないのでping sweepする。以下は、192.168.1.100が割り振られていた場合。

Mac
$ nmap -sP 192.168.1.0/24
$ ssh pi@192.168.1.100

パスワードはraspberry

4.raspi-config

Console起動/タイムゾーンを東京に/Wi-Fiを日本設定に/ホスト名変更/ビデオメモリを最小設定に/

RaspberryPi
$ sudo raspi-config
3 Boot Options > B1 Console
5 Internationalization Options > Change Timezone > Asia > Tokyo
5 Internationalization Options > Change Wi-fi Country > JP Japan
9 Advanced Options -> A2 Hostname -> raspiomv
9 Advanced Options -> A3 Memory Split -> 16
reboot

5.wifiに接続

基本的にはWi-Fiは使わないが、eth0の設定変更を行う際のバックアップとして使う。

RaspberryPi
$ ip addr
$ sudo sh -c 'wpa_passphrase ESSID PRESHAREDKEY \
>> /etc/wpa_supplicant/wpa_supplicant.conf'
$ sudo vi /etc/wpa_supplicant/wpa_supplicant.conf
/etc/wpa_supplicant/wpa_supplicant.conf
country=JP
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
    ssid=ESSID
    # 下の行を削除する
    #psk=PRESHAREDKEY
    psk=なんかすごい長い16進文字列
    # 以下を追記する
    # WPA2-PSK/TKIP/ステルスAPの場合の設定
    key_mgmt=WPA-PSK
    proto=WPA2
    pairwise=CCMP
    group=CCMP
    priority=2
    scan_ssid=1
}

Wi-FiのIPを固定する。jessieは/etc/network/interfacesを見ない。

RaspberryPi
$ sudo vi /etc/dhcpcd.conf

以下を追記。Wi-Fiは192.168.1.3にする。バックアップ用なのでgatewayは設定しない。

/etc/dhcpcd.conf
interface wlan0
static ip_address=192.168.1.3/24

設定が終わったらwlan0を起動し、結果を確認。

RaspberryPi
$ sudo ifdown wlan0
$ sudo ifup wlan0
$ ifconfig wlan0
$ iwconfig wlan0

nicにトラブルがあると再起動時に文鎮と化す。せめて、コンソールログインできるように、起動プロセスが止まらないようにするおまじない。
参考 : dhcpcd.service takes longer time on Lite
https://www.raspberrypi.org/forums/viewtopic.php?t=152757

RaspberryPi
$ sudo vi /etc/default/networking
/etc/default/networking
# 以下の行を追加する
CONFIGURE_INTERFACES=no

6.有線LANの設定を変更

Wi-Fiのnicからssh接続してeth0の設定を変更する。eth0のアドレスは192.168.1.2にする。

Mac
$ ssh pi@192.168.1.3
RaspberryPi
$ sudo ifconfig eth0 down
$ sudo vi /etc/dhcpcd.conf
/etc/dhcpcd.conf
#以下を追記
interface eth0
static ip_address=192.168.1.2/24
static routers=192.168.1.1
static domain_name_servers=8.8.8.8

eth0を再起動して結果を確認。

RaspberryPi
$ sudo ifconfig eth0 down
$ sudo ifconfig eth0 up
$ ifconfig
$ ip addr
$ route

同じネットワークにeth0とwlan0が繋がっていて、デフォルトルートはeth0になっていることを確認。

RaspberryPi
$ route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         192.168.1.1     0.0.0.0         UG    202    0        0 eth0
192.168.1.0     *               255.255.255.0   U     202    0        0 eth0
192.168.1.0     *               255.255.255.0   U     303    0        0 wlan0

7.アップデート

raspbianのリポジトリをjaistのミラーに変更する。

RaspberryPi
$ sudo vi /etc/apt/sources.list
/etc/apt/sources.list
deb http://ftp.jaist.ac.jp/raspbian jessie main contrib non-free rpi

アップデートする。

RaspberryPi
$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get dist-upgrade
$ sudo apt-get autoremove
$ sudo apr-get autoclean
$ sudo rbi-update

不要なパッケージを削除する。たぶん無いけど。

$ dpkg -l | awk '/^rc/ { print $2 }'
$ sudo apt-get purge $(dpkg -l | awk '/^rc/ { print $2 }')

後々必要になるパッケージをインストールする。

RaspberryPi
$ sudo apt-get install dnsutils chkconfig git resolvconf

8.swapoff

参考 : Raspberry PiのSDカード/マイクロSDカードの寿命を延ばす
http://denshikousaku.net/extend-life-expectancy-of-raspberry-pi-sd-card

sdカードにswap領域があると精神衛生上よろしくないのでoffにする。

RaspberryPi
$ free
$ sudo swapoff --all
$ sudo chkconfig dphys-swapfile off
$ sudo shutdown -r now

結果を確認。

RaspberryPi
$ free
             total       used       free     shared    buffers     cached
Mem:        996476     862672     133804      15024      54548     716968
-/+ buffers/cache:      91156     905320
Swap:            0          0          0

Swapのところが全部0になってればOK。

9.moperonユーザを追加してpiユーザをロック

moperonユーザを追加する。groupsはpiユーザと同じものをセットする。

RaspberryPi
$ sudo adduser moperon
$ groups pi
$ sudo usermod -aG adm,dialout,cdrom,sudo,audio,video,plugdev,\
games,users,input,netdev,spi,i2c,gpio moperon
$ groups moperon
$ exit

新しく作ったユーザでssh接続。

Mac
$ ssh moperon@192.168.1.2

piユーザをロックする。

RaspberryPi
$ sudo passwd -l pi

10.ntpサーバを変更

RaspberryPi
$ sudo vi /etc/ntp.conf
/etc/ntp.conf
#server 0.debian.pool.ntp.org iburst
#server 1.debian.pool.ntp.org iburst
#server 2.debian.pool.ntp.org iburst
#server 3.debian.pool.ntp.org iburst
pool ntp.nict.jp iburst
RaspberryPi
$ sudo service ntp restart

11.システムバックアップ

別添のバックアップ手順に従う

12.OpenMediaVaultをインストール

参考 : Install OpenMediaVault Raspberry Pi NAS Server Minibian
http://www.htpcguides.com/install-openmediavault-raspberry-pi-nas-server-minibian/

RaspberryPi
$ sudo sh -c 'echo "deb http://packages.openmediavault.org/public erasmus main" > /etc/apt/sources.list.d/openmediavault.list'
$ wget -O - http://packages.openmediavault.org/public/archive.key | sudo apt-key add -
$ sudo apt-get update
$ sudo apt-get install openmediavault-keyring
$ sudo apt-get --yes --force-yes --fix-missing --auto-remove \
  --allow-unauthenticated --show-upgraded \
  --option Dpkg::Options::="--force-confdef" \
  --option DPkg::Options::="--force-confold" \
  --no-install-recommends \
  install openmediavault

postfixとかmdadmとかになんか聞かれる。

General type of mail configuration: localonly
System mail name: raspiomv
MD arrays needed for the root file system: none
Run proftpd: standalone

手元では3.0.35が入った(2016/9/19時点)。
インストールが無事完了したら、openmediavautを初期化する。

RaspberryPi
$ sudo omv-initsystem

うまくいったら、ブラウザ80/tcpに接続してログインする(admin/openmediavault)。
openmediavault_ログイン画面.png

sshの設定の追加オプションに以下を追加して保存->適用。openmediavaultの設定画面でSSHを有効にした場合、この設定を行わないとSSHログインできなくなる。

AllowGroups adm

SSH設定.png

あと、WebUIの管理者アカウント(admin)のパスワードを変更しておく。
adminのアカウント名を変更する方法はないかと色々調べたが、無いらしい。

参考 : Can i change username of admin ?
http://forum.openmediavault.org/index.php/Thread/3105-Can-i-change-username-of-admin/?postID=23064#post23064

13.不要なサービスを停止

Webコンソール上のサービス起動状態と実態が異なるので、とりあえず不要なサービスはコマンドラインで停止する。

RaspberryPi
$ sudo chkconfig nfs-kernel-server off
$ sudo service nfs-kernel-server stop
$ sudo chkconfig nfs-common off
$ sudo sudo service nfs-common stop
$ sudo chkconfig proftpd off
$ sudo service proftpd stop
$ sudo chkconfig snmpd off
$ sudo service snmpd stop
$ sudo chkconfig tftpd-hpa off
$ sudo service tftpd-hpa stop

なんやかやしてopenmediavaultの診断>サービスの画面がこんな感じになってればOK。
service.png

14.minidlnaのインストール

omv-extras.org のプラグインがうまく動かないので、apt-getする。

RaspberryPi
$ sudo apt-get install minidlna

ToDo:openmediavault/3.0(erasmus)が正式リリースしたら、ここの手順は見直す。

15.tmpフォルダをRAMディスクに移す

参考 : Raspberry PiのログをRAMDISKに置く方法
https://curecode.jp/tech/raspberrypi-ramdisk/

ログファイルをRAMディスクに移すと、SDカードの寿命的な意味で精神衛生上良い。

RaspberryPi
$ sudo vi /etc/fstab
/etc/fstab
proc            /proc           proc    defaults          0       0
/dev/mmcblk0p5  /boot           vfat    defaults          0       2
/dev/mmcblk0p6  /               ext4    defaults,noatime  0       1
# a swapfile is not a swap partition, so no using swapon|off from here on, use  dphys-swapfile swap[on|off]  for that
#### ramdisk
#以下を追加
tmpfs           /var/tmp        tmpfs   defaults,size=16m 0       0
tmpfs           /var/log        tmpfs   defaults,size=32m 0       0

/var/log以下に作られるファイルやフォルダをあらかじめ作成するスクリプトを作る。
実際のパスや所有者などは、RAMディスクに移す前の状態を確認してスクリプトを適宜修正する。

RaspberryPi
$ sudo vi /etc/init.d/make-varlog-files
/etc/init.d/make-varlog-files
#!/bin/bash
#
### BEGIN INIT INFO
# Provides:          make-varlog-files
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Required-Start:
# Required-Stop:
# Short-Description: Create /var/log/... files on tmpfs at startup
# Description:       Create /var/log/... files needed by system daemon
### END INIT INFO

#
# main()
#
case "${1:-''}" in
  'start')

    ############################
    # prepare /var/log subdir for ramdisk init on every boot

    mkdir -p /var/log/apt
    mkdir -p /var/log/cron-apt
    mkdir -p /var/log/fsck
    mkdir -p /var/log/nginx
    mkdir -p /var/log/ntpstats
    mkdir -p /var/log/openmediavault
    mkdir -p /var/log/proftpd
    mkdir -p /var/log/samba
    mkdir -p /var/log/watchdog

    chown www-data.adm /var/log/nginx
    chown ntp.ntp /var/log/ntpstats
    chown root.adm /var/log/samba

    ############################
    # prepare /var/log file for ramdisk init on every boot

    touch /var/log/lastlog
    touch /var/log/wtmp
    touch /var/log/btmp


    chown root.utmp /var/log/lastlog
    chown root.utmp /var/log/wtmp
    chown root.utmp /var/log/btmp
   ;;
  'stop')
   ;;
  'restart')
   ;;
  'reload'|'force-reload')
   ;;
  'status')
   ;;
  *)
   echo "Usage: $SELF start"
   exit 1
   ;;
esac
RaspberryPi
$ sudo chmod +x /etc/init.d/make-varlog-files
$ sudo update-rc.d make-varlog-files defaults 01 10
$ sudo shutdown -r now

再起動後、確認する

RaspberryPi
$ df -h

バックアップ手順

参考 : Raspberry PiでIoTなシステム開発:SDカードのバックアップはrpi-cloneでやろう
http://www.homu.net/raspberry-piでiotなシステム開発:sdカードのバックアップはrpi/

2GBのMicroSDカードにシステムクローンし、そのカードからddでimgファイルを吸い出すことで、バックアップを作る。imgファイルをまたddで戻せばリストアできる。システム起動中にスナップショットを取れるし、imgファイルは2GBに制限できるので圧縮の必要もなかろう、という手順。

1.rbi-cloneをインストール

RaspberryPi
$ wget https://raw.githubusercontent.com/billw2/rpi-clone/master/rpi-clone
$ sudo mv rpi-clone /usr/local/bin/
$ sudo chmod +x /usr/local/bin/rpi-clone

2.システムクローン

インストールできたらMicroSDカードリーダライタに2GBのSDカードを挿して、RaspberryPiのUSBポートに接続し、クローンする。

RaspberryPi
$ sudo fdisk -l # コピー先を確認
$ sudo rpi-clone sda -f

いくつか聞かれるけど、適当に答える。

RaspberryPi
Do you want to initialize the destination disk /dev/sda? (yes/no): yes
You may enter a label for the destination rootfs /dev/sda2:
Final check, is it Ok to proceed with the clone (yes/no)?: yes
Hit Enter when ready to unmount the /dev/sda partitions... [Enter]

3.バックアップ

コピーしたSDカードをmacに接続してimgファイルを作成

Mac
$ sudo dd bs=1m if=/dev/rdisk2 of=filename.img

4.リストア

参考URLでは、ddでリストアすると起動しないとあるが、当方の手元ではうまくいっている。

Mac
$ sudo diskutil unmountDisk /dev/disk2
$ sudo dd bs=1m if=filename.img of=/dev/rdisk2

RaspberryPiに接続し、起動後にExpand Filesystemする。

RaspberryPi
$ sudo raspi-config
1 Expand Filesystem

残りのお仕事

HDDを接続してRAIDを組んでsmbで共有したり、minidlnaを設定してDLNA配信したり、Wi-Fiカメラと接続して写真を自動バックアップしたりと、夢を広げる。

17
21
0

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
17
21