ある日突然のエラー
upgradeを実行したら以下のエラーが出ました。
XXX@XXXX:~$ sudo apt upgrade -y
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Calculating upgrade... Done
The following package was automatically installed and is no longer required:
linux-image-6.8.0-41-generic
Use 'sudo apt autoremove' to remove it.
The following upgrades have been deferred due to phasing:
ubuntu-advantage-tools ubuntu-pro-client ubuntu-pro-client-l10n
0 upgraded, 0 newly installed, 0 to remove and 3 not upgraded.
2 not fully installed or removed.
After this operation, 0 B of additional disk space will be used.
Setting up linux-image-6.8.0-41-generic (6.8.0-41.41) ...
Setting up linux-image-6.8.0-44-generic (6.8.0-44.44) ...
Processing triggers for linux-image-6.8.0-41-generic (6.8.0-41.41)
/etc/kernel/postinst.d/initramfs-tools:
update-initramfs: Generating /boot/initrd.img-6.8.0-41-generic
Using DTB: bcm2712-rpi-5-b.dtb
Couldn't find DTB bcm2712-rpi-5-b.dtb on the following paths: /etc/flash-kernel/dtbs /usr/lib/linux-image-6.8.0-41-generic /lib/firmware/6.8.0-41-generic/device-tree/
Installing into /boot/dtbs/6.8.0-41-generic/./bcm2712-rpi-5-b.dtb
cp: cannot stat '': No such file or directory
run-parts: /etc/initramfs/post-update.d//flash-kernel exited with return code 1
run-parts: /etc/kernel/postinst.d/initramfs-tools exited with return code 1
dpkg: error processing package linux-image-6.8.0-41-generic (--configure):
installed linux-image-6.8.0-41-generic package post-installation script subprocess returned error exit status 1
Processing triggers for linux-image-6.8.0-44-generic (6.8.0-44.44)
/etc/kernel/postinst.d/initramfs-tools:
update-initramfs: Generating /boot/initrd.img-6.8.0-44-generic
Using DTB: bcm2712-rpi-5-b.dtb
Couldn't find DTB bcm2712-rpi-5-b.dtb on the following paths: /etc/flash-kernel/dtbs /usr/lib/linux-image-6.8.0-44-generic /lib/firmware/6.8.0-44-generic/device-tree/
Installing into /boot/dtbs/6.8.0-44-generic/./bcm2712-rpi-5-b.dtb
cp: cannot stat '': No such file or directory
run-parts: /etc/initramfs/post-update.d//flash-kernel exited with return code 1
run-parts: /etc/kernel/postinst.d/initramfs-tools exited with return code 1
dpkg: error processing package linux-image-6.8.0-44-generic (--configure):
installed linux-image-6.8.0-44-generic package post-installation script subprocess returned error exit status 1
Errors were encountered while processing:
linux-image-6.8.0-41-generic
linux-image-6.8.0-44-generic
needrestart is being skipped since dpkg has failed
E: Sub-process /usr/bin/dpkg returned an error code (1)
どうやらbcm2712-rpi-5-b.dtbというファイルが特定のフォルダの中で欠落している事によるエラーのようですが、ネットで調べても根本的な解決方法や原因を特定する事ができませんでした。
この方法が正しいのか分かりませんが、対処療法としてbcm2712-rpi-5-b.dtbのファイルをエラーが出ていたフォルダにコピーする事にしました。
bcm2712-rpi-5-b.dtb自体は/boot/firmwareに入っています。
ls /boot/firmware
bcm2712-rpi-5-b.dtb
/boot/firmwareに入っているbcm2712-rpi-5-b.dtbを/lib/firmware/6.8.0-41-generic/device-tree/にコピーします。
sudo cp /boot/firmware/bcm2712-rpi-5-b.dtb /lib/firmware/6.8.0-41-generic/device-tree/
私の場合は6.8.0-44-genericの方もエラーが出ていたのでそちらにもコピーしました。
sudo cp /boot/firmware/bcm2712-rpi-5-b.dtb /lib/firmware/6.8.0-44-generic/device-tree/
この時点で試しにupgradeをしたところ、エラーが出なくなったので無事解決(?)したようです。
しばらくはエラーが出ないか様子見します。
追記 : ChatGPTに解決方法を聞いてみた
分からないことはググる…だけでなく今はAIに質問できる時代になりました。
というわけでChatGPTに聞いてみました。以下、返信の内容です。
このエラーメッセージは、bcm2712-rpi-5-b.dtb
というデバイスツリーブロブ(DTB)ファイルが指定されたパスで見つからないことを示しています。これは、特にRaspberry Pi 5などのデバイスのためのLinuxカーネルやブートローダーが正しく設定されていない場合に発生することがあります。
この問題を解決するために以下の手順を試してみてください。
1. ファームウェアとカーネルの更新
まず、Raspberry Piのファームウェアとカーネルが最新バージョンであることを確認します。次のコマンドで更新を行います。
sudo apt update
sudo apt full-upgrade
sudo rpi-update
rpi-update
はRaspberry Piのカーネルとファームウェアを最新にアップデートするツールです。ただし、このコマンドを使用すると不安定なバージョンがインストールされる可能性があるため、通常の運用では慎重に使用してください。
2. デバイスツリーファイルのインストールを確認
bcm2712-rpi-5-b.dtb
が見つからない場合、デバイスツリーファイルが正しくインストールされていない可能性があります。次のパスにデバイスツリーファイルが存在するか確認します。
ls /lib/firmware/6.8.0-44-generic/device-tree/
もしファイルが存在しない場合、次のコマンドでraspberrypi-firmware
パッケージを再インストールしてみてください。
sudo apt install --reinstall raspberrypi-bootloader raspberrypi-kernel
3. DTBファイルの手動コピー
もし自動的にインストールされない場合は、手動でDTBファイルを取得して、適切なディレクトリにコピーすることが必要です。インターネットからファイルを取得し、次のコマンドで正しい場所にコピーします。
sudo cp bcm2712-rpi-5-b.dtb /lib/firmware/6.8.0-44-generic/device-tree/
4. ブート設定の確認
Raspberry Piが正しく起動するためには、/boot/config.txt
ファイルに正しい設定が必要です。以下の行が含まれているか確認してください。
dtparam=audio=on
dtoverlay=vc4-kms-v3d
適切なDTBファイルを指定するためにdevice_tree
オプションも設定できます。
device_tree=/lib/firmware/6.8.0-44-generic/device-tree/bcm2712-rpi-5-b.dtb
5. 再起動
最後に、システムを再起動して変更が反映されるか確認します。
sudo reboot
これらの手順で問題が解決するか確認してみてください。
コメント