💾
"mount: /var/lib/grub/esp: special device /dev/disk/by-id..." に対処した話
経緯
BHyVe 上で作成した仮想マシンのディスクイメージだけを Proxmox にインポートして実行していて普通に起動して利用していたのだが、apt update を実行するとパッケージの構成でエラーが生じてインストールもアップデートも出来なくなって困っていたので調査した。
問題
grub-efi-amd64-signed のアップデート処理で以下のようなエラーが出て失敗する。
Setting up grub-efi-amd64-signed (1.182~22.04.1+2.06-2ubuntu10) ...
mount: /var/lib/grub/esp: special device /dev/disk/by-id/virtio-BHYVE-99C8-F7E5-1FCC-part1 does not exist.
dpkg: error processing package grub-efi-amd64-signed (--configure):
installed grub-efi-amd64-signed package post-installation script subprocess returned error exit status 32
dpkg: dependency problems prevent processing triggers for shim-signed:
shim-signed depends on grub-efi-amd64-signed | grub-efi-arm64-signed; however:
Package grub-efi-amd64-signed is not configured yet.
Package grub-efi-arm64-signed is not installed.
dpkg: error processing package shim-signed (--configure):
dependency problems - leaving triggers unprocessed
Errors were encountered while processing:
grub-efi-amd64-signed
shim-signed
needrestart is being skipped since dpkg has failed
原因
各種のパッケージは /var/cache/debconf/config.dat ファイルの中に、過去に選択したオプションや設定した値などをキャッシュしている。
grub-efi-amd64-signed パッケージは過去に構成したときに使ったディスクやデバイス名の情報をそのファイルの中に持っていて、update 等の処理が走ったときにそのデバイス名を元に再構成しようとするために「想定しているデバイスが見つからない」となってエラーを出している。
対処
sudo vim /var/cache/debconf/config.dat
して、ファイルの中で過去のデバイス名をキャッシュしている箇所を見つけてブロックごと削除する。(空行で区切られている段落全体を消す)
Discussion