HAVRMの空空活動誌

「空空」は「うつらうつら」と読むらしいです.まぁ常に寝不足なもんで...

Rock Pi 4A v1.4+Penta SATA HATによるNAS構築 Vol. 4 ~HDDの認識とNASのセットアップ@Ubuntu Server 18.04~

こんにちは,HAVRMです.

前回は「Ubuntu Server 20.04」でHDDの認識に失敗したので,「Ubuntu Server 18.04」をインストールしなおし,再挑戦します.

前回↓
havrm.hatenablog.com

前回からの簡単な説明

組み立てが終わったのでHDDを認識しようとしたら,認識してくれませんでした.というのも公式で確認されているのは「Ubuntu Server 18.04」で,現在使っている「Ubuntu Server 20.04」は未確認だからです.ということで改めて「Ubuntu Server 18.04」でやり直していこうと思います.

初回↓
havrm.hatenablog.com

「Ubutnu Server 18.04」のイメージ作成

基本的には初回でやったのと同じようにインストールしていきます.

マイクロSDカードの取り外し

書き込むためにはマイクロSDカードを取り出す必要があります(Rock Pi 4AにはUSB3.0 OTGがあるのでRock Pi 4Aをライター代わりに使うこともできるのかもしれないです).ただすでにHATを取り付けたため,外すのは大変(やったことがある人はよくわかると思います)です.2×20のしっかりとはまったピンソケットは外す際にピンヘッダが曲がる可能性もあり,あまりやりたくはないです.
ということでマイクロSDカードをふさいでいるのはフラットケーブルなのでこれを外しちゃいましょう.ただ,HAT側のコネクタは内側にあるので,アクセスが大変(というより無理?)なので,PCIE2FPC側を外します.
第2回ででのコネクタのつなげ方の逆をやればいいので,バーを外して,コネクタを引っこ抜けばいいです.

第2回↓
havrm.hatenablog.com

実際にフラットケーブルを抜くとこのようになります.

フラットケーブルを抜いた様子

OSイメージのダウンロード

ということで,OSイメージを探したのですが,現在のダウンロードサイトを遡っても「Ubuntu Server 20.04」しかなく,「Ubuntu Server 18.04」がないです.改めて「rockpi 4B ubutnu 18.04」と調べると古いRadxaのホームページが見つかりました.

rockpi.eu

ちょうど当時のダウンロードページを引いたみたいで,「Ubuntu Server 18.04」がありました.念のためリンクを貼っておきます.クリックするとダウンロードが始まります.

Ubuntu Server 18.04

この時ダウンロードされるのは「rockpi4b-ubuntu-bionic-minimal-20190104_2101-gpt.img.gz」のみでした.

OSイメージのインストール

このファイルを「balenaEtcher」で指定し,OSを上書きします.この時ドライブが4つに分かれていますが,そのままドライブを選択すると全体に上書きしてくれました.

OSの起動とセットアップ

ということで,マイクロSDを挿しなおし,フラットケーブルも挿入しなおして起動します.あらかじめHDDは挿しておきます.

OSの起動

ここは初回と同じようにユーザ名とパスワードがともに「rock」です.ただ最初起動したときは画面がHDではなく,640×480で表示されていました.またSSHもインストールされていませんでした.さらにインジケータのRock Pi 4A上の青色LEDが全く光らず,調べてみましたが,光らせる方法が見つかりませんでした(泣).LEDを光らせるためにはあるファイルに状態等書く必要があるのですが,そのファイル自体がなく,お手上げです...
なお「Ubuntu Server 20.04」ではコマンドラインの「$」の前は初期状態で「rock@rockpi-4b」でしたが,「Ubuntu Server 18.04」の場合,「rock@linux」でした.

HDDを認識しているかの確認

これでHDDを認識できなかったらどうしようもないので,とりあえず「fdisk」で確認してみます.この時は3.5inchの6TBのHDDを挿入しています.
なおsudo実行時にパスワードを入力するための行については以降で表示しません.

$ sudo fdisk -l
Disk /dev/ram0: 4 MiB, 4194304 bytes, 8192 sectors
...

Disk /dev/sda: 5.5 TiB, xxxxxxxxxxxxxxxxxx bytes, xxxxxxxxxx sectors
Units: sectors of 1 * xxx = xxx bytes
Sector size (logical/physical): xxx bytes / xxx bytes
I/O size (minimum/optimal): xxx bytes / xxx bytes

