こんにちは,HAVRMです.
前回は「Ubuntu Server 20.04」でHDDの認識に失敗したので,「Ubuntu Server 18.04」をインストールしなおし,再挑戦します.
前回からの簡単な説明
組み立てが終わったのでHDDを認識しようとしたら,認識してくれませんでした.というのも公式で確認されているのは「Ubuntu Server 18.04」で,現在使っている「Ubuntu Server 20.04」は未確認だからです.ということで改めて「Ubuntu Server 18.04」でやり直していこうと思います.
「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のホームページが見つかりました.
ちょうど当時のダウンロードページを引いたみたいで,「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名」が表示されない.
ということで初回ブログでも紹介したブログを見ながらユーザ名を変更していきます.
まずは最初からある「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のインストールと設定
これは「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をしているものをスクショしています.
赤背景になっているのが選択中のものになります.今回は接続の設定を変えたいので「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の容量表示が真っ赤なので青色に戻るまでデータを移行します...