RaspberryPiでUSBブートを試みる

背景

SD カードが壊れた。最近のラズパイは HDD ブートに対応しているので HDD ブートで Gentoo を起動した。 作業としては通常の RaspberrypiOS で起動、(新しいラズパイなら不要だと思うが私は必要だった)ファームウェアのアップデートを行い、 Genpi64 のイメージをダウンロード、HDD に書き出し、起動した。ハマるポイントは無く、意外とスムーズに起動した。 2021/09/28 RaspberryPi 4B で確認した。 Raspberry Pi 2B、3A+、3B、3B+の場合、手順は異なるかもしれない。

手順

ファームウェアが古い場合はアップデート

HDD ブートはファームウェアが「2020-09-03」以降である必要がある。

参考 [SDカード不要? 「Raspberry Pi 4」をUSBブートさせる方法について https://gadgetrip.jp/2021/05/raspberry_pi4_usb_boot/ ラズパイ4を完全 USB Boot 化

コマンド 効果
vcgencmd bootloader_version 現在のブートローダーのバージョンを確認
rpi-eeprom-update アップデートがあるか確認
sudo rpi-eeprom-update -a アップデート

ファームウェアのバージョンを確認するため rpi-imager をRaspberrypiOS のページからダウンロードして、SD カードに書き込み起動する。 ラズパイ4を完全 USB Boot 化を参考にさせていただきファームウェアのアップデートを行った。

私の /etc/default/rpi-eeprom-update は default だった。

pi@raspberrypi:~ $ cat /etc/default/rpi-eeprom-update
FIRMWARE_RELEASE_STATUS="default"
最近おラズパイ OS だと、初回起動時のアップデートを行うとファームが最新にアップデートされる模様。

購入直後の状態で USB ストレージを刺してとりあえず起動するか確認したが、ファームが古くだめだった。 ラズパイ OS の SD から起動し、初回起動時に現れるアップデートでアップデートするとファームウェアが最新のものに変更された。

2021/10 時点では、ファームが最新でも、下記の起動順序の変更は必要で、ファームウェアのデフォルトは SD カードが最優先の状態だった。

起動順所を変える

raspi-config -> Advanced Option -> Boot な箇所で USB ブートを選択する 2021/10 時点だとファームのアップを行った直後は SD カードが再優先事項のままで、 SD カードと USB ストレージ両方さしてある状態だと、SD カードから起動するようになっていた。 raspi-config で起動順序を変更すると、SD カードが刺してあっても USB ストレージから起動した。

HDD にイメージを書き込む

GenPi64 のイメージをGenPi64 / gentoo-on-rpi-64bitからダウンロード、下記のように HDD に書き出した。

※ 私の HDD は /dev/sdb で認識されたが、これはハードウェア構成によって異なる。

sudo zstdcat -d genpi-aarch64-lite-latest.img.zst -vvv --no-sparse -o /dev/sdb

書き込み後、HDD を USB3.0 経由で接続して起動した。意外とあっさりと起動して嬉しい。

参考

Raspberry Pi を USB(HDD)だけで動かす(SD 不要) 私は RasPi64 のイメージからコピーしたが、稼働中のラズパイからコピーする時に参考にする。 rsync でコピーする手順が参考になる。