在 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 包升级过程正在尝试查找旧驱动器。
我尝试过的事情:
sudo dpkg --configure -a
以防它能神奇地解决问题sudo dpkg-reconfigure grub-efi-amd64-signed
但它只是返回“grub-efi-amd64-signed 已损坏或未完全安装。”- 查找整个旧磁盘
/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 键,包升级成功。
答案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 已写入适当的引导设备。