拯救“消失的她”——双系统grub完美恢复方案

  • 拯救“消失的她”——双系统grub完美恢复方案已关闭评论
  • 97 次浏览
  • A+
所属分类:linux技术
摘要

双系统grub意外消失怎么办?
不用重装系统、不用去维修店、不会丢数据,教你一招,完美恢复grub!


双系统grub意外消失怎么办?
不用重装系统、不用去维修店、不会丢数据,教你一招,完美恢复grub!

背景

我的电脑是windows和linux双系统,启动项使用的grub。某天准备切换linux时突然发现grub不见了。近期可疑操作有:更新BIOS、多次切换UEFI、添加第三方风扇管理软件。总之,目前开机直接转圈圈进windows,带有双系统选择界面的grub消失,linux系统自然也进不去了。重装linux系统当然可以恢复,但是成本太高了。多番查阅资料,最终定下通过linux live USB的方式来恢复grub。该方案通过live linux系统,挂载原有系统分区,然后借助chroot,在类似原系统开机环境下,直接重新安装grub。

制作live usb

kali官网下载live镜像,插入U盘,在windows系统中使用 Etcher制作USB镜像。拯救“消失的她”——双系统grub完美恢复方案
拯救“消失的她”——双系统grub完美恢复方案

修改bios启动顺序为USB优先启动
拯救“消失的她”——双系统grub完美恢复方案
进入live USB,选择forensic模式,这种审计模式下,不会干扰原有系统数据。

恢复命令

进入live linux系统后,需要根据原有linux系统的分区情况逐一挂载。(注意:每个人分区不一样,不要照抄命令)
blkid命令可以查看硬盘分区详情,
优先挂载根分区,以便其他分区挂载。
我的命令如下:

      blkid       mount /dev/nvme0n1p4 /mnt       mount /dev/nvme0n1p5 /mnt/usr       mount /dev/nvme0n1p1 /mnt/boot/efi/       mount  --bind /dev /mnt/dev       mount --bind /dev/pts /mnt/dev/pts       mount --bind /proc /mnt/proc       mount --rbind /sys /mnt/sys       chroot /mnt 

注意sys分区挂载要用rbind,否则会报以下错误:
拯救“消失的她”——双系统grub完美恢复方案
然后安装grub,

grub-install  /dev/nvme0n1 update-grub 

拯救“消失的她”——双系统grub完美恢复方案

成果验证及bug处理

重新启动,拔出USB,可以看到grub回来了。
拯救“消失的她”——双系统grub完美恢复方案
但是……windows选项哪去了?去bios检查,两个系统都在,但grub里面没有!
拯救“消失的她”——双系统grub完美恢复方案
问题不大,grub更新后,默认关闭了其他系统的检测功能,修改grub参数即可。
vi /etc/default/grub,去掉GRUB_DISABLE_OS_PROBER=FALSE前面的注释#使其生效,
拯救“消失的她”——双系统grub完美恢复方案
然后update-grub
拯救“消失的她”——双系统grub完美恢复方案
再次重启验证,
拯救“消失的她”——双系统grub完美恢复方案
回来了,都回来了!
最后,记得把bios里面的USB优先启动顺序改回去。