ROCK 5BのSPI NOR flashへブートローダをインストールしてNVMe SSDからOS起動
目次
概要
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