OSS Fan ~OSSでLinuxサーバ構築~

このエントリーをはてなブックマークに追加

ROCK 5BのSPI NOR flashへブートローダをインストールしてNVMe SSDからOS起動

カテゴリ:OSSセットアップ | ソフトウェア:Linux | タグ:
最終更新日:2023-07-17 | 公開日:2023-07-17

目次

概要

 ROCK 5BはM.2スロットが実装されているため、NVMe SSDを搭載して起動ディスクとすることができます。 Raspberry Piと比較したメリットなので、是非活用したいところです。。 ただし前提条件として専用のブートローダをインストールする必要がありますのでその手順を掲載します。 手順自体はRadxaの公式Wikiに掲載されている通りですが実例としてご参考に。

構成

サーバ構成

ハードウェア

ROCK 5B 16GB

OS

Debian GNU/Linux 11 (bullseye) ※ブートローダをインストールするためだけに使用したOS

ソフトウェア・パッケージ

  • zero.img.gz
  • rock-5b-spi-image-gbf47e81-20230607.img

手順

Linuxの起動

 Rufus 4.0を使用してDebian 11.7のOSイメージを書き込んだmicroSDカードを作成し、ROCK 5BのSDカードスロットに挿入してLinuxを起動します。 起動したLinuxにSPIフラッシュが認識されているので、Linux上でブートローダーの書き込みを行うという手順です。 Linuxのディストリビューションは他のものでも問題ないと思います。 Radxaが公開しているOSイメージの場合、ログインユーザはrock、初期パスワードもrockとなっています。

必要なファイルのダウンロード

 起動したLinux(今回はDebian 11.7)にログインしてターミナルを起動します。 以降はこのターミナル上で操作します。

SPIクリア用イメージファイルのダウンロード

 SPIフラッシュにブートローダをインストールする前に、SPIフラッシュの中身をクリアします。 クリアする際にゼロ埋めされたイメージファイル(と言ったら語弊があるかもしれませんが)をddコマンドでSPIフラッシュに書き込む形でクリアするので、 このクリア用のイメージファイルをダウンロードします。

rock@rock-5b:~$ wget https://dl.radxa.com/rock5/sw/images/others/zero.img.gz
--2023-07-16 05:13:25--  https://dl.radxa.com/rock5/sw/images/others/zero.img.gz
Resolving dl.radxa.com (dl.radxa.com)... 89.163.209.90
Connecting to dl.radxa.com (dl.radxa.com)|89.163.209.90|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 16312 (16K) [application/x-gzip]
Saving to: ‘zero.img.gz’

zero.img.gz                    100%[=================================================>]  15.93K  58.9KB/s    in 0.3s    

2023-07-16 05:13:28 (58.9 KB/s) - ‘zero.img.gz’ saved [16312/16312]

rock@rock-5b:~$ 

ブートローダのイメージファイルのダウンロード

 ブートローダはNVMe SSDにインストールするOSがarmbianの場合と、それ以外の場合で使用するイメージファイルが異なっています。 今回はNVMe SSDにUbuntuをインストールしようと考えているので、armbian以外の場合のブートローダをダウンロードします。 以下の例では2023/7/16時点で最新のファイル(rock-5b-spi-image-gbf47e81-20230607.img)をダウンロードしていますが、 時々ファイルが更新されるので、その時の最新版をダウンロードしてください。

rock@rock-5b:~$ wget https://dl.radxa.com/rock5/sw/images/loader/rock-5b/release/rock-5b-spi-image-gbf47e81-20230607.img
--2023-07-16 05:16:53--  https://dl.radxa.com/rock5/sw/images/loader/rock-5b/release/rock-5b-spi-image-gbf47e81-20230607.img
Resolving dl.radxa.com (dl.radxa.com)... 89.163.209.90
Connecting to dl.radxa.com (dl.radxa.com)|89.163.209.90|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 16777216 (16M)
Saving to: ‘rock-5b-spi-image-gbf47e81-20230607.img’

rock-5b-spi-image-gbf47e81-202 100%[=================================================>]  16.00M  3.18MB/s    in 5.0s    

2023-07-16 05:17:01 (3.18 MB/s) - ‘rock-5b-spi-image-gbf47e81-20230607.img’ saved [16777216/16777216]

