因為是Centos6.3和win7雙系統,重裝win7之後MBR被改寫了,原來裝的Centos也是引導裝在MBR, 所以導致了無法進入Centos,於是用Centos的隨身碟啟動盤進入rescue模式,先用df -h得知各個盤所對應的硬碟號 然後找出boot所在的分區,具體可如下操作:
用df -h查看硬碟hdX還是sdX;其中hd代表的式IDE硬碟,X為a~z,代表是第幾塊,想我的有一個隨身碟,一個硬碟,顯示的時候隨身碟顯示成了sda,硬碟顯示成sdc;反正要找到你的硬碟的表示符,還要看硬碟是否有/boot掛在的分區,如果有說明boot是一個獨立的分區,要不然就是和根分區/是在同一個分區。輸入grub進入grub命令列,
把MBR寫到給有/boot目錄的那個分區的超級塊中,命令如下:
grub進入grub命令列setup (sd1,1),因為我用的是隨身碟引導,所以隨身碟變成了sda了(就是sd0是 我的隨身碟),成功寫入後把這個超級塊匯出(這個超級塊其實就是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中硬碟、隨身碟都是用hd表示,所以在menu.lst中不會有sd之類的;sda,hda只在linux下用來表示IDE還是sata介面把,這隻是我的猜測,不一定準確