grub rescue 模式下启动和修复
重装系统和删除分区之后,可能导致系统启动出现问题,重启系统后容易进入到 grub rescue模式。笔者前一段时间由于需要,装了双系统(Win8和Ubuntu13.10)。后来想扩展Ubuntu系统磁盘空间,想从Win8系统中划一部分空间,由于操作不当,导致进入了grub rescue模式。
1. 进入grub rescue模式,一般会显示如下内容:
error: unknown filesystem
grub rescue >
2. rescue模式下可使用的命令有:set,ls,insmod,root,prefix(设置启动路径)。只用通过一定的操作加载正常的模块,才能够进入到正常的模式。
3. 加载模块之前,我们首先需要找到grub2的核心文件,也就是我们之前安装好的系统所在的分区(即 root的值)。rescue模式下面没有search的方法,只能通过 ls 逐个显示查找。
3.1 直接使用 ls 可以显示出磁盘分区的信息
grub rescue>ls
(hd0,1),(hd0,5),(hd0,3),(hd0,2)
3.2 使用 ls 试探显示每个磁盘分区中是否有根目录,也就是是否可以通过grub rescue启动
grub rescue>ls (hd0,X)/boot/grub 注: X 是指磁盘分区编号,比如5
如果结果显示出来的是Linux的文件系统的基本结构,那么我们就可以基本确定可以从这个分区启动系统。
4. 通过上面的步骤确定分区之后,我们设置 root的值
grub rescue>root=(hd0,x) 或者 grub rescue> set root=(hd0,x)
5. 找到启动分区之后,还需要加载启动模块,启动模块一般在 /boot/grub 目录下(也有可能在其子目录中),可以通过 ls 命令查看
grub rescue>ls (hd0,X)/boot/grub/
6. 找到启动模块之后,设置启动模块路径
grub rescue>prefix=/boot/grub 或者 grub rescue> set prefix=(hd0,x)/boot/grub
注:启动模块在grub子目录下,可能由于grub2的原因,加入子目录的路径,可能会出错。
7. 接下来加载启动模块
grub rescue>insmod normal (自动加载模块)
或 grub rescue> insmod (hd0,X)/boot/grub/normal.mod (手动设置加载模块)
8. 加载启动模块后,grub rescue 会有一些变化,比如说高亮,或者界面显示 rescue > 或者 rescue grub > 等。然后正常启动系统
grub rescue> normal
9. 完成上面步骤之后,就能够经常的进入到我们熟悉的Linux启动的界面,接下来的就可以正常使用Linux了。
10. 为了下次启动是不再进入 grub rescue模式,我们还需要补充两个步骤
更新boot启动选项 #update-grub
重建grub到硬盘的MBR # grub-install /dev/sda
至此,基本上就完成了grub rescue启动和修复的过程。可能不同的Linux版本(或者grub的版本)之间grub rescue启动和恢复过程,有些细节上的差异。
参考以下内容:
http://blog.csdn.net/tody_guo/article/details/7537454