首页 > 服务器 > Ubuntu > Ubuntu+Windows双系统在Windows中删除Ubuntu后重启出现grub rescue的修复方法
2014
11-07

Ubuntu+Windows双系统在Windows中删除Ubuntu后重启出现grub rescue的修复方法

问题:

之前系统是Windows7 64bit(C盘) + D盘(都是NTFS) + Ubuntu

今天,在Windows7中删除Ubuntu(格式化Ubuntu所在分区磁盘), 重启Windows7之后发现Ubuntu的grub菜单不能启动。屏幕显示Unkown FileSystem。

分析:

由于在Windows下面更改了分区状态,删掉了Ubuntu之前的分区,造成Ubuntu的分区丢失,而安装双系统时,磁盘引导记录写在Ubuntu中,这样找不到grub了,开机显示

grub rescue>

解决办法:

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

grub rescue>ls

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

(hd0,msdos7), (hd0,msdos6), (hd0,msdos5), (hd0,msdos1)

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

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

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

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

如果所有走下来都显示unkown filesystem,则表明所有分区都已损坏或不存在,此时有两个解决办法:

1)通过U盘启动进入PE系统修复硬盘主引导记录;

2)如果无法进入U盘启动界面的话(我就是这种情况),那么需要把Ubuntu系统装到U盘中(注:不是制作U盘启动盘,而是在另一台电脑上通过U盘启动盘将Ubuntu系统装到另一个U盘中,详情可参考这篇文章:把Ubuntu安装进U盘的方法步骤),然后将装有Ubuntu系统的U盘插到问题PC上,然后ls,可以看到多出几个分区信息,如(hd1,msdosX),然后依次执行:

grub rescue>ls (hd1,msdosX)/boot/grub

4. 调用如下命令:

grub rescue>set root=(hd0,msdos5)

grub rescue>set prefix=(hd0,msdos5)/boot/grub

grub rescue>insmod normal

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

grub rescue>normal

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

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

sudo update-grub

sudo grub-install /dev/sda

(sda是你的硬盘号码,千万不要指定分区号码,例如sda1,sda5等都不对),执行结果界面如下:

grub-update

7. 重启测试是否已经恢复了grub的启动菜单? 恭喜你恢复成功!

编程技巧