Raspberry Pi 4のbootloaderをUbuntuから手動で更新・設定する手順
手元のRaspberry Pi 4 Model BのEEPROM内のbootloaderをUbuntu上から手動で更新したり設定変更したりしたので、手順をまとめておく。使用したUbuntuのバージョンは20.04.6 LTS。
なお、bootloaderを更新するほかの手段として、公式ページ内のUpdate the bootloaderが推奨する下記の方法がある。細かいバージョン選択や設定変更をしないなら、これらの方法で問題ない。
- Raspberry Pi Imagerと予備のmicroSDカードを使用する方法 (Using Raspberry Pi Imager to update the bootloader)
- Raspberry Pi OSの
raspi-config
コマンドを使用する方法 (Using raspi-config to 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-eepromのfirmware-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に記載されている。
[all]
BOOT_UART=0
WAKE_ON_GPIO=1
POWER_OFF_ON_HALT=0
現在のbootloaderの設定を変更
現在のEEPROM内のbootloaderのバージョンを変更せず、設定だけを直接変更する操作は用意されていない。代わりに次のようにすればよい。
- 現在のbootloaderのバージョンを確認する
- そのバージョンのイメージファイルを入手する
- イメージファイル内の設定を変更してからEEPROMへと書き込む
Discussion