Sunday, January 25, 2009

復原 Windows MBR 的各種方式

復原 Windows MBR 的各種方式

玩 Linux 最常見的方式就是切 Partition 做多重開機, 讓 GRUB 寫入 MBR 做開機選單. 但是若不小心把 Linux Partition 刪掉了, 或是哪天不想玩 Linux 了, 想恢復為 Windows 單一作業環境的時候, 就得把 Windows Pre-Boot 程式寫回 MBR 的前 446 Bytes 喔!

方法一:使用 DOS / Win9x / ME 開機片開機

開機後在 MS-DOS 模式下執行 fdisk /mbr
重新啟動電腦即可

方法二:使用 Windows 2000 / XP 光碟片開機 (過程中需要 Administrator 密碼)

在 Welcome to Setup (歡迎使用安裝程式) 畫面中按 R 或 F10 進入「Windows 修復主控台」

進入主控台後, 輸入 fixmbr
重新啟動電腦即可

詳細操作過程請參考微軟官方網頁 - Windows XP 修復主控台的說明

方法三:使用 Linux 光碟片開機, 進入 Rescue 模式; 或用 KNOPPIX 之類的 Linux 作業系統開機 (過程中請啟用網路)

依序輸入以下指令恢復 Windows MBR

wget http://cha.homeip.net/downloads/ms.mbr -O /tmp/ms.mbr
dd if=/tmp/ms.mbr of=/dev/hda
exit (重開機時請移除光碟片)

  • 以上操作結果同 fdisk /mbr
  • 網路上流傳 dd if=/dev/zero of=/dev/hda bs=446 count=1 效果等同 fdisk /mbr 是錯誤的, 這樣只會清掉 MBR 的 Pre-Boot 內容而已.
  • 警告: 請勿於頭腦混沌、神智不清時使用 dd 指令; 使用時請特別注意數字是否正確!

方法四:什麼開機片都沒有, 但開機後還有 GRUB> 提示符號

依序輸入以下指令啟動 Windows

rootnoverify (hd0,0)
makeactive
chainloader +1
boot

  • (hd0,0) 其中 hd0 表示 Primary IDE Master HDD, 0 表示第一個分割區, 請依實際狀況套用.
  • 注意: 這只是解決 Windows 的啟動問題而已, 仍要靠前三種方法的其中一種才能讓 MBR 恢復正常喔! 當然, Windows 開機後您也可以上網尋找其他的解決方案 :)

參考資料: