Amazonのアソシエイトとして、ラズパイダ(raspida.com)は適格販売により収入を得ています。詳しくは当サイトの プライバシーポリシーをご覧ください。

前置きしておきたいことがあります。使用したPi 5用のエンクロージャーケース(NEO5)で実施しました。Ubuntuは23.10です。他の拡張HATや組み込みケースや、他のOSでは異なる場合があります。


単純にRaspberry Pi 5(以降Pi 5)でUbuntu23.10を使うのは、microSDカード起動は対応しているので簡単です。公式のRaspberry Pi Imagerで書き込むだけだからです。

では、Pi 5に繋いだNVMe接続のSSDドライブでUbuntuを起動させるのはどうやるのでしょうか。

真っ新のPi 5の場合、そのままではNVMeに繋いだSSDドライブを認識しないパターンになるNVMe HATも多いでしょう。

必要になるのは2点。 基板にあるフラッシュROM(rpi-eeprom)へNVMe接続のSSDドライブを認識できるように設定することと、Ubuntu OS側のconfig.txtへも必要な設定を施します。

手順としては次の通りです。

  1. microSDカードへ書き込んだRaspberry Pi OSで起動
  2. rpi-eeprom-configはPi 5の基板側へ設定(rpi-eeprom-config -e)
  3. 再起動
  4. Imagerで認識されたNVMe接続のSSDドライブへUbuntuを書き込みます。
  5. Ubuntu OS側のファイルシステムにあるconfig.txtを編集します。(/boot/firmware/config.txt)
  6. シャットダウン
  7. microSDカードを抜く
  8. NVMe接続のSSDドライブだけで起動

では、順番に説明していきます。

Ubuntu 24.04 LTSは2024年4月25日にリリース予定なので23.10で試しています。

microSDカードのRaspberry Pi OSで起動

先ずはRaspberry Pi OSを一時的に使うためmicroSDカードへ用意します。これはいつものように行うだけです。

今回はeepromに必要な記述を書き込むだけのために使います。

フラッシュROMへ書き込む

NEO5のケースでは、NVMe接続のSSDドライブも繋げたままでOKです。他のHATの場合でも大丈夫だと思われます。

同時に書き込んだmicroSDカードも挿入して電源を入れます。真っ新のPi5では、eepromの初期設定上、microSDカードから起動することになるため書き込んだRaspberry Pi OSが立ち上がります。

確認とアップデート

最初にフラッシュROM(eeprom)のバージョンアップをしておきます。

現在と最新が同じ日付けになっていないなら更新させるコマンドを実行しておきます。

#確認
sudo rpi-eeprom-update

#更新
sudo rpi-eeprom-update -a

rpi-eeprom-updateのオプション

オプション:
    -a ブートローダーと USB (VLI) EEPROM アップデートを自動的にインストールします。
    -A 自動的に更新する EEPROM のタイプを指定します (vl805 またはブートローダー)
    -b 保留中の EEPROM 更新が書き込まれるパスを出力します。
    -d デフォルトのブートローダー構成を使用するか、-f オプションを使用してファイルが指定されている場合は、
       flag はそのファイル内の設定を使用します。 このオプションは、次の場合にのみ適用されます。
       ブートローダー EEPROM のアップデートが必要です。 ブートローダーの EEPROM が最新であるかどうか
       その場合、その構成は変更されません。
    -f 該当する最新のアップデートの代わりに、指定されたファイルをインストールします。
       ブートローダーの FREEZE_VERSION フラグを無視し、手動での使用を目的としています。
       ファームウェアのアップデート。
    -h ヘルプテキストを表示して終了します
    -j JSON 表記を使用してステータス情報を書き込みます (-m オプションが必要です)
    -l に従って、最新の利用可能な EEPROM イメージ ファイルへのフル パスを返します。
       FIRMWARE_RELEASE_STATUS および FIRMWARE_IMAGE_DIR 設定に変更します。
    -m -a または -f なしで実行すると、指定されたファイルにステータス情報を書き込みます。
    -r 一時 EEPROM アップデート ファイルをブート パーティションから削除します。 これもまた
       保留中の更新をキャンセルします。
    -s 現在のリリースの場合、デフォルトのリリースのサイレント自動アップグレードをスキップします。
       ブートローダーのリリースは、BOOTLOADER_AUTO_UPDATE_MIN_VERSIONによって指定されたバージョンよりも新しいです
    -u 指定された VL805 (USB EEPROM) イメージ ファイルをインストールします。

PCIE_PROBE=1を追加

