Ubuntu 22.04.4 LTS服务器SSH环境下shim-signed包apt upgrade失败:特殊设备不存在错误
Ubuntu 22.04.4 LTS服务器SSH环境下shim-signed包apt upgrade失败:特殊设备不存在错误
碰到这种卡升级的问题确实头疼,我来给你一步步捋清楚怎么解决这个shim-signed的报错问题:
问题根源
这个错误是因为shim-signed的安装后脚本在尝试挂载一个压根不存在的EFI分区路径,而这个无效路径是之前grub-efi的配置里残留的——大概率是VM的存储配置变更过,或者当初初始化系统时的EFI分区配置留了无效记录,导致debconf里存了错误的设备路径,升级时脚本就死磕这个不存在的路径了。
解决步骤
第一步:找到系统实际的EFI分区(如果是EFI启动的VM)
先通过命令确认当前系统真实存在的EFI分区,用lsblk -f或者blkid都可以,比如执行blkid后,找类型为vfat、标注为ESP的分区,记下来它的实际路径(比如/dev/sda1)或者UUID(比如UUID=ABC1-2345,用UUID更稳定)。
如果你的VM其实是BIOS/MBR启动的(不是EFI),那直接跳到后面的「备选方案」就行,不用管EFI分区的事。
第二步:修复debconf里的无效配置
你已经找到无效路径在/var/cache/debconf/config.dat里了,我们可以通过debconf的命令来修改配置,比直接编辑config.dat更安全:
- 先把当前debconf配置导出到临时文件:
debconf-get-selections > ~/debconf-selections.tmp - 编辑这个临时文件,找到包含
grub-efi/install_devices的行,把里面的无效路径/dev/disk/by-id/scsi-36000c2975c86d58beaecefea23c29f2d-part1替换成你刚才找到的真实EFI分区路径/UUID。 - 把修改后的配置导回debconf:
debconf-set-selections < ~/debconf-selections.tmp - (可选)临时文件可以删掉,或者留着当备份:
rm ~/debconf-selections.tmp
第三步:重新配置grub和shim-signed包
让系统重新识别正确的分区配置:
# 重新配置grub-efi(x86_64架构用这个命令) dpkg-reconfigure -f noninteractive grub-efi-amd64 # 再重新配置shim-signed dpkg-reconfigure -f noninteractive shim-signed
第四步:修复升级并继续
最后执行修复命令,把之前中断的包配置补全,再正常升级:
apt --fix-broken install apt upgrade
备选方案:如果你的VM是BIOS/MBR启动(非EFI)
如果你的服务器根本不是EFI启动模式,那大概率是之前误装了grub-efi相关的包,直接把这些EFI相关包卸掉,换回BIOS对应的grub包就行:
- 强制卸载grub-efi和shim-signed:
dpkg --purge --force-all grub-efi-amd64 shim-signed - 安装BIOS启动用的grub-pc:
apt install grub-pc - 再修复并继续升级:
apt --fix-broken install apt upgrade
小提醒
操作前可以先备份一下debconf的配置文件,防止改坏了能恢复:
cp /var/cache/debconf/config.dat /var/cache/debconf/config.dat.bak
备注:内容来源于stack exchange,提问作者Ambulare
相关产品推荐
相关产品推荐

