Raspberry pi 4 でNAS（openmediavault）を構築する方法

# 1. はじめに
Raspberry Pi4を手に入れたので、さっそくイメージファイル「OMV_4_Raspberry_Pi_2_3_3Plus_4.img.xz」からNAS（openmediavault）化しようとしたら、どうやらRaspberry Pi4では動かないぽかったので、[公式（英語）の手引き](https://github.com/OpenMediaVault-Plugin-Developers/docs/blob/master/Adden-B-Installing_OMV5_on_an%20R-PI.pdf)をまねて、Raspberry Pi 4 でNAS（openmediavault）を構築する方法を、自分自身への備忘録を兼ねて、お伝えしたいと思います。

参考：[公式（英語）の手引き](https://github.com/OpenMediaVault-Plugin-Developers/docs/blob/master/Adden-B-Installing_OMV5_on_an%20R-PI.pdf)

- どうやら、openmediavaultバージョン5からRaspberryPiなどのシングルボードコンピュータ（[OMV 5.x for Single Board Computers](https://sourceforge.net/projects/openmediavault/files/OMV%205.x%20for%20Single%20Board%20Computers/)）の場合は、手動セットアップしてね！ってことになったみたいです。

# 2. この記事を読んでできること
- Raspberry PiでNAS（openmediavault 5.x）を構築できるようになる。

# 3. 必要なもの
- Raspberry Pi（この記事では Raspberry Pi4 を利用しました）
- SDカード
- インターネット環境
- パソコン（Windows10など）
- sshクライアントソフト（[TeraTerm](https://ja.osdn.net/projects/ttssh2/releases/)）

- 参考：RaspberryPi4にIPアドレスではなくホスト名で接続したい方は、あらかじめ[iTunes](https://support.apple.com/ja_JP/downloads/itunes)（正確には『[Bonjourサービス](https://support.apple.com/kb/DL999?locale=ja_JP&viewlocale=ja_JP)』単体）をインストールしておくと『ホスト名.local』にてIPアドレスを使わずともアクセスできるようになると思います。

# 4. Raspbian Buster Liteの入手
- 以下のURLから、OSイメージファイル（[Raspbian Buster Lite](https://www.raspberrypi.org/downloads/raspbian/)）をダウンロードする。
- 今回は公式の手引きどおり、画面なしヘッドレス（CUI版）のRaspbian Buster Liteを採用しました。

```plaintext:Raspbian_Buster_LiteダウンロードサイトURL
https://www.raspberrypi.org/downloads/raspbian/
```

参考：この記事作成時のファイルバージョン：2019-09-26-raspbian-buster-lite.zip

# 5. microSDカードのフォーマット
- [SD Formatter for Windows](https://www.sdcard.org/jp/downloads/formatter_4/eula_windows/index.html)などのソフトを用いて、使用するmicroSDカードをフォーマットする。

# 6. microSDカードへOSイメージの書き込み（所要時間：15分）
- [Etcher](https://www.balena.io/etcher/)などのソフトを用いて、使用するmicroSDカードへOSイメージを書き込む。

# 7. Raspberry Pi のSSH有効化の設定
- microSDカード直下フォルダにファイル名「ssh」（空ファイル拡張子なし）で新規作成する。保存の際は、不要なファイル拡張子（.txt等）が付かないよう注意すること。

# 8. microSDカード の完成
- 完成した microSDカード を、PCからおもむろに抜き取る。

# 9. Raspberry Piの起動
- Raspberry PiにmicroSDカードを挿入し、Raspberry Piを起動する。

# 10. SSHクライアントでRaspberry Piに接続
- PCで、SSHクライアント（TeraTerm 等）を起動し、ホストにRaspberry PiのIPアドレス「192.168.XXX.XXX」またはホスト名「raspberrypi.local」を入力し、OKボタンをクリックし、ssh接続する。
-  SSH認証画面で、ユーザ名とパスフレーズを入力し、「OK」ボタンをクリックする。
- SSHクライアントの使い方がわからない、またはRaspberry PiのIPアドレスがわからない、ホスト名接続できない方は、Raspberry PiにHDMIモニタ、マウス、キーボードを接続して以降の操作をおこなっても大丈夫です。

```plaintext:デフォルトユーザ名／パスワード
ユーザ名　：pi
パスワード：raspberry
```

# 11. ネットワーク疎通確認

```plaintext:ネットワーク疎通確認コマンド
$ ping www.yahoo.co.jp
```
- このコマンドで、yahooさんにつながったならネットワークは問題ありません。
- ネットワークが不通の場合は、以降の手順がおこなえないため、ネットワーク環境を確認しましょう。

# 12. RaspberryPiのセットアップ
- まず初めに、以下のコマンドを順次実行し、設定しておくと便利なRaspberry Pi 設定もろもろを済ませておきます。

```plaintext:コマンドプロンプト
// パスワードの変更
$ passwd

// ホスト名変更（Raspberry Piを複数台お持ちの方は一意に変更するとよいかと思います。）
$ sudo vi /etc/hostname
$ sudo vi /etc/hosts

// 再起動（ホスト名変更の反映のため）
$ sudo shutdown -r now

// Raspberry Piの設定（CUIモード）
$ sudo raspi-config

// ファイルシステムの拡張
7 Advanced Options → A1 Expand Filesystem

// ロケール等の変更
4 Localisation Options → I1 Change Locale → ja_JP.UTF-8 UTF-8 → スペース選択* → OK
ja_JP.UTF-8 → OK

// タイムゾーンの変更
4 Localisation Options → I2 Change Timezone → Asia → Tokyo

// Wi-Fi利用国の変更
4 Localisation Options → I4 Change Wi-fi Country → JP Japan

// 終了＆再起動
Finish → Yes
```

# 13. openmediavaultのセットアップ
- 以下のコマンドを順次実行し、openmediavaultをセットアップします。

```plaintext:コマンドプロンプト
// piユーザへのsshユーザグループの追加
$ sudo adduser pi ssh

// リポジトリ一覧を更新
$ sudo apt update

// アップグレードの実行（5分程度）
$ sudo apt upgrade
途中、Yキー押下
途中、qキー押下

// ディレクトリ移動
$ cd /opt/

// openmediavaultのインストール（20分程度）
$ wget -O - https://github.com/OpenMediaVault-Plugin-Developers/installScript/raw/master/install | sudo bash

// 再起動
$ sudo reboot

// IPアドレスの確認
$ ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.20  netmask 255.255.255.0  broadcast 192.168.1.255

// exFATフォーマットの有効化
$ sudo apt-get install exfat-fuse exfat-utils

// NTFSフォーマットの有効化
$ sudo apt-get install ntfs-3g
```

# 14. GUI（openmediavault）へアクセス
- 手順13まで完了していれば、Chromeなどのブラウザソフトから、GUI（openmediavault）へアクセスできるかと思います。

- ご自身の環境に合わせて、いずれかのURLでアクセスしてください。
http://IPアドレス/
http://192.168.XXX.XXX
http://任意のホスト名.local/
http://raspberrypi.local/

ユーザ名：admin
パスワード：openmediavault

![omv5.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/240522/d268aac4-48a2-07a7-f4e5-72b5a1d49633.png)

# 15. イーサネットの追加
- この手順でセットアップした場合は、ご自身でイーサネットの追加を行う必要があります。
- 設定変更後は、保存→適用をおこなうと反映されます。

```plaintext:イーサネットの追加手順
// イーサネットの追加手順
システム → ネットワーク → インターフェース → 追加 → イーサネット

名前：eth0
メソッド：DHCP
```

![インターフェース追加.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/240522/87895057-caa9-3a31-d09b-1edc5f49fc81.png)

![DHCP.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/240522/32118c8c-a323-51d9-c0b0-f0154e035684.png)

![適用.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/240522/7053d1f8-717a-c665-ad22-5189d249d450.png)

16. openmediavaultの使い方
- 使い方については、以下のサイトが参考になるかと思いますので、ご自身の環境に合わせて設定反映してみてください。

参考：[初心者でもラズパイでNASサーバーを作ってみよう！](https://raspida.com/make-nas-rpi)
参考：[openmediavaultでexfatの外付けハードディスクを利用する](https://raspida.com/omv-exfat)

- 設定反映のポイントとしては、以下の手順で設定をおこなうとNASが使えるようになるかと思います、参考まで。

```plaintext:openmediavault設定反映の手順
// openmediavault設定反映の手順
- サービス→SMB/CIFCS→有効→適用
- ストレージ→ディスク→スキャン（ストレージの認識）
- ストレージ→ファイルシステム→マウント→適用
- アクセス権の管理→共有フォルダ→追加
- アクセス権の管理→ユーザー→追加→適用
- アクセス権の管理→ユーザー→特権（読み／書き）→適用
- サービス→SMB/CIFCS→共有タブ→追加→適用
```

- 補足：RaspberryPi3B+と、RaspberryPi4とでNASへのアクセス速度を比べてみましたが、私の検証環境では、アクセス速度は変わらず、読み書きともに10～12MB/s程度となりました。もし、RaspberryPi4にてNASアクセス速度を向上させる方法をご存知の方がいらっしゃいましたら、ぜひ、コメント投稿にてお知らせください。

- 追記（2019/12/14）：RaspberryPi4をハブ経由接続ではなく、ルーター直接続に切り替えることでアクセス速度を50MB/s程度まで向上させることができました。（クライアントPCはWi-F

- 追記（2019/12/14）：RaspberryPi4をハブ経由接続ではなくルーター直接続、またクライアントPCも有線LANによるルーター直接続に切り替えることでアクセス速度を100MB/s程度まで向上させることができました。

![アクセス速度.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/240522/9bb72847-4bae-09d3-5093-1f32d25e4ced.png)

# 16. おわりに
いかがでしたでしょうか？意外と簡単にRaspberry pi 4 でのNAS（openmediavault）を構築できたのではないかなと思います。
今回の記事が、みなさまの学習の参考になれば幸いです。

2019/12/14 TAKAHIRO NISHIZONO