因为是Centos6.3和win7双系统,重装win7之后MBR被改写了,原来装的Centos也是引导装在MBR, 所以导致了无法进入Centos,于是用Centos的U盘启动盘进入rescue模式,先用df -h得知各个盘所对应的硬盘号 然后找出boot所在的分区,具体可如下操作:
用df -h查看硬盘hdX还是sdX;其中hd代表的式IDE硬盘,X为a~z,代表是第几块,想我的有一个U盘,一个硬盘,显示的时候U盘显示成了sda,硬盘显示成sdc;反正要找到你的硬盘的表示符,还要看硬盘是否有/boot挂在的分区,如果有说明boot是一个独立的分区,要不然就是和根分区/是在同一个分区。输入grub进入grub命令行,
把MBR写到给有/boot目录的那个分区的超级块中,命令如下:
grub进入grub命令行setup (sd1,1),因为我用的是U盘引导,所以U盘变成了sda了(就是sd0是 我的U盘),成功写入后把这个超级块导出(这个超级块其实就是MBR的内容)
dd if=/dev/sdc2 of=/home/win7/linux.img
如果不知道该导出那个设备,可以用df -h 得到,win7是我用mkdir /home/win7 ,然后mount
/dev/sdc10 /home/win7 把一个fat32的盘挂到linux下然后导出的,之后就可以进入win7拿到这个文件了,然后记得编辑/boot/grub/menu.lst文件,使得这个超级块可以正确引导Centos和Win7,然后进入win7,生成的linux.img放到C盘启动盘,建一个boot.ini文件,也可以从XP中考一个过来,加上以下红色语句引导Centos所在分区的MBR
[boot loader]
timeout=8
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /noexecute=optin /fastdetect
C:\linux.img="Centos_6_3"
然后再win7启动的时候就可以看到 “Centos_6_3”这个启动项了,进去之后就可以正确引导centos了。
加上以下的menu.lst作为一个参考:
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You have a /boot partition. This means that
# all kernel and initrd paths are relative to /boot/, eg.
# root (hd0,1)
# kernel /vmlinuz-version ro root=/dev/sdb9
# initrd /initrd-[generic-]version.img
#boot=/dev/sda
default=0
timeout=5
splashimage=(hd0,1)/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.32-279.el6.i686)
root (hd0,1)
kernel /vmlinuz-2.6.32-279.el6.i686 ro root=UUID=52e27277-6afc-4a02-96c9-230d0a1d377f rd_NO_LUKS KEYBOARDTYPE=pc KEYTABLE=us rd_NO_MD crashkernel=128M LANG=zh_CN.UTF-8 rd_NO_LVM rd_NO_DM rhgb quiet
initrd /initramfs-2.6.32-279.el6.i686.img
title Windows7
rootnoverify (hd0,0)
chainloader +1
注:好像grub中硬盘、U盘都是用hd表示,所以在menu.lst中不会有sd之类的;sda,hda只在linux下用来表示IDE还是sata接口把,这只是我的猜测,不一定准确