ytooyamaのブログ

サーバ構築とか、仕事で発見したこととか、趣味のこととかを書いています。

Raspberry Pi 4でUSBブートがうまくいかなかった原因

「これを試してみて」と注文を頂いたのでやってみることにしました。 ものすごい丁寧に書かれているので、そのままやったら動くんじゃないかと思ったんです。

medium.com

ところが、「arm-image-installer」で書き込んだイメージでブートしようとすると、起動したり起動しなかったりするのですよね。 ということで、とりあえず公式の「Raspberry Pi Imager」を使って Raspberry Pi OSをUSBブートしてみようと思いました。

以下のようなサイトの他、いろいろな記事を参考にしました。

www.pragmaticlinux.com

USBブートについては随分前に一度試したことがあって、特定のバージョン以上のファームウェアに更新して公式のガイドに従って設定するだけで簡単に試すことができるというのは確認していました。

ところが、最初だけ起動するが、再起動をかけるとUSBブートできなくなるという現象が発生しました。 Raspberry Pi OSでもほかのOSでも症状は同じです。 Raspbian GNU/Linux 11でもRaspbian GNU/Linux 10でも同じく、最初の起動(パーティションを拡大したよというメッセージが出るあれ)はちゃんと起動するんだけど、その後ブートしない状況は変わらずという状況でした。

色々なOSを書き込んで試していくにつれて、とうとう全くOSが起動しなくなりました。いよいよやばいです。

最初はマウスにキーボード、USBメモリーにモニターとRaspberry Pi 4に接続しすぎて電力不足じゃないかと思って、MacBook Pro 16インチに付属するUSB-Cのアダプターで電力をとってみたり、ケーブルを変えたり、ファームウェアのバージョンを変えてみたり色々試してみましたが、いずれも問題は解消されませんでした。

Raspberry Pi 4は家に2台あるのでそれぞれで確認しましたが、ブートできない症状はどちらでもさいげんしました。一方、microSDでは確実にブートします。というわけで原因は本体ではなさそうです。

ここまで書き込んでいて今更ですが、USBブート機能はUSB接続のHDDやSSDをブート用として使うためにサポートされたもので、USBメモリーをブートボリュームとして使うのはRaspberry Piオフィシャルでは推奨されていません(と以前は公式ドキュメントに書いてあった気がするのですが、見つけられない...)。

www.raspberrypi.com

問題の原因が判明

色々やった結果、使用したUSBメモリーが原因でした。

別のメーカーのUSBメモリーにイメージ書き出ししたところ、問題なくブートしました。何度再起動してもブートは問題なしです。 試しに同メーカーの同一製品のUSBメモリーを用意してそれでUSBブートしてみましたが、それも問題ありませんでした。

というわけで、なんかおかしいときは他のやつを試しましょう...という話でした。

ちなみに、問題があるUSBメモリーですが、フォーマットしてmacOSでデータの書き込み、読み込みをしてみたものの、いずれも正常に使えています。 ただ、このメモリーに書いてある日読み出せなくなったりしたら嫌なので、捨てようと思います。

ちなみに、手元では以下の環境で正常動作を確認しました。

ytooyama@raspberrypi:~ $ lsb_release -a
No LSB modules are available.
Distributor ID: Raspbian
Description:    Raspbian GNU/Linux 11 (bullseye)
Release:    11
Codename:   bullseye

ytooyama@raspberrypi:~ $ sudo rpi-eeprom-update 
BOOTLOADER: up to date
   CURRENT: Tue  2 Aug 15:55:05 UTC 2022 (1659455705)
    LATEST: Tue  2 Aug 15:55:05 UTC 2022 (1659455705)
   RELEASE: stable (/lib/firmware/raspberrypi/bootloader/stable)
            Use raspi-config to change the release.

  VL805_FW: Using bootloader EEPROM
     VL805: up to date
   CURRENT: 000138a1
    LATEST: 000138a1

このブログサイトはJavaScriptを使っていますが、読み込んでいるJavaScriptは全てはてなが提供しているものであり、筆者が設置しているものではありません。