Linux grub 恢复,error: symbol ‘grub_is_lockdown‘ not found.

上周六Debian Buster升级后,周一回来,开机提示如下

error: symbol 'grub_is_lockdown' not found.

Entering rescue mode...

grub rescue>

这已经是一年内第二次升级后,grub出问题了,按说这还是stable版本,不应该啊。以下是恢复grub过程还原:

准备:

制作一个linux系统启动盘,我用的是Ubuntu20.04,建议不要用Debian,我记得上次做一了个Debian的U盘,启动后,里面好像没有 grub-install这个命令(可能记错了,反正就是少一个需要用到的命令)。Windows下的制作工具:https://rufus.ie/zh/

从U盘启动,进入 ubuntu,打开终端,键入以下命令:

  1. sudo -i 进入root用户
  2. mount /dev/sdax /mnt 挂载根目录分区,/dev/sdax是Debian系统的根目录(/)分区,如果不能确定的话,先用gparted的查看
  3. mount /dev/sdaxx /mnt/boot 挂载BOOT分区,如果boot和/是在同一目录的,则忽略此步骤
  4. mout /dev/sdaxxx /mnt/boot/efi 挂载EFI分区,/dev/sdaxxx是EFI分区
  5. mount -v --bind /proc/ /mnt/proc
  6. mount -v --bind /dev/ /mnt/dev
  7. mount -v --bind /sys /mnt/sys
  8. mkdir /mnt/run/NetworkManager; mount -v --bind /run/NetworkManager /mnt/run/NetworkManager

5~7 mount是将当前运行系统中的数据同步到chroot后的系统,8是将网络配置同步到chroot后的系统,这样chroot后才可以访问网络

9. chroot /mnt

接下来是下载上一个版本的grub相关包,当前出问题的是 2.02+dfsg1-20+deb10u4版本,debian package网站上还有一个老版本2.02+dfsg1-20+deb10u1,需要下载以下包

  • grub2-common_2.02+dfsg1-20+deb10u1_amd64.deb 
  • grub-efi_2.02+dfsg1-20+deb10u1_amd64.deb    
  • grub-efi-amd64-bin_2.02+dfsg1-20+deb10u1_amd64.deb
  • grub-common_2.02+dfsg1-20+deb10u1_amd64.deb  
  • grub-efi-amd64_2.02+dfsg1-20+deb10u1_amd64.deb

以下是链接:

http://mirrors.ustc.edu.cn/debian/pool/main/g/grub2/grub2-common_2.02%2Bdfsg1-20%2Bdeb10u1_amd64.deb

http://mirrors.ustc.edu.cn/debian/pool/main/g/grub2/grub-efi_2.02%2Bdfsg1-20%2Bdeb10u1_amd64.deb

http://mirrors.ustc.edu.cn/debian/pool/main/g/grub2/grub-efi-amd64-bin_2.02%2Bdfsg1-20%2Bdeb10u1_amd64.deb

http://mirrors.ustc.edu.cn/debian/pool/main/g/grub2/grub-common_2.02%2Bdfsg1-20%2Bdeb10u1_amd64.deb

http://mirrors.ustc.edu.cn/debian/pool/main/g/grub2/grub-efi-amd64_2.02%2Bdfsg1-20%2Bdeb10u1_amd64.deb

 

下载完成后,通过dpkg -i 安装上述几个文件包,它们之前可能存在依赖关系,我刚开始时是dpkg -i *.deb安装的,后来出现一些依赖问题,查看原先正常升级时的安装过程,顺序似乎如下:

grub-efi

grub2-common

grub-efi-amd64

grub-efi-amd64-bin

grub-common

安装结束时,出现了一些错误,好像是在检索/dev下的其它一些未挂载的设备,一直提示超时,类似“WARNING: Device /dev/sda1 not initialized in udev database even after waiting 10000000 microseconds.”

这个我是忽略了,出现这个现象后,直接结束,然后从硬件启动,grub显示恢复正常了,只恢复了Debian的,没有出现Windows,需要进入Debian后,用dpkg -i grub-common....deb(可能是这个安装包),这时就能发现Windows系统了。

此次出错和下次不一样。上次是直接grub就没了,后来应该是通过 grub-install这个命令重装安装了grub,这次出错感觉是软件包出了问题,grub-install安装回去的还是问题软件包,所以无法解决,只能装回旧的软件包。

此过程使用bing搜索了相关资料,比如mount -v --bind 参考如下链接:

https://qastack.cn/superuser/165116/mount-dev-proc-sys-in-a-chroot-environment

此bug的链接,在3月份已经有人反馈,也许影响到的人太少了吧,写此文是没有解决。

https://bugs.debian.org/cgi-bin/pkgreport.cgi?package=grub-efi-amd64

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值