You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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更安全:

  1. 先把当前debconf配置导出到临时文件:
    debconf-get-selections > ~/debconf-selections.tmp
    
  2. 编辑这个临时文件,找到包含grub-efi/install_devices的行,把里面的无效路径/dev/disk/by-id/scsi-36000c2975c86d58beaecefea23c29f2d-part1替换成你刚才找到的真实EFI分区路径/UUID。
  3. 把修改后的配置导回debconf:
    debconf-set-selections < ~/debconf-selections.tmp
    
  4. (可选)临时文件可以删掉,或者留着当备份: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包就行:

  1. 强制卸载grub-efi和shim-signed:
    dpkg --purge --force-all grub-efi-amd64 shim-signed
    
  2. 安装BIOS启动用的grub-pc:
    apt install grub-pc
    
  3. 再修复并继续升级:
    apt --fix-broken install
    apt upgrade
    

小提醒

操作前可以先备份一下debconf的配置文件,防止改坏了能恢复:

cp /var/cache/debconf/config.dat /var/cache/debconf/config.dat.bak

备注:内容来源于stack exchange,提问作者Ambulare

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.16 09:03:04