大家在使用 Linux 系统,特别是双系统,因为调整分区或者其他原因导致开机出现 grub rescue> 界面时,不要惊慌,可能并不是系统文件损坏,大家通过一些恢复手段,能进行修复。下面就详细介绍一下。

原因分析

造成该问题的原因可能有:

  1. 对硬盘进行分区、修改使硬盘分区发生变化
  2. 重装系统时选择了不同分区
  3. 格式化了 Linux 分区

其中,第 1、2 点原因造成的引导丢失比较容易修复,第 3 点原因造成的引导丢失无法修复。

恢复步骤

1.列出硬盘分区

首先,使用 ls 命令列出所有分区:

grub rescue> ls

系统会显示出硬盘的所有分区,例如:

(hd0),(hd0,gpt0),(hd0,gpt1),(hd0,gpt2),(hd0,gpt3),(hd0,gpt4)

2.找到 grub 文件夹所在分区

如果系统的「/boot」文件夹没有单独分区(大多数人应该是如此),那么使用 ls (X,Y)/boot/grub 命令浏览所有分区,其中 X 代表硬盘号,Y 代表分区号,如:

grub rescue> ls (hd0,gpt3)/boot/grub

如果系统没有报错,显示出了文件夹下面的文件,那么该分区就是我们要找的分区,记下硬盘号和分区号。

同样的,如果系统的「/boot」文件夹单独为一个分区或者上一条指令没有找到需要的分区,则使用 ls (X,Y)/grub 命令,其中 X 代表硬盘号,Y 代表分区号。

3.设置 grub 启动位置

设置 grub 启动的分区和文件夹,如:

grub rescue> set root=(hd0,gpt3)
grub rescue> set prefix=(hd0,gpt3)/boot/grub

其中的硬盘号和分区号需要自行确定;grub 安装位置也需要自行确定,即第二行中,/boot/grub 根据需求替换为 /grub

4.设置 grub 进入正常模式

通过以下命令,进入正常模式:

grub rescue> insmod normal
grub rescue> normal

至此,grub 由恢复模式进入了正常模式,丢失的启动菜单应该能正常显示了,可以通过 grub 引导至系统。

5.更新 grub 引导

如果此时重启,问题依旧存在。所以我们进入 Linux 系统后,需要马上更新 grub 引导,对 grub 进行修复。在进入 Linux 系统后,在终端执行:

$ sudo update-grub
$ sudo grub-install /dev/sda

至此,你可以重新启动,进入正常的引导界面了,丢失的引导就修复回来了。