あっきぃ日誌

鉄道ブログのような技術系ブログのようななにか

Raspberry Pi 4 EEPROMの今年のアップデートを振り返る

11日目です。明日からはついに私以外の方が書いてくれるので、数日はコミケの作業とかラズピッピの裏方仕事に集中できそうです。

adventar.org

Raspberry Pi 4 EEPROMとは

Raspberry Pi 4 EEPROMは、PCでいうBIOS的なもので、起動に関するハードウェア制御のプログラムと、起動に関する設定がここに収められています。Pi 4以外のモデルではbootcode.binがその役割を担っています。

www.raspberrypi.com

Pi 4 EEPROMは、Raspberry Pi OSを使用していれば、OSのアップデート時に最新のPi 4 EEPROMイメージが収録されたパッケージがインストールされて、次回起動時に適用されるようになっているため、普段の使い方では意識する必要はありません。ちなみに、USB3.0ハブであるVL805チップのファームウェアもここでついでに管理されています。

Pi 4リリース以降、Pi 4 EEPROMのアップデートによって、発熱の改善や、PXEブートやUSB MSDブートの昨日追加、OS起動前に診断画面が表示されるようになるなどの改善がされてきました。

3つのリリース形態

Pi 4 EEPROMはBeta、Stable、Criticalの3つにリリース形態が分かれており、Betaは最新の機能をすぐにでも試したい物好き向け、StableはCriticalリリースは待てないけど新しい機能を使いたい人向け、Criticalは工場で生産時に書き込まれる超安定版で、先述のOSアップデート後の起動時に自動適用されるのもデフォルトではこのCriticalリリースです。

最新のCriticalリリースは2021-04-29版で、一つ前のリリースから1ヶ月しかたっていませんが、Pi400のEthernetの安定化のための改善が含まれています。

自動適用されるリリースを変更するには、raspi-configコマンドで「Advanced Options」→「Bootloader Version」を選択して、 Latest(== Stable)もしくはDefault(== Critical)を選択します。Betaがないのは……そういうことです。設定ファイルを手で書き換えれば適用できますが、Betaは自動適用にせず、必要に応じて手動で適用したほうが無難です。

EEPROMのリリースノート

EEPROMはGitHubで公開されており、リリースノートもここで確認できます。わたしは自宅サーバーでRSS化するスクリプトを置いていて、RSSリーダーで更新を追っています。

github.com

2021年のアップデートを見ていく

では、ベータやStableレベルで今年のアップデートを追ってみます。

2021-01-16版(BetaとStableの同時リリース)では、Pi 4のRev1.1で起きていたらしいSDの電圧設定のミスが修正されています。このように、Pi 4でもリビジョン単位での修正が入ることがあります。なお、Rev1.1は技適マークが入る前のリビジョンなので、待てずに海外から買ってしまった人たちしか持っていないはずです。同様に、2021-03-18版(Beta)ではRev1.1〜1.3で再起動に失敗することがある問題が修正されています。

2021-03-04版(Beta)ではNVMeブート機能が追加されました。これはPi 4ではなくCompute Module 4向けの対応です。 Compute Module 4ではVL805が搭載されない代わりにPCIeが自由に使えるため、NVMeブートを有効にした上でNVMe SSDを搭載すれば、爆速ストレージ環境を構築できるようになりました。この機能は最新のCriticalリリースには含まれていませんが、2021-07-07版でStableに昇格しています。WaveShareのIOボードを使うとPi 4サイズでNVMe SSDが使えて最強です。2230サイズのSSDヤフオクとかで適当に入手できます。

akkiesoft.hatenablog.jp

2021-06-11版(Beta)では、USB MSDブート時のディレイオプションが追加されています。USBブートはSSDUSBメモリに限らず、HDDブートも可能なので、例えばスピンアップしている間にタイム・アウトしてしまうなどの場合には、ディレイオプションを使って少し待つなどの対策が取れるようになりました。

2021-09-23版(Beta)は、ファイルシステム周りの改善に着手したようで、パフォーマンス改善によって起動時間の短縮したとのことです。2021-10-04版(Beta)ではGPT FAT16パーティションのサポートも追加されています。これはあまり意識することはないような気もしますが。。また、ここでもMSDブートのSCSIコマンドタイムアウト値が調整されています。

2021-10-27版(Beta)でセキュアブート対応が追加されています。産業の顧客向けに用意されたベータ機能とのことで、普通のユーザーは特に気にする必要はないようですが、必要な方はウォッチの価値はあるかもしれません。ベータを有効にするための詳細な情報はusbbootリポジトリに解説があるようです。

github.com

2021-11-22版(Beta)ではSabrent Rocket Nano というNVMe SSDの相性問題への対応が入ったようです。日本でもふつうに買えるブランドのSSDのようなので、もし持っていてうまく動かんかったという方がいればこれで治るようです後述の最新のStableにももう含まれています。

最後に、最新のStableリリースである2021-11-29版です。Beta扱いのセキュアブートを含め、9月からの変更がひととおり含まれているので、気になる機能があった場合はこのバージョンを適用して試すと良いでしょう。

自分のPi4 EEPROMイメージのバージョンを知るには

Raspberry Pi OS上からrpi-eeprom-updateをオプション無しで実行すると、現在のバージョンが確認できます。

pi@usbpi32:~$ rpi-eeprom-update
BOOTLOADER: up to date
   CURRENT: 2021年  7月  6日 火曜日 10:44:53 UTC (1625568293)
    LATEST: 2021年  7月  6日 火曜日 10:44:53 UTC (1625568293)
   RELEASE: stable (/lib/firmware/raspberrypi/bootloader/stable)
            Use raspi-config to change the release.

  VL805_FW: Using bootloader EEPROM
     VL805: version unknown. Try sudo rpi-eeprom-update
   CURRENT: 
    LATEST: 

あるいは、MicroSDカードはUSB MSDを接続せずにHDMIだけつないだ状態で起動すると、診断画面が表示されて、そこでバージョンを確認することもできます。診断画面が出ない人はかなり古いので、アップデートして診断画面を見られるようにしておくと良いでしょう。

UbuntuとかFedoraとか、とにかくRaspberry Pi OS使ってないひとは、おそらくEEPROM更新がサードパーティディストリビューションに入っていない可能性がある(逆にわたしがRaspberry Pi OSしか触ってないのでわかってないです。詳しい人がいればぜひ。)ので、たまに最新のRaspberry Pi OSを用意して起動してあげると良いかもしれません。

なんかいろいろ変わってるでしょ

Pi 4 EEPROMが導入されたことにより、ハードウェア近辺やブート周りの変更が柔軟に対応できるようになったようで、リリースから2年たっても新機能やサポートが追加され続けています。いろいろなデバイスからのブート対応が落ち着いたので出揃ったのかなと思っていたら、パーティションファイルシステムの改善や産業向けのセキュアブートまで入り始めたので、活発だなあという印象があります。

リリースノートに変更があって面白い変更があった時には今回のブログみたいなひとくちメモをMastodonに投稿しているので、よかったらそちらも見てみてください。あー、ハッシュタグでもつければよかったなと今更思うなど……。他の言及も多々ありますがざっくりは↓のログからたどれます。

notestock.osa-p.net