🍄

【Ubuntu 22.04】grub-efi-amd64-signed設定エラーの解決: /var/lib/grub/espマウント問題

2023/11/29に公開

問題の概要

Ubuntu 22.04のシステムアップグレード時に、grub-efi-amd64-signed の設定中に生じた複雑なエラーに直面した経験を共有します。

具体的には、/var/lib/grub/esp のマウントオプションに関するエラーについて焦点を当てます。

問題のエラーメッセージは以下のように表示されました:

mount: /var/lib/grub/esp: bad option; for several filesystems (e.g. nfs, cifs) you might need a 
/sbin/mount.<type> helper program.
dpkg: パッケージ grub-efi-amd64-signed の処理中にエラーが発生しました (--configure):
 installed grub-efi-amd64-signed package post-installation script subprocess returned error exit
 status 32
dpkg: 依存関係の問題により shim-signed の設定ができません:
 shim-signed は以下に依存 (depends) します: grub-efi-amd64-signed (>= 1.187.2~) | grub-efi-arm64
-signed (>= 1.187.2~) ...しかし:
  パッケージ grub-efi-amd64-signed はまだ設定されていません。
  パッケージ grub-efi-arm64-signed はまだインストールされていません。

dpkg: パッケージ shim-signed の処理中にエラーが発生しました (--configure):

処理中にエラーが発生しました:
 grub-efi-amd64-signed
 shim-signed
E: Sub-process /usr/bin/dpkg returned an error code (1)

このブログでは、この問題を解決するために踏んだステップと、問題解決の鍵となった /var/cache/debconf/config.dat ファイル内の古いデバイス設定の削除に焦点を当てています。私の経験が、同じ問題に直面している他のユーザーにとって役立つ情報を提供することを目指しています。

問題の対処

問題解決に向けて、以下の具体的なステップを踏みました。

1. エラーメッセージの確認

まず、apt upgrade時に発生していた問題のエラーメッセージを確認したところ。
grub-efi-amd64-signed のエラーの前に以下のエラーが発生していることがわかります。

mount: /var/lib/grub/esp: bad option; for several filesystems (e.g. nfs, cifs) you might need a 
/sbin/mount.<type> helper program.

このメッセージから、問題が /var/lib/grub/esp マウントポイントの設定に関連していることが明らかになりました。

さらに、類似ケースを調査したところ、問題の根本原因が /var/cache/debconf/config.dat ファイル内にキャッシュされている古いデバイス名や設定にあることが判明しました。

このファイルには、過去に使用されたデバイス情報が残っており、それが現在の設定プロセスに影響を及ぼしていました。

2. /var/cache/debconf/config.dat ファイルの確認

次に、/var/cache/debconf/config.dat ファイルを直接確認します:

cat /var/cache/debconf/config.dat

このファイルは、システムの設定に関連する多くの重要な情報を保持しており、GRUBのインストールおよび設定時に使用されるデバイスやパーティションに関する情報を含んでいます。

確認したところ grub-efi 関連のエントリーに、古いデバイス設定がキャッシュされていることを発見しました。特に、過去に使用されていたUSBデバイスの情報が残っており、GRUBのアップデートや再設定時に問題が生じる原因でした。

3. 不要なキャッシュの削除

キャッシュの削除の前に/var/cache/debconf/config.datのバックアップを取ることを推奨します:

sudo cp /var/cache/debconf/config.dat /var/cache/debconf/config.dat.backup

バックアップを取ったら、古いデバイス情報を含むブロックを慎重に削除します。

私の場合、以下の grub-efi/install_devicesgrub-efi/install_devices_disks_changed のブロックを削除しました:

Name: grub-efi/install_devices
Template: grub-efi/install_devices
Value: /dev/disk/by-id/usb-BUFFALO_USB_Flash_Disk_071832DD2FB1F748-0:0-part1
Owners: grub-common, grub-efi-amd64, grub-pc
Flags: seen
Variables:
 CHOICES = /dev/sda1 (536 MB; /boot/efi) on 15525 MB USB_Flash_Disk
 RAW_CHOICES = /dev/disk/by-id/usb-BUFFALO_USB_Flash_Disk_071832DD2FB1F748-0:0-part1

Name: grub-efi/install_devices_disks_changed
Template: grub-efi/install_devices_disks_changed
Value: /dev/disk/by-id/usb-BUFFALO_USB_Flash_Disk_071832DD2FB1F748-0:0-part1, /dev/disk/by-id/nvme-SOLIDIGM_SSDPFKNU010TZ_PHEH2404077G1P0B-part1
Owners: grub-common, grub-efi-amd64, grub-pc
Flags: seen
Variables:
 CHOICES = 
 RAW_CHOICES = 

これにより、grub-efi-amd64-signed が現在のシステム構成に基づいて正しく再構成できるようになります。

4. GRUBの再構成

/var/cache/debconf/config.datを修正したら、GRUBの再構成を行います:

sudo dpkg-reconfigure grub-efi-amd64-signed

grub-efi-amd64-signed パッケージが壊れているか、完全にインストールされていない場合は、再インストールをします:

sudo apt-get install --reinstall grub-efi-amd64-signed

grub-efi-amd64-signed がインストールできたら、パッケージ設定の再試行を行います:

sudo dpkg --configure -a

5. システムのアップデートと再起動

全ての変更を適用した後、システムのパッケージリストを更新し、アップグレードを試み、再起動します:

sudo apt-get update
sudo apt-get upgrade
sudo reboot

この手順を通じて、grub-efi-amd64-signed のインストールおよび設定に関連する問題を解決することができました。

Discussion