ROCK64をNASにする

先日、ファイルサーバ(NAS)用にシングルボードコンピュータを新調したい、という記事を書きましたが、熟考の末 ROCK64 を購入しました!

base on NAS用シングルボードコンピュータを新調する – あららぼ

今回は ROCK64 1GB モデル か NanoPi シリーズで検討することにしました。

早速、NAS 化したいと思います。

機種

  • ROCK64 1GB

仕様

今回、1GB モデルを購入しました。
複数モデルがありますが、違うのはメモリ容量だけ(1, 2, 4GB)です。

  • Rockchip RK3328 Quad-Core SOC with Mali 450MP2
  • LPDDR3 RAM 1GB
  • Gigabit Ethernet
  • 2x USB 2.0 Host, 1x USB 3.0 Host
  • 3.5mm Barrel Power (5V 3A) Port

詳細は下記公式サイトをご参照ください。

ROCK64 | PINE64

余談

1GB モデルの本体価格は、公式サイトでは最も安い船便を利用しても $36.85 です。
【内訳】本体価格:$24.95、船便:$11.99。
加えて、1GB モデルは在庫切れです。

今回は秋葉原に店舗を構えている秋月電子通商さんで購入しました。
1台 ¥4,280(税込)ですが、船便で 3週間〜1ヶ月くらい掛かることを考えると一考の価値があるのではないでしょうか。
【内訳】本体価格:¥3,780、配送費:¥500。

サプライ

本体と併せて買ったものは下記 2点です。

  • DC ケーブル
    内径1.35mm / 外径3.5mm センタープラスのもの。
  • ケース
    Raspberry Pi 3 Model B 向けのアクリルケース。
    ※Raspberry Pi 3 Model B とコネクタ位置が一致するため(ケース・ヒートシンク一体型などのシビアな設計でなければ)問題なく収まります。
    ただし、電源コネクタ部分が(microUSB ではなく)DC コネクタのため加工が必要です。
    私は、半田ごてで穴を広げて使っています。

セットアップ

OS

当ブログでも度々ご紹介している OS Armbian をインストールしました。

今回は Ubuntu 版を導入したかったのでダウンロードページ下部にある Recommended download からダウンロードしました。
※メインからダウンロードするとデスクトップ環境 xfce 付きのイメージファイルがダウンロードされます。

Rock64 – Armbian https://www.armbian.com/rock64/#kernels-archive-all

Recommended download
Builds were tested for booting and basic operations.

なお、microSD カードへの書込は当ブログおなじみの Etcher を使っています。

イメージ書き込みツール Etcher が便利 – あららぼ

起動

OS 導入後、通電してしばらくすると起動します。
初回はパスワードの設定を促されるので、そのまま設定してしまいましょう。

固定IP化

サーバとして利用するので、IPアドレスを固定化します。

Armbian は(Debian 版でも)オリジナルの Debian とは異なり、IPアドレス設定方法は従来から変わっていません。

Armbian(Ubuntu系)のN/W設定 – あららぼ https://ararabo.com/2018-02-14/?p=4708

私は、interfaces.d ディレクトリ配下にファイルを作成するのが好みなので、下記のように作成しました。

# cat /etc/network/interfaces.d/default
# Wired adapter #1
allow-hotplug eth0
no-auto-down eth0
iface eth0 inet static
address 192.168.***.***
netmask 255.255.255.0
gateway 192.168.***.***
dns-nameservers 8.8.8.8 8.8.4.4

ファイルを保存したら、再起動して IP アドレスが反映されていることを確認しましょう。

ファイルサーバ化

NAS(ファイルサーバ)化するので、必要なパッケージの導入と設定を行います。

パッケージ導入

OS のアップデートをした後、必要となるパッケージを導入します。

# apt update -y && apt dist-upgrade -y

# apt install samba cifs-utils

The following NEW packages will be installed:
  cifs-utils libavahi-client3 libavahi-common-data libavahi-common3 libcups2 libldb2 libtalloc2
  libtevent0 libwbclient0 python3-crypto python3-dnspython python3-ldb python3-samba
  python3-talloc python3-tdb samba samba-common samba-common-bin samba-libs tdb-tools
0 upgraded, 20 newly installed, 0 to remove and 0 not upgraded.
Need to get 9,837 kB of archives.
After this operation, 66.4 MB of additional disk space will be used.
Do you want to continue? [Y/n] 

外部ディスクのマウント

パッケージ cifs-utils の導入が終わったら、Rock64 に USB ディスクをつないでマウントします。

まず、ディスクが認識されていることを確認します。
今回は 250GB のディスクを接続しています。

# fdisk -l
Disk /dev/sda: 232.86 GiB, 250014072832 bytes, 488308736 sectors
Disk model: 1               
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 4096 bytes / 33553920 bytes
Disklabel type: gpt
Disk identifier: 9D92B423-0551-4534-B16E-4FE03D14E63B

