🍓

Raspberry Pi 4のbootloaderをUbuntuから手動で更新・設定する手順

2024/03/23に公開

手元のRaspberry Pi 4 Model BのEEPROM内のbootloaderをUbuntu上から手動で更新したり設定変更したりしたので、手順をまとめておく。使用したUbuntuのバージョンは20.04.6 LTS

なお、bootloaderを更新するほかの手段として、公式ページ内のUpdate the bootloaderが推奨する下記の方法がある。細かいバージョン選択や設定変更をしないなら、これらの方法で問題ない。

事前準備: rpi-eepromパッケージのインストール

以降の手順で使用する rpi-eeprom-update コマンドと rpi-eeprom-config コマンドはrpi-eepromパッケージに含まれているので、インストールする。
(rpi-eepromパッケージはUbuntu 20.04 LTSではmultiverseコンポーネントに含まれている)

$ sudo apt-get install rpi-eeprom

なお、これにより、EEPROM内のbootloaderが古かった場合には自動で更新されるようになる。
(rpi-eepromパッケージに同梱されているbootloaderバージョンの範囲内で)

現在のbootloaderのバージョンを確認

rpi-eeprom-update コマンドを引数なしで実行すると(要管理者権限)、EEPROM内のbootloaderのバージョン情報などが表示される。

$ sudo rpi-eeprom-update   
BCM2711 detected
VL805 firmware in bootloader EEPROM
BOOTLOADER: up-to-date
CURRENT: Mon 22 Jan 2024 10:41:21 AM UTC (1705920081)
 LATEST: Thu 03 Sep 2020 12:11:43 PM UTC (1599135103)
 FW DIR: /lib/firmware/raspberrypi/bootloader/default
VL805: up-to-date
CURRENT: 000138c0
 LATEST: 000138c0
  • EEPROM内のbootloaderは 2024-01-22 のもの
  • /lib/firmware/raspberrypi/bootloader/default 内の最新版は 2020-09-03 のもの

bootloaderを任意のバージョンへと変更 (設定変更なし)

コンパイル済みのbootloaderのイメージファイルは、GitHub上のrpi-eepromfirmware-2711ディレクトリ内に置かれている。同ディレクトリ内のrelease-notes.mdがリリースノートなので、ここから使いたいものを選べばよい。各bootloaderには、内容に応じて下記の3種類のいずれかのラベルがつけられている。

  • BETA: 必ずしも動作確認が十分ではないもの。ただしリリースノートによると、2023-08-01以降はBETAを廃止してSTABLEに合流させたようだ
  • STABLEまたはLATEST: 最新版。latestディレクトリ内に置かれる
  • DEFAULT: 重要なセキュリティ修正やバグ修正を含むもの。製品出荷に使用される。defaultディレクトリ内に置かれる

例えば2024-01-22のSTABLEリリースを使いたいなら、そのイメージファイルはlatest/pieeprom-2024-01-22.binである。

目的のイメージファイルをダウンロードしたら、管理者権限で rpi-eeprom-update コマンドを使って書き込みの登録を行う。

$ sudo rpi-config-update -d -f pieeprom-2024-01-22.bin
BCM2711 detected                                                                
VL805 firmware in bootloader EEPROM                                             
*** INSTALLING pieeprom-2024-01-22.bin  ***                         
BOOTFS /boot/firmware                                                           
EEPROM update pending. Please reboot to apply the update.

表示されているように、この時点ではまだEEPROMには書き込まれていない。再起動を行うと、書き込みが実施される。書き込み登録を取り消したい場合には、再起動せずに rpi-eeprom-update -r を実行すればよい。

bootloaderを任意のバージョンへと変更 (設定変更あり)

bootloaderのイメージファイルには、デフォルトの設定が埋め込まれている。その設定を変更してから書き込むには、rpi-eeprom-config コマンドを使ってイメージファイル内の設定をconfiguration fileとしてダンプし、内容を変更してからイメージファイルに書き戻し、更新後のイメージファイルをEEPROMへと書き込めばよい。

$ rpi-eeprom-config pieeprom.bin --out bootconf.txt
... bootconf.txt を編集 ...
$ rpi-eeprom-config pieeprom.bin --config bootconf.txt --out pieeprom-new.bin
$ sudo rpi-config-update -d -f pieeprom-new.bin

configuration fileはテキスト形式で、例えば次のようなもの。書式と内容の詳細はConfiguration propertiesに記載されている。

bootconf.txt
[all]
BOOT_UART=0
WAKE_ON_GPIO=1
POWER_OFF_ON_HALT=0

現在のbootloaderの設定を変更

現在のEEPROM内のbootloaderのバージョンを変更せず、設定だけを直接変更する操作は用意されていない。代わりに次のようにすればよい。

  1. 現在のbootloaderのバージョンを確認する
  2. そのバージョンのイメージファイルを入手する
  3. イメージファイル内の設定を変更してからEEPROMへと書き込む

参考文献

Discussion