Ubuntu引导修复:针对grubrescue||grubnotfound||unknownfilesystem类型的错误


引言

  Ubuntu一般是通过grub引导。grub分为三种:grub,grub2,和grub for dos(grub4dos).
  最近在Windows下将一个较大的分区分了100G出来,准备用来装Win10,我在启动Ubuntu的时候,出现了一个问题:grub not found ===>grub rescue.
  出现这个问题的原因是grub找不到Ubuntu所在的分区(出现这种情况一般是因为你调整了分区,而grub配置没有作出相应的调整)。一般情况下,出现这种问题,有2种解决办法:
1. 使用EasyBCD软件调整;
2. 在命令行下通过命令重新指定分区;

使用EasyBCD软件进行调整

百度搜索EasyBCD 2.2,下载并安装(免费软件)。以管理员身份运行; 点击“添加新条目”,如下图所示:
操作1 在操作系统选项中选中“Linux/BSD”:
操作2 类型一栏中选中“GRUB2”,名称随便填,驱动器选择“自动定位和加载”,最后选中“添加条目”。 这样,问题就解决了,重启电脑,选择Ubuntu 最后要说明的是,这种方法有时会失效。

在命令行下通过命令重新指定分区

由于在rescue模式下,只有少量的基本命令可用,必须通过一定的操作才能加载模块,然后进入正常模式; rescue模式下可以使用的命令有:set,ls,insmod,root,prefix(设置启动路径);

grub rescue模式下命令解释:
ls:查看系统设备状态
set:查看启动路径和分区
root:设置grub启动分区
prefix:设置grub的启动路径
insmod:加载模块

首先,就是要找到grub所在的分区。使用ls命令:grub rescue>ls ,然后就会列出你的磁盘上所有的分区,比如我的是:(hd0,msdos10),(hd0,msdos9)……; 然后,输入如下命令:ls (hd0,msdos10)/grub或者ls (hd0,msdos10)/boot/grub(一般是后一种).这里必须注意的是:这个命令只是一个模版,每个人的电脑可能是不一样的,请根据自己的电脑输入命令。如果系统返回:unknown filesystem,则继续输入列出的下一个分区,直到有某个分区显示的不是unknown filesystem,而是其它的内容的时候,grub所在的分区就找到了,继续; grub rescue> set root=(hd0,msdos10) ; grub rescue> set prefix=(hd0,msdos10)/boot/grub 或者可能是grub rescue> set prefix=(hd0,msdos10)/grub 这个看具体grub在哪个位置; grub rescue> insmod normal ; grub rescue> normal ; 此时,应该已经进入Ubuntu系统的正常模式,进入系统吧! 不过,事情还没玩。进入Linux系统后,在root终端中将grub再刷一遍:
# update-grub
# grub-install /dev/sda 搞完之后,一切就OK了,之后再怎么重启都没问题了。如果以后再遇到类似的问题,同等视之。

相关内容