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

Lia*_*ott 6 apt boot grub2 uefi 20.04

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

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
Run Code Online (Sandbox Code Playgroud)

我想要一些方法来修复包安装,所以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/任何引用进行grepping ,没有任何

Lia*_*ott 10

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

解决方案是打开 gparted,右键单击分区上的“管理标志”/boot/efi,单击esp复选框,然后单击“关闭”

然后sudo apt upgrade在配置包的过程中运行时询问了一个问题grub-efi-amd64-signed,询问 grub 应安装到哪个磁盘:

GRUB 引导加载程序之前安装到的磁盘已不再存在,或其唯一标识符由于某种原因已更改。

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

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


Dim*_* L. 7

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

sudo rm /var/cache/debconf/config.dat
Run Code Online (Sandbox Code Playgroud)

之后我就可以sudo dpkg --configure -a毫无问题地运行了

  • 您可能应该编辑该文件,而不是直接删除它。它保存了您对许多软件包的首选项,仅删除它可能会产生副作用。 (2认同)

gof*_*fr1 5

我只是遇到了同样的问题。感谢您的回答,我知道该怎么做,但我建议不使用 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
Run Code Online (Sandbox Code Playgroud)

现在标志已设置。在那之后:

sudo apt --fix-broken install
Run Code Online (Sandbox Code Playgroud)

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