背景:win7主系统,fedora18双系统,rhel5.4第三个系统


    rhel很少用,为了系统学习linux,准备换CentOS,所以删除了rhel,但是不小心把win7的BCD引导文件也删除了,于是悲剧了。用本本附带的恢复盘将c盘恢复到出厂设置后,发现fedora18的grub界面不见了,每次直接进入win7。


    这可不行,fedora18上好多宝贝呢,为了弄到grub那个引导页面,便在以前rhel的那个区上重新装了一遍fedoral18,然后整个电脑变成了win7+fedora18+fedora18。这可不是我想要的效果,于是果断删除第二个fedora18,结果又悲剧了,开机直接进入了grub rescue界面。


    实在是不想再重装了,于是上网搜索,确实找到了不少方法,但是直接照搬都不适用,后来反复试验,终于成功实现了我想要的效果:win7+fedora18+预留磁盘空间。现在把恢复过程记录一下:


1. 遍历整个硬盘:


grub rescue>ls


这时出现了所有的分区:


 (hd0),(hd0,msdos8),(hd0,msdos7),(hd0,msdos6),

(hd0,msdos5),(hd0,msdos3),(hd0,msdos2),(hd0,msdos1)


2. 用 ls (hdx,msdosx)/ 语句进一步遍历各个盘,当遍历到msdos7这个盘时看到了grub2文件夹


grub rescue>ls (hd0,msdos7)/


出现了结果:

 ./ ../, grub2, local+found, ...


3. 再次遍历grub2文件夹


grub rescue>ls (hd0,msdos7)/grub2/


于是出现了grub2下面的各个子文件


4. 开始设置启动路径


grub rescue>set


这一步查看当前设置,如果prefix没有指向grub2,就需要重新设置:


grub rescue>root=(hd0,msdos7)
grub rescue>prefix=(hd0,msdos7)/grub2


之前照搬网上的方法,设置为 prefix==(hd0,msdos7)/boot/grub,结果怎么都无法运行下面一步insmod nomal。

事实上我在安装fedora18的时候,可能是为boot专门分了一个区,所以grub不在boot文件夹下面,而且由于rhel是在fedora18之前装的,所以这里是grub2。由此得出一个教训,一定要根据自己实际的系统环境来设置。都设置好以后,用set命令再次查看一下


grub rescue>set


这次可以看到: root=(hd0,msdos7) 和 prefix=(hd0,msdos7)/grub2


5. 加载引导模块


grub rescue>insmod normal
grub rescue>normal


大功告成!再次开机后进入了原来的fedora18的grub引导页面,可以选择进入fedora18或者是win7,而且第二个fedora也已经删除了。

网上很多教程到这一步还在继续,不过是针对linux系统彻底被删除了,又无法进入windows的情况,对我的机器不适用,所以到此为止了。