
这是大部分Linux初学者都会遇到的一种多系统引导错误情况。
1 2 3 4 |
GRUB loading error:unknow filesystem grub rescue> |
看着纯黑的屏幕上打出白得吓人的这么几行字母对于大部分命令行都还用得不是很溜的用户来说就是一种灾难。(我硬盘里的资料不会都没了吧?!这电脑不会就这么坏了吧?!)
造成这样的原因我后面再说,我先说说,怎么最快的解决这个问题?
分两种情况:
一、保留多系统,修复 GRUB 引导。
1. 先使用 ls 命令,找到Linux的安装分区(一般GRUB是安装在Linux /boot下的):
1 |
grub rescue>ls |
你会看到屏幕列出所有的磁盘分区信息如(msdosX表示各个分区):
1 |
(hd0),(hd0,msdos5),(hd0,msdos4),(hd0,msdos3),(hd0,msdos2),(hd0,msdos1) |
2.多次调用如下命令遍历分区:
1 |
grub rescue>ls (hd0,msdosX)/boot/grub |
如果你对你的硬盘分区有印象的话,是可以先估算到/boot/grub是在X为几的分区里。如果分区正确,则会在屏幕上列出/boot/grub的内容。
如果都找不到的话,需要查一下是否因为不同的Linux版本造成grub的路径不对。
PS./boot单独分区的话,可以用
1 |
ls (hd0,msdosX)/grub |
3.在上一步中我们找到了/grub的正确位置,例如(hd0,msdos5),调用如下命令:
1 2 3 4 5 6 7 |
grub rescue>set root=(hd0,msdos5) grub rescue>set prefix=(hd0,msdos5)/boot/grub grub rescue>insmod /boot/grub/normal.mod #注意,grub不同版本间mod文件的存放位置不同,请用ls遍历/grub下的目录查找。# |
4.调用如下命令,就可以显示出丢失的grub菜单了。
1 |
grub rescue>normal |
5.这时,我们可以进入系统了。不过这种修改方法是暂时的,断电后重启后失效。我们需要进入Linux中,对grub进行修复。在Linux中执行:
1 2 3 |
sudo update-grub sudo grub-install /dev/sda |
6.这时候grub的启动菜单就修复了。至于grub的修改,请在su权限下修改/boot/grub/grub.cfg
二、删除Linux系统,修复引导进入Windows。
1.Windows PE下,用DiskGenius格式化Linux分区,然后重建MBR(主引导记录)。
2.没了。(是不是很简单哈?)
三、为什么会出现这种错误?
一般在以下几种情况下会出现这种错误:
1.想删除Linux,直接在windows下删除/格式化了Linux所在的分区。
2.调整磁盘,利用工具合并/分割/调整/删除分区,磁盘分区数目发生了变化。
3.重新安装系统,把Linux安装到了新分区,原有分区已经格式化,但是没有重新安装grub2。
4.用Linux备份工具/衍生版制造工具等,把主分区恢复成了8.X的老版本,结果老版本的grub是grub1,于是把grub2破坏掉了。
总结起来就是:由于操作者不知道grub2有两部分,一部分(一般情况下)写在了MBR上,另一部分写在了/boot/grub目录(如果/boot单独分区,则直接写在对应分区的/grub目录)里面。上述操作,均导致grub2的MBR里面的那一部分找不到/grub目录里面的另一部分。所以无法启动并提示出错。
解决思路也主要是两种:
1.修复/grub (法一)
2.删除grub (法二)
本文链接地址: Grub Rescue 修复,年轻还是要多折腾
本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。
如果您愿意为文章的内容或想法提供支持,欢迎点击下边的捐赠按钮,资助作者创作更多高价值高品质的内容。