Disk /dev/mmcblk0: xx.xx GiB, xxx bytes, xxx sectors
...

認識されました!!
これで安心して作業が進められます.

SSHのインストール

とはいえ,Rock Pi 4Aのコンソールで作業するのはコピー等できず,面倒なのでSSHをインストールします.

# 先にアップデート・アップグレードを行います
$ sudo apt update
...
$ sudo apt -y upgrade
...

# SSHをインストールします.
$ sudo apt install openssh-server
...

なおupdateの時,「PUBKEY」が違います等,複数のWarningが表示されましたが,Fatalではないので無視します.
インストール後はSSHが自動で起動するので,SSHでログインできることを確認し,「$ exit」でログアウトします.というのもこの後ユーザ名の変更を行うのでログインしたままだと変更できないからです.
なおこれ以降はSSHで作業しています.

ユーザ名・パスワードの変更

ということでユーザー名とパスワードを変更します.前回は新しいユーザを作って削除する方法でしたが,この時のオプションのせいか,次のような問題が起きてました.

  • 「Tab」や「↑」,「↓」が使えず,毎回同じコマンドを全部書かないといけない
  • 「$」の前に「ユーザ名」や「PC名」が表示されない.

ということで初回ブログでも紹介したブログを見ながらユーザ名を変更していきます.

nekodeki.com

まずは最初からある「rock」ユーザで設定変更用のユーザを作成します.

# まず設定変更用のユーザ(tester)を作成します
$ sudo useradd -m tester

# このユーザにsudo権限を与えます
$ sudo usermod -G sudo tester

#このユーザのパスワードを指定します
$ sudo passwd tester
Enter new UNIX password: <testerのパスワード>
Retype new UNIX password: <testerのパスワード>
passwd: password updated successfully

# ログアウトします.
$ exit

次に作成したユーザ「tester」で「rock」ユーザを変更していきます.ということで「tester」でログインしなおし

# ユーザ名を変更します
$ sudo usermod -l <新しいユーザー名> rock

# ユーザ名が変更されたか確認します
$ cat /etc/passwd
root ...
...
tester:x:1001:1001::/home/tester:/bin/sh   # ←今ログインしているユーザ
<新しいユーザ名>:x:1000:1000:ROCK Pi,912,,:/home/rock:/bin/bash
# ↑「rock」から変更したユーザ

# ホームディレクトリの位置を新しいユーザ名に変更します
$ sudo usermod -d /home/<新しいユーザ名> -m <新しいユーザ名>

# ホームディレクトリが変更されたことを確認します
$ cat /etc/passwd
root ...
...
tester:x:1001:1001::/home/tester:/bin/sh
<新しいユーザ名>:x:1000:1000:ROCK Pi,912,,:/home/<新しいユーザ名>:/bin/bash
# ↑「/home/rock」から変更されました

# パスワードも変更します
$ sudo passwd <新しいユーザ名>
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully

# ユーザに関するコメントを「新しいユーザ名」に変更します
$ sudo usermod -c <新しいユーザ名> <新しいユーザ名>

# 変更されたことを確認します
$ cat /etc/passwd
root ..
...
tester:x:1001:1001::/home/tester:/bin/sh
<新しいユーザ名>:x:1000:1000:<新しいユーザ名>:/home/<新しいユーザ名>:/bin/bash
# ↑「ROCK PI」から変更されました

# 変更したユーザにsudo権限を与えます
$ sudo usermod -G sudo <新しいユーザ名>

# ログアウトします
$ exit

ということで新しいユーザ名に変更できました.
では設定用に作った「tester」ユーザを削除しましょう.新しいユーザでログインしなおし,

# まずは新しいユーザでsudo権限が実行できるか見ます
$ sudo apt update
...

# 「tester」ユーザを削除します
$ sudo userdel -r tester
userdel: tester mail spool (/var/mail/tester) not found

ということでユーザ名についての変更は完了です.きちんと「Tab」や「↑」,「↓」も使えて満足です.

削除されているパッケージのインストール

SSHでログインした際に次のようなメッセージが表示されていました.

