首先我们看看百度经验上的解决方案:http://jingyan.baidu.com/article/ed2a5d1f3c41dc09f6be17b8.html
测试发现,照上面的步骤只能走到grub界面,无法继续进入linux系统,要进入linux系统要按照下面的方式继续操作才行:
第一步:(如果知道linux具体在哪个分区,则可以略过第一步)问题是,我们不可能每次启动linux都进行这么繁琐的操作。
查找/boot/grub/grub.conf分区所在的目录:
输入以下命令:
grub> find /boot/grub/grub.conf
会返回你Linux内核所在分区
我这里返回(hd0,7),说明我LINUX在第一磁盘第五分区(这里hd0表示第一块磁盘,7表示第五分
区,为什么???因为在这里表示方法是0 1 2 3 4 5 6 ……而,磁盘最最多有五个主分区,从4
开机是扩展分区,所以嘛……不多说了,傻瓜都懂
第二步:查看一下自己linux内核信息
输入以下命令:
cat (hd0,7)/boot/grub/grub.conf (返回信息不说了) 关于内核信息的,看一下就明白了。
按照下面命令依次输入
指定/boot分区使用命令:grub>root (hd0,0)
--------------------------------------------------------------------------
下面两行是内核信息,你输入cat ()hd0,7)/boot/grub/grub.conf会返回给你的,你按照返回的信息输入,可以借助tab键自动添加
grub>kernel /boot/vmlinuz-2.6.18-53.el5 ro root=LABEL=/ rhgb quiet 回车
grub>initrd /boot/initrd-2.6.18-53.el5.img 回车
--------------------------------------------------------------------------
grub>boot (hd0,7) 回车(从此分区启动)这里直接输入boot也行
OK,下面就等着LINUX启动吧
根据原来的情况,我们是先在win7上使用easyBCD来创建一个引导菜单,完成centos系统的安装,在安装centos系统过程中自动创建了一个菜单项,这个菜单项会优先于win7系统的启动菜单,这里我们贴出来centos系统中的菜单项配置:
配置文件在/boot/grub/grub.conf:
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You do not have a /boot partition. This means that
# all kernel and initrd paths are relative to /, eg.
# root (hd0,7)
# kernel /boot/vmlinuz-version ro root=/dev/sdc8
# initrd /boot/initrd-[generic-]version.img
#boot=/dev/sdc
default=1
timeout=15
splashimage=(hd0,7)/boot/grub/splash.xpm.gz
hiddenmenu
title CentOS6.4
root (hd0,7)
kernel /boot/vmlinuz-2.6.32-358.el6.i686 ro root=UUID=3c3de91a-d5e8-4c00-9069-61de007e6a59 rd_NO_LUKS KEYBOARDTYPE=pc KEYTABLE=us rd_NO_MD acpi=off crashkernel=auto LANG=zh_CN.UTF-8 rd_NO_LVM rd_NO_DM rhgb quiet
initrd /boot/initramfs-2.6.32-358.el6.i686.img
title Windows7
rootnoverify (hd0,0)
chainloader +1
这里我们设置了两个启动菜单:CentOS6.4和Windows7,默认是选择Windows7,时限15秒。现在回到我们之前的问题,重装win7之后引导菜单丢失了,我们可以用同样的方法使用easyBCD在原来windows系统的引导菜单中新加入一个引导项,通过配置引导菜单的内容,恢复对linux操作系统的引导。如图所示:

注意上图是在已经添加了一个NeoGrub项之后显示出来的情形,在新增之前"删除"和"配置"两个按钮的地方是一个"新增"按钮。
新增一个NeoGrub项之后,重启win7就可以看到在默认的启动项中已经有NeoGrub了,但是要成功恢复对原来linux系统的引导,还要继续做一些设置:
点击之前图片中的"配置"按钮,在新弹出的记事本中,将linux系统中grub.conf文件(这个文件是要先备份的,否则你只能回到本文开头用find和cat的方式去读取grub.conf文件的内容)的内容粘贴进去,这样整个过程基本就完成了。
但是新的问题来了,由于现在的启动方式和系统重装之前不同(原来是装了linux系统之后,会优先启动linux系统中的菜单项),但是现在是优先启动win7系统中的菜单项,因此如果按照上面的做法原样复制grub.conf中的内容到配置文件中的话,就会造成一个循环,即在第一个启动菜单中选择新增的NeoGrub菜单项之后,进入linux系统的菜单项,继续选择Windows7会重新回到之前的启动菜单中。因此,这里为了避免循环的发生,我们不应该原样复制grub.conf文件中的所有内容,改成下面这样即可:
root (hd0,7)
kernel /boot/vmlinuz-2.6.32-358.el6.i686 ro root=UUID=3c3de91a-d5e8-4c00-9069-61de007e6a59 rd_NO_LUKS KEYBOARDTYPE=pc KEYTABLE=us rd_NO_MD acpi=off crashkernel=auto LANG=zh_CN.UTF-8 rd_NO_LVM rd_NO_DM rhgb quiet
initrd /boot/initramfs-2.6.32-358.el6.i686.img
可以看到,我们删除了选单的设置,改成直接启动linux系统。over.