ディスクをマウントするため、一意の id(UUID)を取得します。
下記例では d3de22a6-011e-440c-b344-7b47e582f8a9 です。

# blkid
/dev/sda1: LABEL="RAID1" UUID="d3de22a6-011e-440c-b344-7b47e582f8a9" SEC_TYPE="ext2" TYPE="ext3" PARTUUID="623ce170-1c1b-451b-a9ac-4f01bd654f6c"

取得した UUID を元にファイル fstab に記述して、再起動します。

# diff -u /tmp/fstab /etc/fstab 
--- /tmp/fstab  2021-03-21 08:21:57.412820785 +0900
+++ /etc/fstab  2021-03-21 08:22:47.629030708 +0900
@@ -1,2 +1,3 @@
 UUID=1bce780c-130d-4b04-834a-816bb9b93608 / ext4 defaults,noatime,commit=600,errors=remount-ro 0 1
 tmpfs /tmp tmpfs defaults,nosuid 0 0
+UUID=d3de22a6-011e-440c-b344-7b47e582f8a9 /media/usb250gb ext4 defaults,noatime,nodiratime,commit=600,errors=remount-ro 0 1

# reboot

起動して、ディスクをマウントできていることを確認します。

ファイル共有

マウントしたディスクを公開します。

クライアント設定

Rock64 へ接続する側の設定になります。
※Windows PC の場合は不要です。

media ディレクトリ配下にからディレクトリを作成します。
下記例では usb250gb の部分。

# mkdir /media/usb250gb/
# ls -lhd /media/usb250gb/
drwxr-xr-x 4 root root 4.0K  3月  7  2020 /media/usb250gb/

サーバ設定

Rock64 側の設定です。

smb.conf

設定ファイル smb.conf を編集します。

# diff -u smb.conf_org20210320 smb.conf
--- smb.conf_org20210320    2021-03-20 21:34:06.595563015 +0900
+++ smb.conf    2021-03-21 08:17:03.130056059 +0900
@@ -240,3 +240,12 @@
 # to the drivers directory for these users to have write rights in it
 ;   write list = root, @lpadmin

+[external]
+   comment = samba Directory
+   browseable = yes
+   path = /media/usb250gb
+   guest ok = no
+   writable = yes
+   create mask = 0764
+   directory mode = 0764
+   share modes = yes
  • [*****]
    カッコ内に共有フォルダ名を記述します。 ※ここでは external を指定。

    • comment
      フォルダを開いた際のコメントになります。
    • browseable
      ファイル一覧を許可するか否かの設定です。 ※ここでは許可 yes を指定。
    • path
      マウントに利用するパスを指定します。 ※ここでは上記で作成したディレクトリ /media/usb250gb を指定。
    • guest ok
      ゲストユーザーを許可するか否かの設定です。 ※ここでは拒否 no を指定。
    • writable
      書込権限を付与するか否かの設定です。 ※ここでは許可 yes を指定。
    • create mask
      Samba 経由でファイル作成する際の権限を指定します。
    • directory mode
      Samba 経由でディレクトリ作成する際の権限を指定します。
    • share modes
      ファイルのロック確認を行うか否かの設定です。 ※ここではファイルロックの確認を行う yes を指定。
pdbedit

Samba サービスにユーザ情報を登録します。
下記例でのユーザ名は testuser

$ sudo pdbedit -a testuser

なお、OS 側に存在しないユーザの場合はユーザ登録を先に行います。

$ sudo useradd testuser
$ sudo passwd testuser

NAS への接続

サーバ(Rock64)を再起動した後、クライアントからコマンドを打ってファイル共有を確認します。

# mount -t cifs -o username=testuser,rw,file_mode=0777,dir_mode=0777 //192.168.***.***/external /media/usb250gb
  • mount コマンドのオプション
    -t
    ファイルタイプ(ファイル共有プロトコル)を指定します。 ※ここでは cifs を指定。

    • o
      オプションの指定(各オプションをカンマ区切りで指定する)。

      • username
        接続に使用する資格情報を指定します。 ※ここでは上記で作成した testuser を指定。
      • マウント時のモード
        ファイルシステムをマウントする際のモードを指定します。 ※ここでは初期値 rw(読み書き可能)を指定。
      • file_mode, dir_mode
        ファイル共有時に使用するアクセス権を指定します。 ※ここでは初期値 0777 を指定。
    • サーバパス
      接続先のパスを指定します。 ※ここでは上記で作成したディレクトリへのパス //192.168.***.***/external を指定。
    • マウントパス
      クライアント(ローカル)に作成したディレクトリを指定します。 ※ここでは上記で作成したディレクトリ /media/usb250gb を指定。