Welcome to Ubuntu 18.04.6 LTS (GNU/Linux 4.4.154-59-rockchip-xxxxxxxx aarch64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage
This system has been minimized by removing packages and content that are
not required on a system that users do not log into.

To restore this content, you can run the 'unminimize' command.

どうやら必要最低限しか事前インストールされておらず,「unminimize」コマンドで標準搭載されているコマンドをインストールしてくれるようです.

最初にいろいろ注意書きがあり,「続けますか」と聞かれるので「y」を入力して実行します.

$ sudo unminimize
This system has been minimized by removing packages and content that are
not required on a system that users do not log into.

This script restores content and packages that are found on a default
Ubuntu server system in order to make this system more suitable for
interactive use.

Reinstallation of packages may fail due to changes to the system
configuration, the presence of third-party packages, or for other
reasons.

This operation may take some time.

Would you like to continue? [y/N] y

Re-enabling installation of all documentation in dpkg...
Updating package list and upgrading packages...
Hit ...
...

これにはおよそ8分半かかりました.何度か「apt-get」を繰り返していたようです.

HDDの初期化とマウント

ということで初期セットアップが終わったのでNASの構築に移ります.ただHDDは新品でパーティションも何もないのでHDDの初期化から始める必要があります.
なお今回使ったHDDは次のものです.

HDDの初期化

「fdisk」コマンドでも初期化はできますが,2TB以上はできません.そのため「gdisk」を使います.参考にしたサイトは↓です.

www.nemotos.net
www.nemotos.net

ということでHDDの全体をNTFS(HDDの標準フォーマット)にフォーマットします

# 改めてHDDのディスク名を確認します.
$ sudo fdisk -l
Disk /dev/ram0: 4 MiB, 4194304 bytes, 8192 sectors
...

Disk /dev/sda: 5.5 TiB, xxxxxxxxxxxxxxxxxx bytes, xxxxxxxxxx sectors
Units: sectors of 1 * xxx = xxx bytes
Sector size (logical/physical): xxx bytes / xxx bytes
I/O size (minimum/optimal): xxx bytes / xxx bytes

Disk /dev/mmcblk0: xx.xx GiB, xxx bytes, xxx sectors
...

# HDDのディスク名「/dev/sda」に対し作業を行います
$ sudo gdisk /dev/sda
GPT fdisk (gdisk) version 1.0.3

Partition table scan:
  MBR: not present
  BSD: not present
  APM: not present
  GPT: not present

Creating new GPT entries.

# 記事にある通り,パーティションを「n」で作成します
# 特にいじることもないのでそのまま「Enter」で進みます
Command (? for help): n
Partition number (1-128, default 1):
First sector (34-11721045134, default = 2048) or {+-}size{KMGTP}:
Last sector (2048-11721045134, default = 11721045134) or {+-}size{KMGTP}:
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300):
Changed type of partition to 'Linux filesystem'

# 次にパーティションテーブルを確認します
Command (? for help): p
Disk /dev/sda: xxxxxxxxxxxxx sectors, 5.5 TiB
Model: WDC WD60EZAZ-00S
Sector size (logical/physical): xxx/xxx bytes
Disk identifier (GUID): xxxxxxxxxxxxxxxxxxxxxxx
Partition table holds up to xxx entries
Main partition table begins at sector xx and ends at sector xx
First usable sector is xx, last usable sector is xxxxxxxx
Partitions will be aligned on xxxxxxxxx boundaries
Total free space is xxxx sectors (xxxxx KiB)

Number  Start (sector)    End (sector)  Size       Code  Name
   1            xxxx     xxxxxxxxxx   5.5 TiB     8300  Linux filesystem

# 最後に書き込みます
# 途中で確認されるので「Y」を入力します
Command (? for help): w

Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
PARTITIONS!!

Do you want to proceed? (Y/N): Y
OK; writing new GUID partition table (GPT) to /dev/sda.
The operation has completed successfully.

# ちゃんとパーティションが作られたか確認します
$ sudo fdisk -l
Disk /dev/ram0: 4 MiB, 4194304 bytes, 8192 sectors
...

