NanoPi NEO2でNASを構築してみる

#はじめに
秋月電子通商で超小型のarmボードであるNanoPi NEO2が買えるようになりました。

[40×40mmの極小ボード「NanoPi NEO2」、秋月電子通商で税込2,400円](https://akiba-pc.watch.impress.co.jp/docs/news/news/1115433.html)

加えて、このNanoPi用のNASキットも同時に買えるとのことで、今回はこれらを使ってNASを構築してみます。

【4/11追記】
Facebookグループに[「NanoPIの部屋」](https://www.facebook.com/groups/131561651024605/)ができました。そこでいただいたアドバイスを反映しました。

#必要なもの

当然、[NanoPi NEO2](http://akizukidenshi.com/catalog/g/gM-12302/)に[NASケースキット](http://akizukidenshi.com/catalog/g/gM-12591/)は必要ですが、それ以外に

* 接続する2.5inch HDD or SSD
* １２v　ACアダプター
* ハンダゴテとハンダ
* シリアルケーブル (もしくは、USBシリアルアダプタ＋ジャンパーワイヤー）

が必要です。

ACアダプターのプラグ規格は、外径:5.5mmΦ 内径:2.1mmΦ、極性はセンタープラスのものが使用できます。
必要な出力電流値はSSDだと1A、HDDだと2A、その他に接続するものあれば、その分を加えたものを用意する必要があります。


#設定

##イメージの用意
2018.4.8現在、[オフィシャル](https://www.mediafire.com/folder/ah4i6w029912b/NanoPi-NEO2)としては以下の３つが用意されていました。

- nanopi-neo2_debian-nas-jessie_4.14.0_20171208.img.zip
- nanopi-neo2_FriendlyCore-Xenial_4.14.0_20171208.img.zip
- nanopi-neo2_ubuntu-oled_4.14.0_20171208.img.zip

NAS用はnanopi-neo2_debian-nas-jessie_4.14.0_20171208.img.zipを使用することになります。ファイル名から想像つくように、Debian8(jessie)ベースです。インストール後に確認した結果は以下。

```
root@FriendlyELEC:~# cat /etc/debian_version
8.8
```

[ここ](http://wiki.friendlyarm.com/wiki/index.php/NanoPi_NEO2#Get_Image_File)や[ここ](http://wiki.friendlyarm.com/wiki/index.php/NanoPi_NEO2#Software_Features)をみると、残りの２つはUbuntu Coreの16.04(Xenial)ベースのようです。

##イメージのSDへの書き込み

[公式Wiki](http://wiki.friendlyarm.com/wiki/index.php/NanoPi_NEO2#Get_Started)では、Win32DiskiMagerでの書き込みが紹介されています。今回、私もWindowsからWin32DiskiMagerを使って書き込みました。また、[Etcher](https://etcher.io/)もお手軽で最近人気です（Mac/Linux版もあります）。


##初期セットアップ

Raspberry piとは異なり、NanoPiはHDMIを持たないので、接続はネットワークもしくはシリアルコンソールから行います。まずはシリアルコンソールで接続します。

シリアルの接続ピンは、[ここ](http://wiki.friendlyarm.com/wiki/index.php/NanoPi_NEO2#Diagram.2C_Layout_and_Dimension)にあるのですが、私が秋月で購入したものは、１世代古いもののようで、オーディオピンの位置が若干異なります。
[こちら](http://wiki.friendlyarm.com/wiki/index.php/File:NEO2_pinout-02.jpg)の方で古いものは見ることができました。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/51272/33ca2d57-2aea-23d7-3f61-1ac423449782.png)

手持ちのスイッチサイエンスさんの[USBシリアル変換アダプター](https://www.switch-science.com/catalog/2782/)を使って接続しました。


ネットワーク設定は以下のように有線はDHCPの設定になっていました。

```Bash:/etc/network/interfaces
# interfaces(5) file used by ifup(8) and ifdown(8)
# Include files from /etc/network/interfaces.d:
source-directory /etc/network/interfaces.d

allow-hotplug eth0
        iface eth0 inet dhcp

allow-hotplug wlan0
iface wlan0 inet dhcp
        wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
```

avahi-daemonも動いていたので、DHCPサーバがあるネットワークで有線を繋いでroot@FriendlyELEC.localでアクセスすることができるのではと思います。ただし、SSHの設定(/etc/ssh/sshd_config)をみたところ、ユーザpiではsshで入れない設定になっていましたので注意です。

私はWLANを使って接続したかったので、シリアルを接続してからwpa_supplicant.confに設定を記載してから、WiFiドングルを挿入したところ無事に接続することができました。

WiFiドングルですが、手持ちの２つで試した結果は以下です。

|品名|結果|チップセット|適用されたドライバ|備考|
|:---|:---|:---|:---|:---|
|Buffalo WLI-UC-GNM2|OK|Ralink RT8070|rt2800usb||
|Planex GW-USNano2|一応OK|Realtek RTL8188CUS|rtl_usb|なぜかwlan1にリネームされるので、wlan1として設定・起動すると利用できた|

これでネットワークへの接続はできたので、実際にケースに組み込んで起動し、あとはネットワークから接続して設定をすすめます。

#状況確認

まずは、apt updateした後でのdfは以下。SDは８GBを使用しています。

```
root@FriendlyELEC:~# df
Filesystem     1K-blocks    Used Available Use% Mounted on
udev              235976       0    235976   0% /dev
tmpfs              49392   13124     36268  27% /run
/dev/mmcblk0p2   7496880 1860652   5619844  25% /
tmpfs             246952       0    246952   0% /dev/shm
tmpfs               5120       0      5120   0% /run/lock
tmpfs             246952       0    246952   0% /sys/fs/cgroup
tmpfs             246952       0    246952   0% /tmp
/dev/mmcblk0p1    102182   17316     84866  17% /boot
tmpfs              49392       0     49392   0% /run/user/0
```

dmsgをみると

```
[    2.597135] scsi host0: uas
[    3.082824] scsi 0:0:0:0: Direct-Access     JMicron  Tech             0227 PQ: 0 ANSI: 6
[    3.094559] sd 0:0:0:0: Attached scsi generic sg0 type 0
[    3.101056] sd 0:0:0:0: [sda] 234441648 512-byte logical blocks: (120 GB/112 GiB)
[    3.108718] sd 0:0:0:0: [sda] 4096-byte physical blocks
[    3.116293] sd 0:0:0:0: [sda] Write Protect is off
[    3.121290] sd 0:0:0:0: [sda] Mode Sense: 5f 00 00 08
[    3.131767] sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[    3.151904]  sda: sda1
[    3.161070] sd 0:0:0:0: [sda] Attached SCSI disk
```

ＪＭｉｃｒｏｎのチップを見つけて、接続しているIntelのSSD（１２０GB）を見つけてくれてます。

psをみると

```
・・・
root       831  0.0  3.4  31816 17028 ?        S    11:26   0:01 omv-engined   
root       838  0.0  3.8  92600 19196 ?        Ss   11:26   0:00 php-fpm: master process (/etc/php5/fpm/php-fpm.conf)                    
root       844  0.0  0.4  16320  2364 ?        Ss   11:26   0:00 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
www-data   845  0.0  0.7  16636  3632 ?        S    11:26   0:00 nginx: worker process                           
www-data   846  0.0  0.7  16636  3632 ?        S    11:26   0:00 nginx: worker process                           
www-data   847  0.0  0.6  16636  3432 ?        S    11:26   0:00 nginx: worker process                           
www-data   848  0.0  0.6  16636  3436 ?        S    11:26   0:00 nginx: worker process                           
www-data   849  0.0  1.3  92568  6708 ?        S    11:26   0:00 php-fpm: pool www                                                       
www-data   850  0.0  1.3  92568  6708 ?        S    11:26   0:00 php-fpm: pool www 
・・・
snmp       867  0.1  1.2  12980  6228 ?        S    11:26   0:02 /usr/sbin/snmpd -Lsd -Lf /dev/null -u snmp -g snmp -I -smux mteTrigger mteTriggerConf -
root       884  0.0  1.0  21520  4960 ?        Ss   11:26   0:00 /usr/sbin/nmbd -D
root       894  0.0  2.7  35540 13484 ?        Ss   11:26   0:00 /usr/sbin/smbd -D
root       899  0.0  1.1  35540  5852 ?        S    11:26   0:00 /usr/sbin/smbd -D
・・・
```
というように、OpenMediaVaultとそのWebフロントエンド（nginxなんですな）に、SambaにSNMPも動いてました。

ということで`http://friendlyelec.local/`にアクセスすると
![image.png](https://qiita-image-store.s3.amazonaws.com/0/51272/6237eccb-86f4-9997-7286-f63688e961f9.png)

と出るのでadmin/openmediavaultでログイン。言語は日本語も選択できました。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/51272/00d7a6ee-73b2-95e7-b526-53c9e95ebd97.png)

で、次に、「ストレージ」の「物理ディスク」を見ると、

![image.png](https://qiita-image-store.s3.amazonaws.com/0/51272/1f51fd1f-19db-c01a-85be-1d78fb9f802e.png)

ちゃんと認識されていました。あら簡単。

#設定編

使用したSSDは、Windowsで内容をきれにフォーマットしただけの状態で、OpenMediaVault上からはそのまま利用できなかったため、

* コマンドラインからfdiskでLinuxのプライマリーパーティションを作成した後
* 再度、OpenMediaVaultにもどり
* 「ストレージ」の「ファイルシスムテム」から、「作成」を行い
* 「マウント」する

ことで以下のように利用できるようになりました。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/51272/14041928-0168-5672-4b06-328ff25b777c.png)

コンソールからdfをすると、以下のようにマウントされてました。

```
root@FriendlyELEC:~# df
Filesystem     1K-blocks    Used Available Use% Mounted on
udev              235976       0    235976   0% /dev
tmpfs              49392   13136     36256  27% /run
/dev/mmcblk0p2   7496880 1861408   5619088  25% /
tmpfs             246952       0    246952   0% /dev/shm
tmpfs               5120       0      5120   0% /run/lock
tmpfs             246952       0    246952   0% /sys/fs/cgroup
tmpfs             246952       8    246944   1% /tmp
/dev/mmcblk0p1    102182   17316     84866  17% /boot
tmpfs              49392       0     49392   0% /run/user/0
/dev/sda1      115247688   61464 115169840   1% /srv/dev-disk-by-id-usb-JMicron_Tech_00000000477D-0-0-part1
```
ちなみに、

```
root@FriendlyELEC:/srv# ls -al
total 16
drwxr-xr-x  4 root root    4096 Apr  9 12:58 .
drwxr-xr-x 22 root root    4096 Jan  1  1970 ..
drwxr-xr-x  3 root root    4096 Apr  9 13:08 dev-disk-by-id-usb-JMicron_Tech_00000000477D-0-0-part1
drwxr-xr-x  2 ftp  nogroup 4096 Apr  8  2017 ftp
```

と/srvの配下にftp用のフォルダがありました。

#最後に

ということで、あっさりとNASシステムができあがりました！

普通にNASとして使うならこれで十分やっていけそうな気がします。（熱の問題や長期ランニングについてはどうかわかりませんが）

ただ、私としては、Ubuntu CoreのXenialでストレージを使いたいので、次はそちらのイメージを使って、ストレージを使用できるかを確かめてみようと思います。