SPIクリア用イメージファイルのチェックサム確認

 ダウンロードしたファイルが壊れていないか、念のためチェックサムを比較します。 以下のページにチェックサムが載っていますのでピッタリ同じか確認します。

 https://wiki.radxa.com/Rock5/install/spi

rock@rock-5b:~$ md5sum zero.img.gz
ac581b250fda7a10d07ad11884a16834  zero.img.gz

SPIクリア用イメージファイルの解凍

 SPIクリア用イメージファイルは圧縮された状態になっているので、使用する前に解凍します。 解凍後のファイルも念のためチェックサムを確認しておきます。

rock@rock-5b:~$ gzip -d zero.img.gz
rock@rock-5b:~$ md5sum zero.img
2c7ab85a893283e98c931e9511add182  zero.img

ブートローダのイメージファイルのチェックサム確認

 続いてダウンロードしたブートローダのイメージファイルのチェックサムも確認しておきます。

rock@rock-5b:~$ md5sum rock-5b-spi-image-gbf47e81-20230607.img
bd21a6459ad33b8189782e4c904d99b3  rock-5b-spi-image-gbf47e81-20230607.img

SPIフラッシュのフラッシュ

SPIフラッシュのデバイスファイルの確認

 Linux上でSPIフラッシュが認識されている場合、mtdblock*という名前のデバイスファイルで認識されています。 このファイルが存在しているか確認します。以下の例ではmtdblock0として認識されています。

rock@rock-5b:~$ ls /dev/mtdblock*
/dev/mtdblock0

SPIフラッシュのクリア

 上記で確認したデバイスファイルにクリア用のイメージファイルを書き込みます。 16MiBのサイズのイメージファイルを書き込みますが、約3分かかりました。 ちょっと遅いですが公式のWikiにも5分かかることがあると書いてあるので、特に異常ではないようです。

rock@rock-5b:~$ sudo dd if=zero.img of=/dev/mtdblock0
32768+0 records in
32768+0 records out
16777216 bytes (17 MB, 16 MiB) copied, 179.249 s, 93.6 kB/s

SPIフラッシュのクリアが成功したか確認

 SPIフラッシュのクリアに成功したか、書き込んだイメージファイルとデバイスファイルのチェックサムを比較して確認します。 以下の例ではチェックサムが同一なのでクリアに成功していることが分かります。

rock@rock-5b:~$ sudo md5sum /dev/mtdblock0 zero.img
2c7ab85a893283e98c931e9511add182  /dev/mtdblock0 ←SPIフラッシュのデバイスファイル
2c7ab85a893283e98c931e9511add182  zero.img    ←クリア用のイメージファイル

ブートローダの書き込み

 SPIフラッシュのクリアに成功したら、次はブートローダのイメージファイルを書き込みます。

rock@rock-5b:~$ sudo dd if=rock-5b-spi-image-gbf47e81-20230607.img of=/dev/mtdblock0
32768+0 records in
32768+0 records out
16777216 bytes (17 MB, 16 MiB) copied, 178.575 s, 94.0 kB/s
rock@rock-5b:~$ sync

ブートローダの書き込みに成功したか確認

 ブートローダのイメージファイルの書き込みに成功したか、書き込んだイメージファイルとデバイスファイルのチェックサムを比較して確認します。 以下の例ではチェックサムが同一なのでクリアに成功していることが分かります。

rock@rock-5b:~$ sudo md5sum /dev/mtdblock0 rock-5b-spi-image-gbf47e81-20230607.img
bd21a6459ad33b8189782e4c904d99b3  /dev/mtdblock0              ←SPIフラッシュのデバイスファイル
bd21a6459ad33b8189782e4c904d99b3  rock-5b-spi-image-gbf47e81-20230607.img  ←ブートローダのイメージファイル

リブート

 ブートローダの書き込みに成功したので、NVMe SSDからのOS起動ができるようになりました。 一度Linuxをシャットダウンしたうえで、ROCK 5BからmicroSDカードを抜きます。 OSイメージを書き込んだNVMe SSDをM.2スロットに差して電源を入れると、NVMe SSDから起動することが確認できました。 (今回はブートローダ書き込みのところまでの掲載が目的なので、NVMe SSDからのOS起動については詳細を割愛します)

rock@rock-5b:~$ shutdown -h 0

参考にしたサイト