Disk /dev/sda: 5.5 TiB, xxxxxxxxxxxxxxxxxx bytes, xxxxxxxxxx sectors
Units: sectors of 1 * xxx = xxx bytes
Sector size (logical/physical): xxx bytes / xxx bytes
I/O size (minimum/optimal): xxx bytes / xxx bytes
Disklabel type: gpt
Disk identifier: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Device     Start         End     Sectors  Size Type
/dev/sda1   xxxx xxxxxxxxxxx  5.5T Linux filesystem


Disk /dev/mmcblk0: xx.xx GiB, xxx bytes, xxx sectors
...

# /dev/sda1ができていることを確認しました
# これをNTFSにフォーマットします
# 「-Q」でクイックフォーマットにしないと
# とても時間がかかりそうでした
$ sudo mkfs.ntfs -Q -L rockhdd-1 /dev/sda1
Cluster size has been automatically set to xxxx bytes.
Creating NTFS volume structures.
mkntfs completed successfully. Have a nice day.

# ちゃんとNTFSにフォーマットされているか確認します
$ sudo parted -l
Model: ATA WDC WD60EZAZ-00S (scsi)
Disk /dev/sda: 6001GB
Sector size (logical/physical): xxxB/xxxxB
Partition Table: gpt
Disk Flags:

Number  Start   End     Size    File system  Name              Flags
 1      xxxxkB  6001GB  6001GB  ntfs         Linux filesystem


Model: SD SD64G (sd/mmc)
...

ということでHDDを初期化し,NTFSのフォーマットすることができました.

HDDのマウント

今の状態ではHDDの認識はしていても,マウントしてないのでファイルにアクセスできない状態です.そこでシステム上に専用のフォルダを作成し,マウントします.
通常,マウントファイルは「/mnt」下に置きます.

なおここからはNAS化の作業に当たり,これ以降のNASのセットアップも合わせて以下のサイトを参考にしています.
piro.sakura.ne.jp

# 「/mnt」直下に専用のフォルダを作成する
# ここでは「rockhdd-1」としていますがなんでもいいです
$ sudo mkdir -p /mnt/rockhdd-1

# マウントしたい領域のUUID(固有ID)を調べる
$ sudo blkid
...
/dev/sda1: LABEL="rockhdd-1" UUID="xxxxxxxxxxx" TYPE="ntfs" ...
...

# 自動でマウントするよう設定する
# 自分は普段テキストエディタとして「nano」を使用しています
$ sudo nano /etc/fstab

# 以下の行を追加
UUID=xxxxxxxxxxx /mnt/rockhdd-1 ntfs defaults 0 0

# マウントしてみる
$ sudo mount -a

# きちんとマウントできたか確認する
$ df -h --total
Filesystem      Size  Used Avail Use% Mounted on
...
/dev/sda1       5.5T  xxxx  5.5T   x% /mnt/rockhdd-1
...

ということで無事マウントできました.

Sambaとネットワークのセットアップ

Sambaとは

SambaとはNASを構築できるソフトです.Linuxで広く使われており,商品としてのNASに搭載されていることもあります.

Sambaのインストールと設定

これは「Ubuntu Server 18.04」の標準にはないのでインストールする必要があります.
その後セットアップまで行っちゃいます.

ここでは上記のサイトに加え,以下のサイトも参考にしています.
www.yamamo10.jp

# インストールします
$ sudo apt install samba
...

# Samba用のアカウント(アクセスできるアカウント)を設定します
# これはすでにあるユーザ名じゃないといけないらしいです
# ここではユーザ名を「UUUU」にします
# またログイン用のパスワードも設定します
$ sudo smbpasswd -a UUUU
New SMB password: <パスワード>
Retype new SMB password: <パスワード>
Added user UUUU

# 設定を行います.
$ sudo nano /etc/samba/smb.conf

# 次の行を最後に追加します
# 「[hoge]」が表示される名前になるはずです
# この設定だと,「UUUU」でログインすれば,フルアクセスできるという状態です
[rockhdd-1]
path = /mnt/rockhdd-1
guest ok = no
read only = no
writable = yes
create mask = 0666
directory mask = 0777
browseable = yes
valid users = UUUU

# 構文があっているか確認します
# 自分は「syslog」に注意が表示されたけど,編集した箇所じゃないので無視しました
$ testparm
...

# Sambaの再起動
$ sudo service smbd restart

# Smabaの状態の確認
$ service smbd status
● smbd.service - Samba SMB Daemon
  Loaded: ...
  Active: active (running) ...
