Ubuntu Grub Rescue 解决Windows分区导致Ubuntu 12.10无法启动的问题以及设定双系统的优先引导顺序

,之前的相关文章可以参考这两篇,我的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   注意这里的红三条指令依次输入,不然可能出现 unknown file system 错误

我在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进行修复。

    进入Ubuntu之后,在命令终端执行:

    sudo update-grub

    sudo grub-install /dev/sda

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

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

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

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


设定双系统引导顺序

2014-4-14   22:30 更新增加双系统引导内容

    最近又折腾了一下电脑,把原来的win7 和ubuntu12同时重新安装了,

换成了win8.1和ubuntu13.04(没有尝试13.10的kylin系统)。先安装win8,然后安装ubuntu,值得注意的是在硬盘分区时对硬盘空间做好规划。

系统的限制是最多只能有四个主分区+0个扩展分区,或者三个主分区加一个扩展分区,其中扩展分区可以分成任意个逻辑分区,其中操作系统必须安装在主分区中(如果是ubuntu有单独/boot分区,单独的boot分区需要是主分区,ubuntu系统分区可以是扩展分区的一个逻辑分区)。


完成下面的操作您可能需要这两个软件(网络上资源都很多):

1、BOOTICE  一个优秀的引导区修复工具

2、EasyBCD  windows下引导项修改工具(可以借助其仅靠硬盘安装ubuntu)

总之安装完毕后,可能是win8来优先引导系统,也可能是ubuntu的grub2来引导系统。

1、优先使用ubuntu的grub引导

如果自己想优先使用ubuntu而系统启动时是win8的引导界面,可以按照下图这样解决:

即:使用Bootice的“主引导记录”功能,将主引导类型修改成ubuntu系统的grub2类型

注意:这样操作后,重启电脑,可能出现grub rescue,参考上面的办法即可解决。

同时应该注意,由于win8的关机不是彻底的关机,因而需要做一些额外操作,让使用win8后关机时更加彻底,

具体如何操作大家可以参看这篇文章: http://ask.zol.com.cn/q/21741.html

其中引导类型里面,第二个grub4dos是ubuntu硬盘安装的另一种工具,但是相比于EasyBCD略微麻烦一点,

Windows NT 5.x和6.x是现在的windows系统的引导记录。

Ubuntu Grub Rescue 解决Windows分区导致Ubuntu 12.10无法启动的问题以及设定双系统的优先引导顺序_第1张图片


2、优先使用windows的引导

有两种方式,一种是在ubuntu中设置默认选项到windows,这个比较多。

另外一种方式更加彻底,就是直接先让windows来引导,类似上面的操作设置主引导记录为Windows NT 5.x / 6.x MBR

(windows安装在第一分区的应该不会有啥问题)然后就是新增一个ubuntu的启动选项了,借助于EasyBCD很容易实现:

完成之后,开机的时候便会先出现win8的纯蓝色加载界面,然后出来两个选项,选择后就可以进入到ubuntu的选择界面了。

Ubuntu Grub Rescue 解决Windows分区导致Ubuntu 12.10无法启动的问题以及设定双系统的优先引导顺序_第2张图片

你可能感兴趣的:(其他)