Raspberry Pi で Ubuntu を使用できますが(下記記事)、先日 apt upgrade したらなぜかその後、起動時に「Unable to read partition as FAT」のメッセージが出て起動できなくなりました。
おそらく /boot/firmware の破損のようでした。
このような場合の復旧方法です。
Raspberry Pi 4 Model B で Ubuntu20 をUSB接続のHDD/SSDから起動する – パソコン鳥のブログ
中身を消していいUSBメモリを用意してください。
また途中WSL上で作業しますので、WSLが入っていない場合はインストールしておいてください。
https://old-releases.ubuntu.com/releases/ から、Raspberry Pi で動作していた Ubuntuバージョンに近いRaspberry Pi の Ubuntuイメージをダウンロードします。
次のように、ubuntu-バージョン-preinstalled-server-arm64+raspi.img.xz の形式です。
https://www.raspberrypi.org/downloads/ から Raspberry Pi Imager をダウンロード・実行してインストールします。
USBメモリをPCにさして、Raspberry Pi Imager を起動します。次のような画面が出ます。

[OSを選択]で [Use custom]を選択します。OSイメージの選択になるので、先の手順でダウンロードしたRaspberry Pi の Ubuntuイメージを指定します。
[ストレージを選択]で、書き込み先のUSBメモリを指定し、[次へ]を押してください。
次の画面で [いいえ] を選択します。

[はい] を押してください。

USBメモリへの書き込みが行われます。
[SDカードをSDカードリーダーから取り出すことができます]と出たら、USBメモリを外して、[続ける]を押した後に Raspberry Pi Imager を閉じます。
再度USBメモリをPCにさします。
Windowsのドライブが表示されます。そのドライブの中にファイル vmlinuz 等があるはずです。
次に、下の記事の手順で、Raspberry Pi につながっていたHDDをWSLで見えるようにします。
マウントの直前まで実施してください。
WSL2でLinuxのHDDをマウントする – パソコン鳥のブログ
WSLでマウントします。デバイス名は、/dev/sdc1 といった最後の数字が1のものにしてください。
sudo mkdir /mnt/linux-hdd
sudo mount /dev/sdc1 /mnt/linux-hdd
次に、WindowsのエクスプローラーでCドライブの下にディレクトリ(ここではsrcとします)を作成し、そこにUSBメモリの中のファイルをコピーします。
続けてWSLで次を実行します。
sudo cp -r /mnt/c/src/* /mnt/linux-hdd/
/mnt/linux-hdd/config.txt で次の行を探します。
[pi4]
kernel=uboot_rpi_4.bin
次のように変更します。
[pi4]
#kernel=uboot_rpi_4.bin
max_framebuffers=2
dtoverlay=vc4-fkms-v3d
boot_delay
kernel=vmlinux
initramfs initrd.img followkernel
次を実行します。
sudo su
cd /mnt/linux-hdd/
dd if=vmlinuz bs=1 | zcat > vmlinux
WSLから exit した後、Windowsのコマンドプロンプトで wsl –shutdown を実行します。
これで Raspberry Pi のHDDの /boot/firmware が復旧出来ました。
コメント