Raspberry Pi OS 64ビット版を Raspberry Pi Compute Module 4(以下、CM4)のPCIeスロットに挿したNVMe M.2 SSDからブートした際の作業メモです。
Raspberry Pi OS 64ビット版と NVMe boot support のEEPROM の入手(2022/2/28修正)
Raspberry Pi Imagerから64ビット版をインストール可能
Raspberry Pi Imagerのバージョン1.7.1(imager_1.7.1.exe)のOS選択メニューに正式リリースされた64ビット版が追加されました。
CM4のon-board eMMC は外付けのUSBメモリやmicroSDカードのように取り外せないので、PCに専用ツール rpiboot をインストールして USB大容量ストレージとして認識させてから 、IOボートとUSBケーブルでつないで、Raspberry Pi Imagerから on-board eMMC にOSを書き込みます。


CM4もRaspberry Pi OS 64ビット版の対応機種
Raspberry Pi Imagerのダウンロードページの下の方にある「See all download options」をクリックすると「Operating system images」ページで対応機種を確認できます。CM4も正式リリースされた64ビット版に対応しています。
「Operating system images」ページでは全バージョンのzip形式のイメージファイルをダウンロードできます。
64ビット版の「Raspberry Pi OS with desktop」は「2022-01-28-raspios-bullseye-arm64.zip」でした(Release notes)。

CM4向けの NVMe boot support のEEPROM( stable )は下記サイトから入手できます。
Release notes :2021-07-07 – Promote pieeprom-2021-07-06 to stable
Firmware:pieeprom-2021-07-06: Promote to STABLE
NVMe M.2 SSDに Raspberry Pi OS 64ビット版をセットアップ
Raspberry Pi OS 64ビット版のセットアップ手順メモ
手持ちのCM4は、無線LAN及びBluetooth:無、RAM:8GB、on-board eMMC:32GB の有線LANモデルです。Raspberry Pi OS 64ビット版 のセットアップは、32ビット版のセットアップ手順と同様に、
(1)rpiboot(rpiboot_setup.exe )をインストールして、Raspberry Pi Imagerのバージョン1.7.1(imager_1.7.1.exe)から on-board eMMC に Raspberry Pi OS 64ビット版をセットアップ
(2)NVMe boot support のEEPROM( stable版 )アップデート
(3)BOOT_ORDERをNVMeブートに変更
(4)「SD Card Copier」でon-board eMMCのRaspberry Pi OSをNVMe M.2 SSDにコピー
(5)NVMeディスクのファームウェアとカーネルを最新バージョンにアップデート
の手順で作業しました。
NVMe ブートでセットアップ済の NVMe M.2 SSD を使いまわす場合は、USBアダプタケースを使ってPCにUSB接続して、事前に NVMe M.2 SSD を初期化(ブランクに)しておきます。
PCIeソケットにNVMe M.2 SSDをセットしても on-board eMMC からブートして上記(4)の手順を実行できるようにしておきます。

beta版のセットアップ手順と違いはデフォルトでUSB2.0が有効化されいました。コードネームは「Buster」から「Bullseye」になっています。


64ビット版の動作確認
NVMeブートでRaspberry Pi OS 64ビット版がCM4が起動することを確認できました。ディスク構成を確認するためにLXTerminalから打ち込んだコマンドラインのメモです。
vcgencmd bootloader_version
lsblk
ls -l /dev/nvme*

インストールしたRaspberry Pi OSが32ビット版なのか、64ビット版なのかを下記コマンドで確認しました。
uname -m
getconf LONG_BIT
OS | uname -m | getconf LONG_BIT |
64bit版 | aarch64 | 64 |
32bit版 | armv7l | 32 |


参考:Raspberry Pi OS 64ビットbeta版と32ビット版の比較
軽い画面操作では違いは体感できませんでしたが、キャッシュが効く負荷の大きな処理実行時には増加したRAMのメリットが期待できそうです。
hdparmの実行結果
64ビット版 と 32ビット版を NVMe M.2 SSD と on-board eMMCからブートした場合で測りました。-t オプションをつけるとキャッシュを外した速度です。
sudo apt install hdparm
sudo hdparm -t -T /dev/nvme0n1 ※NVMe M.2 SSDの場合
sudo hdparm -t -T /dev/mmcblk0 ※on-board eMMCの場合
-t:Timing buffered disk reads
-T:Timing cached reads
hdparmの測定結果(5回平均)です。 32ビット版と比べて、64ビット版 はキャッシュあり(-T)が速いです。
コネクタ | 起動デバイス | -t (MB/s) 64bit | 64bit -T (MB/s) | 32bit -t (MB/s) | 32bit -T (MB/s) |
eMMC | on-board eMMC 32GB | 83.1 | 953.2 | 83.2 | 743.1 |
PCIe Gen2.0 x 1socket | NVMe M.2 SSD (2280) MZ-V7S250 256GB | 390.3 | 969.1 | 376.3 | 747.0 |
UnixBenchの実行結果
NVMe M.2 SSDブートした 64ビット版 、32ビット版でUnixBench を実行してみました。
sudo apt install git
git clone https://github.com/kdlucas/byte-unixbench
cd byte-unixbench/UnixBench
./Run
UnixBench (System Benchmarks Index Score) | 64bit | 32bit |
4 CPUs in system; running 1 parallel copy of tests | 356.9 | 259.9 |
4 CPUs in system; running 4 parallel copies of tests | 962.4 | 737.5 |