Linux + Windows 双系统,Grub 突然不见了?!

电脑一次睡眠未醒死机,强制重启后,长时间的等待给了我一种不好的预感。果然,发现没了熟悉的 Grub 界面,反而直接进 Win10,进 BIOS 一看,发现没有 Grub 的启动项了joy……

how-to-reinstall-grub-title.jpg

故障描述

首先贴出环境,电脑的引导是 UEFI + GPT 1,系统是 Kali Liunx + Windows 10。Linux 下笔记本电脑盖上后睡眠,有时候会“醒不来”,打开后电脑 CPU 风扇狂转,只有长按电源键强制断电。前些天又是这样,长按断电关机重启后,一段长时间的等待给了我一种不好的预感,然后发现 Grub 界面没了,开机直接进 Windows 10,进 BIOS 发现 Grub 的启动项没了

原因分析

一开始赶紧拿起手机打开 Google,emmmmm……输入什么关键字好呢?大脑一片空白,想着 BIOS 里的 Grub 的启动项没了,那就恢复一下呗,就和恢复 Windows 的启动项一样。但是行动后,发现常用来帮别人重装系统的 U盘—— 微PE 的 WinPE 中的工具好像没办法,它只能恢复 Windows 的启动项。

行动受挫后才突然开窍,开机后的操作系统启动管理器是 Linux 下的 Grub,进 Windows 也是通过 Grub,应该要在 Linux 环境下重建 Grub,而不是通过 WinPE 下修复 Windows 的工具。于是 Google 重建 Grub U盘,期间阅读分析搜索的结果,多次修改关键字,最后终于搜到有用的文章,并将问题顺利解决full_moon_with_face

Google 到的有用文章:

  1. 重新安装 grub-efi
  2. How to Repair, Restore, or Reinstall Grub 2 with a Ubuntu Live CD or USB

看了第一篇文章中博主的分析,分析下我的原因:强制断电导致 BIOS 损坏,于是开机后主板自动从备份 BIOS 里恢复,EFI 启动记录就丢失,然后 Grub 就消失了。

修复故障

综合上面两篇文章。

准备 U盘

先默默去 Windows 下载 Kali Linux,通过 Win32 Disk Imager 写进另一个 U盘,然后重启狂按 ESC 启动 U盘,进 Kali Live 系统。

挂载硬盘

因为用的是 U盘中的系统,所以要先挂载电脑的硬盘到当前系统,先lsblk查看硬盘,再fdisk -l /dev/sda查看硬盘分区,最后挂载 Linux 系统的根分区,比如我的硬盘是sda,Linux 系统的根分区是sda6,则:

1
mount /dev/sda6 /mnt

Now bind the directories that grub needs access to to detect other operating systems, like so.

1
2
3
4
mount --bind /dev /mnt/dev
mount --bind /dev/pts /mnt/dev/pts
mount --bind /proc /mnt/proc
mount --bind /sys /mnt/sys

安装 Grub

先用chroot命令改变程序执行时所参考的根目录位置:

1
chroot /mnt

安装 Grub:

1
2
3
grub-install /dev/sda
grub-install --recheck /dev/sda
update-grub

退出后重启:

1
exit && reboot

开机时按 ESC 应该就可以看到 Grub 的启动项了,如果不是默认,自己进 BIOS 修改一下启动项顺序就行。

最后终于开机就能看到熟悉的 Grub 界面了,哈哈哈哈哈

本文结束啦感谢您阅读
0%