NanoPi
NanoPi-NEO2

NanoPi NEO2でNASを構築してみる

はじめに

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

40×40mmの極小ボード「NanoPi NEO2」、秋月電子通商で税込2,400円

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

【4/11追記】
Facebookグループに「NanoPIの部屋」ができました。そこでいただいたアドバイスを反映しました。

必要なもの

当然、NanoPi NEO2NASケースキットは必要ですが、それ以外に

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

が必要です。

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

設定

イメージの用意

2018.4.8現在、オフィシャルとしては以下の3つが用意されていました。

  • 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

ここここをみると、残りの2つはUbuntu Coreの16.04(Xenial)ベースのようです。

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

公式Wikiでは、Win32DiskiMagerでの書き込みが紹介されています。今回、私もWindowsからWin32DiskiMagerを使って書き込みました。また、Etcherもお手軽で最近人気です(Mac/Linux版もあります)。

初期セットアップ

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

シリアルの接続ピンは、ここにあるのですが、私が秋月で購入したものは、1世代古いもののようで、オーディオピンの位置が若干異なります。
こちらの方で古いものは見ることができました。

image.png

手持ちのスイッチサイエンスさんのUSBシリアル変換アダプターを使って接続しました。

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

/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ドングルですが、手持ちの2つで試した結果は以下です。

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

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

状況確認

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

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

JMicronのチップを見つけて、接続しているIntelのSSD(120GB)を見つけてくれてます。

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

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

image.png

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

image.png

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

設定編

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

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

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

image.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でストレージを使いたいので、次はそちらのイメージを使って、ストレージを使用できるかを確かめてみようと思います。