Raspberry Pi 5のNVMeブート

NVMeブートとBOOT_ORDER

Raspberry Pi 5では、最初からNVMeブートできるようにEEPROMのBOOT_ORDER0xf461に設定されています。ここで0x6がNVMeブート用の値となっています。

参照Raspberry Pi 5のUSBブート

NVMe用のHATとSSD

今回は、たまたま入手することの出来たGeekworm X1002を使っています。入手できれば、Geekworm X1001でも良いかとは思ったのですが。

搭載するSSDは、KIOXIAの500GBにしてみました。

config.txtの設定

これは追加しなくても大丈夫なのですが、一応次の行を追加します。

dtparam=pciex1

Raspberry Pi OSのコピー

Raspberry Pi 5にHATを接続して、HATにSSDを装填しておきます。

mSDから起動すると、nvme0n1として認識しています。

$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
mmcblk0 179:0 0 58G 0 disk
├─mmcblk0p1 179:1 0 512M 0 part /boot/firmware
└─mmcblk0p2 179:2 0 57.5G 0 part /
nvme0n1 259:0 0 465.8G 0 disk

Raspberry Piメニューの「アクセサリー」から「SD Card Copier」を起動して、現在のmSDの内容をSSDにコピーします。

SD Card Copierの画面

FromをmSDにして、ToをSSDにします。SSDに作成されるパーティションのUUIDを新しくするために「New Partition UUIDs」にチェックを入れています。

「Start」をクリックして実行して、完了するのを待ちます。

NVMe M.2 SSDからの起動

シャットダウンしてからmSDを取り外して、SSDだけにしてから電源を投入します。

今回は、Raspberry Pi 4用の電源アダプターを使用しているために5V 5Aを供給することが出来なくて、前回のUSBブートと同様にメッセージが表示されて停止します。

***
USB boot requires high current (5 volt 5 amp) power supply.
To disable this check set usb_max_current_enable=1 in config.txt or
press the power button to temporarily enable usb_max_current_enable
and continue booting.
See https://rptl.io/rpi5-power-supply-info for more information
***

このメッセージを止めるためには、Raspberry Pi 5の電源ボタンを押して先に進めます。

起動時に毎回止まるのを防ぐためには、メッセージに表示されているように/boot/firmware/config.txtファイルにusb_max_current_enable=1の行を追加します。

NVMe M.2 SSDから起動した状態では、次の内容になっていました。

$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
nvme0n1 259:0 0 465.8G 0 disk
├─nvme0n1p1 259:1 0 512M 0 part /boot/firmware
└─nvme0n1p2 259:2 0 465.3G 0 part /

デバイス名からもNVMeからブートして使用していることが確認できます。

hdparmでのパフォーマンス

やはりUSBブートの場合と同様に、hdparmコマンドを実行してパフォーマンスを測定してみます。次の内容でコマンドを5回ずつ実行して最高、最低を除いた3回分の値の平均値を取っています。

$ for i in $(seq 5); do sudo hdparm -t /dev/nvme0n1p2; sleep 5; done

平均: 422.13MB/sec

SSDをUSB接続した場合よりは130%程度早くなっています。

ここで、Raspberry Pi 5ではPCI Express 2.0×1として使用することができるようになっています。ところがconfig.txtファイルにdtparam=pciex1_gen=3を追加することでPCI Express 3.0×1としての使用を強制することが出来ます。ただし、公式にサポートされているものではありませんから、動作が不安定になる場合もあるとされています。ここでは、パフォーマンスを見るためにconfig.txtファイルに先ほど追加した行にこのdtparam=pciex1_gen=3を追加してみます。

dtparam=pciex1
dtparam=pciex1_gen=3

この状態で再起動してパフォーマンスを見てみます。先ほどと同様にhdparamコマンドを実行した平均値です。

平均: 801.04MB/sec

随分と早くなっています。これであれば、色々な用途で使っていくことが出来そうです。

その後

先ほどの、dtparam=pciex1_gen=3を追加している状態で負荷をかけてみようとしてカーネルのビルドを実行してみました。

ところが、ビルドが完了する前に電力不足(今回はRaspberry Pi 5用の5.1V 5Aではなく、Raspberry Pi 4用の電源アダプターを使っています)でシステムがビルドの途中で止まってしまいました。

やはりNVMe M.2 SSDは、正式にRaspberry Pi 5に対応した電力を供給できる電源アダプターを入手してから使用することにして、それまではUSB接続のSSDを使うことにしようと思います。

この記事をシェアする
  • URLをコピーしました!
  • URLをコピーしました!
目次