,之前的相关文章可以参考这两篇,我的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的系统选择界面,
如果出现了,那么恭喜修复成功。