PCIeを認識させるため、PCIE_PROBE=1をallセクションに追記します。

sudo rpi-eeprom-config --edit
[all]
BOOT_UART=1
POWER_OFF_ON_HALT=0
BOOT_ORDER=0xf461
PCIE_PROBE=1

これでNVMeに接続したSSDドライブが認識されるハズです。

Argon NEO5の説明書にあるPower Savingsは特に設定しなくてOKです。RTCのバッテリーを使うなら設定します。

保存した後、ここで一旦、Pi 5を再起動して有効にしておきます。

sudo reboot

■Pi 5は8GBモデルがオススメ

Raspberry Pi Imagerで書き込む

再起動後、Raspberry Pi OSに最初から入っているRaspberry Pi Imagerで、Ubuntu OSを認識されたNVMe接続のSSDドライブに書き込みます。

KIOXIAのNVMe接続のSSDドライブ

Ubuntu OSが書き込めたら、ここでも一旦、再マウントのため再起動します。

ブート順がBOOT_ORDER=0xf461のままになっているため、NVMe接続のSSDドライブに書き込まれたUbuntu OSがあっても、まだmicroSDカードのRaspberry Pi OSから起動します。

config.txtに追記する

Ubuntuのconfig.txtに追記します。Raspberry Pi OS側ではありません。

通常は起動しているファイルシステムにある/boot/firmware/config.txtなんですけど、Ubuntu側で起動していないため、外付けメディアとしてマウントしているハズです。

ファイルブラウザからsystem-bootを選んで、認証後(管理者権限パスワード)にconfig.txtを開いて追記するか、ターミナルから開いて追記します。

config.txtの場所は、この場合だけ/media/ユーザー名/system-boot/config.txtになります。

NVMeとして認識させるため最下行に追記しておきます。

dtparam=pciex1(またはdtparam=nvme)
dtparam=pciex1_gen=3

dtparam=pciex1dtparam=nvmeでも構いません。同じです。

追記したら、microSDカードを抜くためここで一度シャットダウン(終了)をします。

microSDカードを抜く

終了したら、Raspberry Pi OSの入ったmicroSDカードを抜いてください。Raspberry Pi OSのお役目は終わりです。今度はNVMe接続のSSDドライブだけで起動させることになります。

すると、書き込んだUbuntu OSが起動し、セットアップウィザードが始まります。ここからは通常のUbuntuのインストールと同じです。

この時、有線LANケーブルを繋いでネットワーク通信を確保しました。Wi-Fiだとインストールの最後にコケたためです。(その場合でも強制終了して再度電源を入れたらUbuntuのログイン画面にはなり使えました)

コケたのは私の環境だけか、恐らくUbuntu OS側の問題だと思われます。

NEO5用Argonのshファイルは使わない

今回使ったケースはArgonのNEO5です。実は説明書に自動的にEEPROMとconfig.txtに追記してくれるスクリプトファイルが用意されています。 しかし、Raspberry Pi OSではないため、eeprom.shは実行できません。

もう1つのargonneo5.shは実行できますが、既に設定してしまったため敢えて実行する必要はありません。

Raspberry Pi OSでNEO5のケースを使うなら、今回に手作業で行ったことを2つのスクリプトファイルが自動的に設定してくれるので、実行すると良いでしょう。

rpi-eepromコマンド

Ubuntuでもターミナルでrpi-eepromコマンドは実行できますがCurrentとUp to Dateが異なってるため更新(update)は辞めておきましょう。Up to Dateの方が古いのです。もしもrpi-eepromコマンドで更新させるなら、面倒ですがもう一度Raspberry Pi OSの入ったmicroSDカードで起動して実行する必要があります。恐らく、デフォルトのブートローダーを更新すれば良いのですがraspi-configコマンドもUbuntuではないため、ここでは無視しました。

他の方法も

今回は最初からNVMe接続のSSDドライブを接続したまま行いました。 この方法以外にも、SSDドライブをUSB変換する機器をお持ちなら、それを使って別PCでImagerを使ってUbuntu OSを書き込むことも同じです。(つまり事前に用意しておく)

今回の方法だとmicroSDカードを抜くために1度はケースを開け閉めしないとなりませんが、NVMe接続のSSDドライブも取り付けたまま作業できて楽でした。

有線LANケーブルを繋げられない環境の人も多い中、Wi-FiのままだとUbuntu OSのセットアップウィザードが最後にコケてしまったのが悔やまれます。なんでだろう?

手順さえ間違えなければ、Pi 5にUbuntu OSをNVMe接続SSDドライブ起動にすることができます。試してみてください。