现在的位置: 首页 > 综合 > 正文

Ubuntu Grub Rescue 解决Windows分区导致Ubuntu 12.10无法启动的问题

2013年06月10日 ⁄ 综合 ⁄ 共 1478字 ⁄ 字号 评论关闭

,之前的相关文章可以参考这两篇,我的grub系统目录不一样


http://www.cnblogs.com/harold-yang/archive/2012/09/17/2689831.html

http://www.cnblogs.com/samcn/archive/2011/03/30/1999615.html

  • 问题:

之前系统是Windows Xp(C盘) + D(FAT32),F盘(是NTFS) + E盘(Ubuntu安装盘)。

觉得FAT32格式不太好,于是用DiskGenis工具重新格式化了D盘,改成了NTFS。

想知道我怎么弄的,我用了一个PE启动盘,在PE系统中弄的。

重启之后就出现了grub错误。

拜托我真的不想再重新安装系统了,太麻烦了。

  • 分析

由于在Windows下面更改了分区状态,造成Ubuntu的分区变动,这样找不到grub了,开机显示grub rescue>

  • 解决

1.  先使用ls命令,找到Ubuntu的安装在哪个分区:

     grub rescue>ls

     会罗列所有的磁盘分区信息,比方说:

     (hd0,1),(hd0,5),(hd0,3),(hd0,2)

2. 然后依次调用如下命令: X表示各个分区号码

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

     如果都找不到的话,需要查一下是否因为Linux版本差异,造成grub的路径不对,例如直接ls(hd0,X)/grub等等。 

这里可能会提示 file format error(文件格式错误)之类的活着好找不到,如果是文件格式错误,则显然不是grub所在目录

如果所有地方都提示找不到,那么试试 ls(hd0,X)/ 可以帮你看看每个硬盘分区下有哪些文件,

自己也可以在ls的结果中仔细找找有没有 grub或者boot相关的东西。

3. 假设找到(hd0,5)时,显示了文件夹中的文件,则表示Linux安装在这个分区。

4. 调用如下命令:

    grub rescue>set root=(hd0,5)

    grub rescue>set prefix=(hd0,5)/boot/grub   
或者为  set prefix=(hd0,5)/grub  
(这里依赖与grub文件夹的路径)

   grub rescue>insmod /boot/grub/normal.mod   

我在Ubuntu 12.10下尝试时,命令行提示找不到文件,

怎么办呢,自己用ls命令查看一下,

比如我的指令是

    ls (hd0,msdos6)/grub

这个时候看到有一个 i386-pc 的目录,我们看看里面的东西:

     ls (hd0,msdos6)/grub/i386-pc/

嗯,里买呢果然有一堆 mod 文件,那么好办了,我么把指令修改成这样子,也就是更换一下上面那个文件的路径:

    grub rescue>insmod /grub/i386-pc/normal.mod  

然后发现没有什么错误,命令行的提示前缀也被加亮了。

5. 下面调用如下命令,就可以显示出丢失的grub菜单了。

    grub rescue>normal

6. 不过不要高兴,如果这时重启,问题依旧存在,我们需要进入Linux中,对grub进行修复。

    进入Linux之后,在命令行执行:

    sudo update-grub

    sudo grub-install /dev/sda

    (sda不要修改,保持上面的代码就可以了,

千万不要指定分区号码,例如sda1,sda5等都不对)

7. 重启测试看看是否立刻出现了Ubuntu的系统选择界面,

如果出现了,那么恭喜修复成功。

抱歉!评论已关闭.