USB boot に対応したファームウェアにするために。
情報源
目的
新しく買ったラズパイ4(8GB)がある。これをUSBブートしたい。
背景
ラズパイ4Bは2020-12-11のアップデートでUSBブートに対応した。なのでそれ以降のファームウェアでないとUSBブートできない。未対応のときは一旦SDカードでブートしてからファームウェアを更新する必要がある。
私のラズパイは2021-07-20に購入したラズパイ4B(8GB)。USBブートさせようとしたが、ブート画面をみるとファームウェアの日付が2020-09-03
だった。古いためかUSBブートできなかった。よってSDカードでブートさせてファームウェアを更新する必要がある。
必要なもの
- Raspberry PI 4B
- SDカード 32GB
- Raspberry PI OS インストール済み
- HDDケース USB3.0
- 内蔵SSD 240GB
- Raspberry PI OS インストール済み
- 内蔵SSD 240GB
手順
現在のファームウェアのバージョンを確認する。
$ vcgencmd bootloader_version Sep 3 2020 13:11:43 version c305221a6d7e532693cc7ff57fddfc8649def167 (release) timestamp 1599135103 update-time 0 capabilities 0x00000000
ファームウェアを更新する。
sudo apt update sudo apt upgrade
upgrade
でなくfull-upgrade
のほうがいいかもしれない。
sudo apt full-upgrade -y
所々で何度か質問される。入力せねば先に進まないため厄介。時間がかかるくせに、途中で質問しやがるため、放置しているとムダに時間をロスする。さりとて張り付いていると長い。頼むからよしなにやってくれ。わかるだろ? アップデートするって言ってるだろが。
設定ファイル '/etc/default/rpi-eeprom-update' ==> これはインストールしてから (あなたかスクリプトによって) 変更されています。 ==> パッケージ配布元が更新版を提供しています。 どうしますか? 以下の選択肢があります: Y か I : パッケージメンテナのバージョンをインストールする N か O : 現在インストールされている自分のバージョンを残す D : 両バージョンの差異を表示する Z : 状況を調査するためにシェルを開始する デフォルトでは現在使っている自分のバージョンを残します。 *** rpi-eeprom-update (Y/I/N/O/D/Z) [デフォルト=N] ? Y 新バージョンの設定ファイル /etc/default/rpi-eeprom-update をインストールしています ...
使えるファームウェアを確認する。みづらい。たのむから改行してくれ……。バカなの?
$ ls /lib/firmware/raspberrypi/bootloader/stable/
pieeprom-2020-04-16.bin pieeprom-2020-07-16.bin pieeprom-2020-09-03.bin pieeprom-2021-01-11.bin pieeprom-2021-02-16.bin pieeprom-2021-04-29.bin recovery.bin vl805-000138a1.bin
pieeprom-2020-06-15.bin pieeprom-2020-07-31.bin pieeprom-2020-12-11.bin pieeprom-2021-01-16.bin pieeprom-2021-03-18.bin pieeprom-2021-07-06.bin vl805-000137ad.bin
とりあえず最新日付のやつを使えばいいだろ。/lib/...
とかいうパスは謎。参考サイトからパクっただけ。
sudo rpi-eeprom-update -d -f /lib/firmware/raspberrypi/bootloader/stable/pieeprom-2021-07-06.bin
*** INSTALLING /lib/firmware/raspberrypi/bootloader/stable/pieeprom-2021-07-06.bin *** CURRENT: 2020\u5e74 9\u6708 3\u65e5 \u6728\u66dc\u65e5 12:11:43 UTC (1599135103) UPDATE: 2021\u5e74 7\u6708 6\u65e5 \u706b\u66dc\u65e5 10:44:53 UTC (1625568293) BOOTFS: /boot EEPROM updates pending. Please reboot to apply the update. To cancel a pending update run "sudo rpi-eeprom-update -r".
英語のメッセージを翻訳すると以下。
EEPROMの更新は保留中です。再起動してアップデートを適用してください。 保留中の更新をキャンセルするには、「sudorpi-eeprom-update-r」を実行します。
再起動しないとアップデートされないっぽい。しゃーねーな。
reboot
再起動後、現在のバージョンを確認。
vcgencmd bootloader_version
Jul 6 2021 11:44:53 version c258ef8fe1d2334a750078b17dab5e2c1a1787fc (release) timestamp 1625568293 update-time 1626764760 capabilities 0x0000007f
OK! 日付が指定した版2021-07-06
になっていることを確認した。
あとは以下のようにUSBブートするかどうか確認するだけ。
USBブートするとき、初回ブートなら数分くらい時間がかかるかもしれない。ディスク領域を広げたりする作業を自動でやってくれている。画面がなかなか進まなくても信じて待つべし。まちがってもフリーズしたと思い込んで電源をぶっこぬいたりしないように。
と思ったが、エラーが出てブートしなかった。次回につづく。
上記は書き込みミスによるものだが、正しく書き込んだ後にブートさせようとするとフリーズした。1時間30分放置しても変わらなかった。原因不明。もしや専用ツールで書き込まないのダメなのか?