...

ということでSambaのセットアップを行い,実際に動かしました.
Windowsで接続する場合は,もしこのRock Pi 4AのIPアドレスが「192.168.11.32」であれば
「\\192.168.11.32」
エクスプローラーの検索に書き込むとアクセスできます.

エクスプローラーで表示した様子

この後,設定した「rockhdd-1」を開こうとすると次のようなログイン画面が表示されます.

ログイン画面

ここで先ほど設定したSambaのユーザ名とパスワードを入力するとアクセスできます.この画面の下にある「資格情報を記憶する」にチェックを入れておくと次回からはこの画面なしでアクセスできます.

IPアドレスを固定する

このままでも使う時に問題はないですが,もし次起動したときIPアドレスが変わると,何らかの方法で確認することになります.そこでこういったサーバについてはIPアドレスを固定することが多いです.通常は「/etc/network/interface」下にあるファイルを書き換えて設定しますが,Rock Pi 4Aの場合は「nmtui」で設定します.

参考サイト↓
forum.radxa.com

nmtuiを実行します

$ sudo nmtui

nmtuiを実行すると次のような画面に切り替わります(SSHであっても).なお画面自体はWindowsのWSL上でSSHをしているものをスクショしています.

nmtui起動画面

赤背景になっているのが選択中のものになります.今回は接続の設定を変えたいので「Edit a connection」を選択(Enter)します.
そうするとこのような画面になります.

接続選択画面

現在このデバイスには有線接続しかないのでこのまま「Wired connection 1」を編集します.選択は矢印キーで移動しますが,「<Add>」→「<Edit...>」→「<Delete>」の順で選択されます.なので「<Edit...>」に移動し,選択するとこのような画面になります.

編集画面

いろいろ設定できるのですが,今回はIPv4のアドレス(xxx.xxx.xxx.xxxのもの)を編集します.ただこの状態だと中身が見えないので「IPv4 CONFIGURATION <Automatic>」と同じ行にある「<Show>」を選択します.そうすると実際の情報が表示されます.

設定表示

ということで上から順に設定していきます.
まず「<Automatic>」から「<Manual>」に変更します.これは選択式なので「<Automatic>」を選択すると候補が出てくるので「<Manual>」を選びます.
次に「Addresses」に好きな値を入れます.とはいってもルールがあるので,ここは現在つながっているIPアドレスにします.もし,今のIPアドレスが「192.168.11.32」だった場合,「192.168.11.32/24」と最後に「/24」を追加して入力します.
次に「Gateway」と「DNS servers」ですが,基本はルータのIPアドレスでいいです.いろいろいじくりまわしている人はわかると思うので省きますが,通常は今のIPアドレスの最後の桁を「1」にすればOKです.なので今回の場合は「192.168.11.1」となります.
実際に入力するとこのようになります.

設定後

このまま下の「<OK>」を選択すると前の画面に戻るので下にある「<Back>」で最初の画面に,その画面の「<Quit>」で終了します.そうすると元のターミナル画面に戻ります.最後は設定を反映させるためネットワークを再起動します.ただコマンドを間違えたのか再起動できなかったので私はRock Pi 4Aごと再起動しました.

# 「-r」オプションで再起動になります
$ sudo shutdown -r now

再起動後も同じIPアドレスになっていることを確認したら完了です.

まとめ

ということでHDDの認識からSambaの実行まで行いました.実際にファイル転送等してみましたが,Rock Pi 4Aの温度はヒートシンク・ファンなしの状態で45~55℃の範囲で推移していました.室温がとても低い(15℃程度)というのもあると思いますが,思ったほど発熱していない状況です.ファンとヒートシンクのめどもついたのでケースを作ります.それについても記事にします.
OSについてはUbuntu Server 18.04のサポート期限が2023年4月までなのでまだ大丈夫ですが,そのうち20.04にアップグレードしないといけないです.新しいイメージで入れなおすと認識しないので,この状態で「do-release-upgrade」でアップグレードしてみたいと思います.以前RPi2をUbuntu 14.04から16.04にアップグレードした際もそれでうまくいった記憶があるので,そのうち挑戦したいと思います.とりあえずはPCの容量表示が真っ赤なので青色に戻るまでデータを移行します...