修复Grub2救援未知文件系统错误

时间:2020-03-05 15:26:49  来源:igfitidea点击:

GRUB是大统一引导加载程序,这是基于Linux内核的操作系统的默认引导加载程序。
如果我们有一个双引导系统,如Windows和Linux,那么我们可能会有一些问题。
如果在Linux安装之后安装Windows(例如ubuntu或者centos),那么Windows将自己的Bootloader放在MBR上。
所以grub不再可见。
在大多数情况下,需要重新安装GRUB在这种情况下。

本文提供了一些方案,使GRUB2不可释录,并且可以重新安装GRUB,以便解决像获取"错误:未知文件系统"的问题。

GRUB救援

当GRUB无法启动系统时,或者无法找到第二阶段,它将用户丢弃到看起来像的GRUB提示符:

error: unknown filesystem
grub rescue >

重新安装Grub.

首先,我们需要启动系统。
在GRUB提示符下,我们可以运行以下命令以启动系统。

root (hd0,0)
kernel /vmlinuz-2.6.18-238.el5 ro root=/dev/sda1
initrd /initrd-2.6.18-238.el5.img
boot

当然,Linux内核和initrd文件版本将是不同的。
这仅适用于GRUB遗产。
对于GRUB 2,我们需要运行以下命令以启动。

set root=(hd0,6)
set prefix=(hd0,6)/boot/grub
insmod normal
normal

此外,我们还需要将分区更改为引导分区。

如果我们无法启动系统(可能是由于文件系统的错误,或者由于缺少GRUB配置文件),我们需要从其他媒体启动。
如果可用,我们可以使用一些可启动救援CD或者分发的实时CD。

启动到系统后,如果缺少或者错误配置,我们可能需要创建GRUB配置文件。
要创建这些配置文件,请运行

$update-grub

此命令需要超级用户权限。
因此,运行此命令(以及本文中的以下命令)作为root。

下一步是在MBR上安装GRUB。
这将解决Windows引起的问题,其中Windows在Linux上安装Windows后,Windows在MBR上安装其引导加载程序。
其中我假设我们已从Live或者Rescue CD启动。

现在,在我们去MBR上安装Grub的详细信息之前,我们需要安装Linux的根分区。

$mount /dev/sda1 /mnt

其中假设根分区为/dev/sda1.
此分区安装在/mnt目录上。
我们可以选择自己的挂载点,根文件系统分区可能不同。

现在,我们准备安装Grub。
运行以下命令

$grub-install --root-directory=/mnt//dev/sda

这将在主引导记录上安装GRUB。
如果要在某些分区上安装它,请将上述命令的最后一个参数用正确的分区替换。