升级 grub-efi-amd64-signed 时出错 - 特殊设备 [旧 SSD] 不存在

升级 grub-efi-amd64-signed 时出错 - 特殊设备 [旧 SSD] 不存在

在 Ubuntu 20.04.1 上运行时sudo apt upgrade我总是收到以下错误:

Setting up grub-efi-amd64-signed (1.142.6+2.04-1ubuntu26.4) ...
mount: /var/lib/grub/esp: special device /dev/disk/by-id/ata-Samsung_SSD_860_EVO
_500GB_S3Z1NB0K866259H-part1 does not exist.
dpkg: error processing package grub-efi-amd64-signed (--configure):
 installed grub-efi-amd64-signed package post-installation script subprocess ret
urned 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

我希望找到某种方法来修复软件包的安装,以便apt upgrade能够正常运行。

此错误的背景:我购买了一个新的 SSD,将其连接到我的计算机,dd将内容放到ata-Samsung_SSD_860_EVO_500GB_S3Z1NB0K866259H新磁盘上,进行编辑/etc/fstab以指向新磁盘,重新启动,更新 BIOS 并开始在新磁盘上使用 Ubuntu。

一切都运行正常(启动进入 Ubuntu,使用软件和硬件,升级其他软件包),除了上面的这个错误,其中 grub 包升级过程正在尝试查找旧驱动器。

我尝试过的事情:

  1. sudo dpkg --configure -a以防它能神奇地解决问题
  2. sudo dpkg-reconfigure grub-efi-amd64-signed但它只是返回“grub-efi-amd64-signed 已损坏或未完全安装。”
  3. 查找整个旧磁盘/etc/,并/boot/查找对旧磁盘的任何引用,但找不到任何

答案1

我刚刚遇到了同样的问题。感谢您的回答,我知道该怎么做,但我建议不使用 GParted GUI 来解决问题。

sudo parted
(parted) p
Model: ATA WDC WDS500G2B0A (scsi)
Disk /dev/sda: 500GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start   End    Size   File system  Name  Flags
 1      1049kB  538MB  537MB  fat32              boot
 2      538MB   500GB  500GB  ext4
(parted) set 1 esp on
(parted) p
Model: ATA WDC WDS500G2B0A (scsi)
Disk /dev/sda: 500GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start   End    Size   File system  Name  Flags
 1      1049kB  538MB  537MB  fat32              boot, esp
 2      538MB   500GB  500GB  ext4

现在标志已设置。之后:

sudo apt --fix-broken install

现在grub-efi-amd64-签名安装正确,重启后一切正常。

答案2

问题是/boot/efi分区缺少esp标志,所以 grub 无法确定将其 EFI 文件放在哪里。

解决方法是打开 gparted,右键单击管理标志/boot/efi分区上,单击尤其是勾选框,然后关闭

然后运行sudo apt upgrade在包配置期间询问grub-efi-amd64-signed应该将 grub 安装到哪个磁盘:

GRUB 引导加载程序先前安装到不再存在的磁盘,或者由于某种原因其唯一标识符已发生变化。

由于esp在 gparted 中设置了标志,因此问题对话框允许勾选新磁盘的框,我这样做了,按下 Enter 键,包升级成功。

右键菜单,管理 gparted 中突出显示的标志

答案3

我在从 AMI 恢复的 AWS EC2 实例上遇到了同样的问题。我通过以下方式解决了它:

sudo rm /var/cache/debconf/config.dat

此后,我就可以sudo dpkg --configure -a顺利运行了

答案4

我们有大约 100 台刚刚成像的机器显示此错误,因此我们需要一个快速的可编写脚本的解决方案。

快速解决:

以 root 身份运行以下命令

echo PURGE | debconf-communicate grub-common
echo PURGE | debconf-communicate grub-pc
dpkg --configure -a

替代错误消息 - 除了问题中给出的错误之外,我们还看到以下消息,为了完整性,我将其发布出来:

GRUB 引导加载程序之前安装在不再存在的磁盘上,或者由于某种原因其唯一标识符已更改。确保安装的 GRUB 核心映像与 GRUB 模块和 grub.cfg 保持同步非常重要。请再次检查以确保 GRUB 已写入适当的引导设备。

相关内容