Ubuntu LTS 16.04更新失败求助:grub-efi-amd64-signed报错EFI目录未找到
grub-efi-amd64-signed的EFI目录找不到问题 嘿,我太懂这种Windows更新搞砸Ubuntu配置的糟心感了!别担心,不用重装系统,咱们几步就能把更新功能救回来。
第一步:定位你的EFI分区
首先得找到你的EFI系统分区,Windows更新很可能打乱了它的挂载配置。运行下面的命令:
sudo fdisk -l
在输出里找TYPE为EFI System的分区,通常是/dev/sda1或者类似的设备名,记下来这个路径(比如/dev/sda1)。
第二步:检查EFI分区是否挂载到/boot/efi
Ubuntu更新grub包时需要访问/boot/efi目录,要是这个分区没挂载就会报错。运行命令确认:
mount | grep /boot/efi
如果没有任何输出,说明分区没挂载,这就是问题根源!
第三步:手动挂载EFI分区
先确保/boot/efi目录存在(一般默认都有),然后用刚才找到的分区路径挂载:
sudo mount /dev/sda1 /boot/efi
替换/dev/sda1为你实际的EFI分区路径。挂载后再运行一次mount | grep /boot/efi,看到输出就说明挂载成功了。
第四步:修复grub相关包并重新更新
现在挂载好了EFI分区,咱们重新安装出问题的包,再更新grub:
sudo apt-get install --reinstall grub-efi-amd64-signed sudo update-grub
完成后再试试运行更新命令:
sudo apt-get dist-upgrade
这时候应该不会再报EFI目录找不到的错误了。
第五步:永久修复挂载配置(避免下次重启再出问题)
为了防止重启后又出现同样的问题,咱们把EFI分区的挂载信息写到/etc/fstab里:
- 先获取EFI分区的UUID:
sudo blkid /dev/sda1
找到输出里的UUID=XXXX-XXXX(比如UUID=ABC1-DEF2),复制这个UUID。
2. 编辑fstab文件:
sudo nano /etc/fstab
在文件末尾添加一行:
UUID=ABC1-DEF2 /boot/efi vfat defaults 0 1
替换ABC1-DEF2为你刚才复制的UUID。按Ctrl+O保存,回车确认,再按Ctrl+X退出编辑器。
3. 测试配置是否生效:
sudo mount -a
如果没有报错,说明配置没问题,下次重启后EFI分区会自动挂载。
为什么会出现这个问题?
Windows更新有时候会重置EFI分区的权限或者修改分区表的标记,导致Ubuntu自动挂载EFI分区的配置失效。虽然GRUB还能正常引导系统(因为引导文件已经在EFI分区里了),但更新grub签名包时需要读写/boot/efi目录,找不到就会触发报错。
内容的提问来源于stack exchange,提问作者Arto Makkonen

