惚兮恍兮其中有象

发布于     更新于
使用 Live CD 修复 debian grub 引导

孔德之容,唯道是从。道之为物,唯恍唯忽。 忽兮恍兮,其中有象;恍兮忽兮,其中有物。 窈兮冥兮,其中有精,其精甚真,其中有信。 自古及今,其名不去,以阅众甫,吾何以知众甫之然哉。以此。

使用 Live CD 修复 debian grub 引导。

错误操作导致找不到引导项

看到几次 debian 的软件商店提示有一个 Secure Boot dbx 的更新,但是点击更新又提示失败。于是搜了一下:

大概是这样的,看起来是和装了 Windows 双系统有关 : 来源

Screenshot

搜到这一串命令:

sudo fwupdmgr refresh && sudo fwupdmgr get-updates
sudo fwupdmgr update

如此一来,还是报错:

Blocked executable in the ESP, ensure grub and shim are up to date

找到这一条,看到 别人提到 可以输入:fwupdmgr refresh --force 这边输入了,还是报错,于是 灵机一动 改成了 sudo fwupdmgr update --force 重启电脑,找不到 debian 的引导项了……


修复过程

参考这里:https://wiki.debian.org/GrubEFIReinstall

首先下载 镜像,然后制作 U盘 安装介质

# cp debian.iso /dev/sdX
# sync

运行完之后,将 u盘插到有问题的电脑上:

  • 首先检查是不是以 UEFI 模式启动,看了一下,/sys/firmware/efi/efivars 不为空,所以跳过这一步。
  • 我自己的电脑并没有 boot 的分区,也没有 LUKS 加密的分区,所以这里使用文档上的 另一个例子:
mount /dev/nvme0n1p7 /mnt/
mount /dev/nvme0n1p1 /mnt/boot/efi
  • 接下来这一步,直接按照文档的来,绑定挂载虚拟文件系统:
for i in /dev /dev/pts /proc /sys /sys/firmware/efi/efivars /run; do sudo mount -B $i /mnt$i; done
  • 然后进入到损坏的系统,重新安装的 GRUB 到对应的盘(没有分区号),生成 GRUB 配置文件:
chroot /mnt
grub-install /dev/nvme0n1p
update-grub

重启电脑,就好了。