大家在製作多重開機時都會遇到這個問題
就是不管是XP先安裝或是Linux先安裝
都會有開機資訊被覆蓋的情況
先講重要概念
————————————————————————–
重要概念
1. MBR為Master Boot Record每顆硬碟只有一個,寫在硬碟的第0軌上
2. 每切出的分割,除了裡面有檔案系統的資訊外,還有一個開機資訊(boot sector)
3. 大致的開機流程是,當BIOS控制權轉交到一顆硬碟上,會先讀取該硬碟的MBR
再由MBR裡寫的資訊(如果沒有則為active的分割區),載入該分割區的(boot sector),再經由該資訊,找到系統重要檔案,載入作業系統
4. 而多重開機則大多為在MBR裡寫入開機管理程式,顯示介面讓使用者選擇到開機的分割區或是其他資訊
(也有些開機管理程式程式太大,MBR的空間塞不進去,會從MBR中導到某個分割區的boot sector,再從該資訊載入開機管理程式)
5. 而Linux比較特別,可以直接從GRUB直接載入核心,載入作業系統
解決辦法如下:
————————————————————————–
winXP下的開機資訊修復
放入XP安裝光碟,用它開機
按R進入Recovery Console下打fixmbr修復
或是使用spfdisk的修復MBR功能
A:\>spfdisk /mbr
————————————————————————–
Linux下的開機選單(GRUB)修復
放入你使用的Linux版本的LiveCD,用它開機
在登入到桌面之後,打開命令列
以Fedora 12為例 (GRUB 1版的做法)
(註:以下這段ubuntu就不適用,因為它使用GRUB 2版。做法為另一種)
(該做法不限定在Fedora,Redhat系列的都可以用,像是RHEL,Cent OS … 等等)
先打入fdisk -l查看磁碟分割的狀況
[root@localhost ~]#fdisk -l
Disk /dev/sda: 320.1 GB, 320072933376 bytes
255 heads, 63 sectors/track, 38913 cylinders, total 625142448 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x129dfc88
Device Boot Start End Blocks Id System
/dev/sda1 * 63 18844244 9422091 7 HPFS/NTFS
/dev/sda2 18844245 625137344 303146550 f W95 Ext’d (LBA)
/dev/sda5 18860310 52516484 16828087+ 7 HPFS/NTFS
/dev/sda6 52516548 60918479 4200966 83 Linux
/dev/sda7 60918543 62990864 1036161 82 Linux swap / Solaris
/dev/sda8 62990928 96454259 16731666 7 HPFS/NTFS
/dev/sda9 96454323 625137344 264341511 7 HPFS/NTFS
找到Fedora安裝的分割區(ext3或ext4分割,該目錄含有GRUB的資訊)
我的電腦為/dev/sda6
打入grub進入頁面
[root@localhost~]#grub
切換根目錄為Fedora安裝的目錄
grub> root (hd0,5)
root (hd0,5)
Filesystem type is ext2fs, partition type 0x83
這個時候可能要嘗試一下,大約是在前面查到的sda6的上一號或下一號
出現ext2fs字樣就可以繼續
範例1:
寫入開機資訊到該硬碟的MBR
grub> setup (hd0)
setup (hd0)
Checking if “/boot/grub/stage1” exists… no
Checking if “/grub/stage1” exists… yes
Checking if “/grub/stage2” exists… yes
Checking if “/grub/e2fs_stage1_5” exists… yes
Running “embed /grub/e2fs_stage1_5 (hd0)”… 15 sectors are embedded.
succeeded
Running “install /grub/stage1 (hd0) (hd0)1+15 p (hd0,5)/grub/stage2
/grub/grub.conf”… succeeded
Done.
出現類似succeeded字樣就成功了
範例2:
寫入開機資訊到Fedora的該分割區的開機磁軌
(我的是sda6,也就是這裡的(hd0,5)每台電腦環境不同,請以你的為主)
grub> setup (hd0,5)
setup (hd0,5)
Checking if “/boot/grub/stage1” exists… yes
Checking if “/boot/grub/stage2” exists… yes
Checking if “/boot/grub/e2fs_stage1_5” exists… yes
Running “embed /boot/grub/e2fs_stage1_5 (hd0,5)”… failed (this is not fatal)
Running “embed /boot/grub/e2fs_stage1_5 (hd0,5)”… failed (this is not fatal)
Running “install /boot/grub/stage1 (hd0,5) /boot/grub/stage2 p /boot/grub/grub.conf “… succeeded
Done.
出現類似succeeded字樣就成功了
————————————————————————–
這篇很簡略的寫出操作的重點
詳細請看
http://linux.vbird.org/linux_basic/0510osloader.php#grub_install
http://bentai.wordpress.com/2006/08/16/%E5%9C%A8windows-xp-sp2%E4%B8%8B%E4%BF%AE%E5%BE%A9mbr/
我在未正常關機的情況下直接切斷電源
結果開機卡在GRUB
利用範例一成功救回並可正常使用
謝謝惹~~