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 でコピーする手順が参考になる。