Raspberry Piで動かしているUbuntuが起動しなくなった場合の復旧メモ

ALL
スポンサーリンク

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://old-releases.ubuntu.com/releases/24.04/ubuntu-24.04-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 が復旧出来ました。

コメント