一、XP的引導與修複:
XP的引導很簡單,通常是這樣的模式:
通常我們的XP是利用MBR(它不屬於任何一個分區,它位於硬碟的第一個扇區,即主開機磁區)來引導的,
--》MBR引導程式會將使用中的磁碟分割(XP的安裝區,一般是C盤)的開機磁區裝入記憶體
--》開機磁區(C盤)中的檔案NTLDR被裝入記憶體--》NTLDR讀取boot.ini菜單(boot.ini羅列了許多啟動項,使用者可以選擇一個啟動項,通常我們的電腦有XP/GHOST兩個啟動項)
--》如果是選擇NT/XP,NTLDR會運行Ntdetect.com(ntdetect.com只為NTLDR提供硬體參數)
-》開始啟動(在NTLDR將控制權交給XP後)
總結下上述過程:MBR-->開機磁區(C盤的第一扇區)-->NTLDR(boot.ini,ntdetect.com)->啟動XP。
其中,ntdetect.com只是啟動NT核心的OS時所需要的.
更多內容請參看:http://baike.baidu.com/view/161134.htm
任何一個環節出錯都不行,下面給出修複方法:
1、啟動XP的mbr損壞:
方法一、插入WINDOWS安裝光碟片,進入修復主控台,輸入:fixmbr 或者fdisk /mbr即可。(在WIN7光碟片下:可用這個命令:bootsect /nt60 SYS /force /mbr ,這個bootsect類似XP下面的FIXBOOT FIXMBR)
方法二、如果是GHOST光碟片,是沒有修復主控台的,但是它一盤會在DOS工具中提供類似fixmbr的命令。只不過名字可能不會是fixmbr(好像叫mbrfix),大家進入光碟片的DOS工具箱看看便知。
方法三、從光碟片進入WINPE,再用WINPE的CMD下運行:MbrFix /drive 0 fixmbr即可,我懷疑這個同b中提到的GHOST光碟片中的類fixmbr命令是如出一轍。MbrFix請到這裡下載。 值得一提的是,2000/2003/VISTA使用的是同一個MBR程式,冒似WIN7也是用的這個MBR。
http://forum.ubuntu.org.cn/viewtopic.php?f=139&t=189240
http://www.ylmf.net/read.php?tid=1496366&fpage=0&page=1
2、系統磁碟分割開機磁區的損壞:
插入WINDOWS安裝光碟片,進入修復主控台,輸入:fixboot即可。GHOST光碟片好像沒有提供此類命令,反正我的幾張光碟片裡面都沒有,最後還是為了一個fixboot去買了一張原版的光碟片。
3、引導檔案的損壞:
在別人的電腦,或者是從網上,下載: boot.ini(其實這個可以自己寫)、NTLDR、ntdetect.com.
然後用各種方法複製到你的C盤下:
如果不熟悉DOS命令操作的朋友,可以進入winpe(GHOST光碟片上的小型XP),然後把隨身碟插入電腦,然後把隨身碟上的這幾個檔案複製到你的C盤下就OK!
以上介紹的都是最常用,最原始,最有效,最簡單的方法,如果你對分區結構非常瞭解,也可以利用winhex等工具手動修改。
這裡有個網頁大家可以參考:http://www.linux-wiki.cn/index.php/修複被grub覆蓋的ntfs磁碟分割開機磁區
-----------------------------------------------------------------
二、Ubuntu的引導修複
ubuntu一般是通過grub引導.其state1部分預設都放置在mbr,還有可能放置在分區的開機磁區。
grub分三種:grub,grub2,grub for dos(grub4dos)(見:http://bbs.znpc.net/viewthread.php?tid=2297)
其中grub2入門教程大家可以參見 GoogleDOC
下面我對我遇到的一些問題給出一些常見的方案,我的OS是ubuntu10.04,這些方案我基本上都試過了,很有效。
1、如果開機進入後顯示:grub rescue>
出現這個問題的原因是因為grub找不到ubuntu所在的分區(這種情況的原因是你調整了分區,而grub配置沒有作相應的調整)。
所以需要重新指定分區。這裡我直接貼出grub2引匯入門教程的方案
由於在rescue模式下,只有少量的基本命令可用,必須通過一定的操作才能載入正常模組,然後進入正常模式。<br />rescue模式下可使用的命令有:set,ls,insmod,root,prefix(設定啟動路徑)<br />先假設grub2的核心檔案在(hd0,8)分區,再來看看怎樣從rescue模式進入從(hd0,8)啟動的正常模式(normal)。<br />在rescue模式下search命令不能用,對不清楚grub2檔案處於哪個分區的,可以用ls命令查看,比如<br /> ls (hd0,8)/ 查看(hd0,8)分區根目錄,看看有沒有boot檔案夾<br /> ls (hd0,8)/boot/ 查看(hd0,8)分區的/boot目錄下檔案<br /> ls (hd0,8)/boot/grub/ 查看(hd0,8)分區/boot/grub目錄下檔案<br />通過檔案查看,可以確定grub2核心檔案處於哪個分區,接下來就可以進行從rescue到normal的轉變動作:<br />先 ls 看看分區,根據分區列表,猜下 / 分區的編號再 ls (hd0,x)/ 看分區目錄下檔案確定找到 / 分區,不對的話繼續找。找到 / 分區的 (hd0,x) 繼續<br /> grub rescue>root=(hd0,x)<br /> grub rescue>prefix=/boot/grub<br /> grub rescue>set root=(hd0,x)<br /> grub rescue>set prefix=(hd0,x)/boot/grub<br /> grub rescue>insmod normal<br /> rescue>normal -------->若出現啟動菜單,按c進入命令列模式<br /> rescue>linux /boot/vmlinuz-xxx-xxx root=/dev/sdax<br /> rescue>initrd /boot/initrd.img-xxx-xxx<br /> rescue>boot<br />內 核版本號碼 -xxx-xxx可以按Tab鍵查看後再手動補全。<br />有 /boot分區的,要先找出 /boot 分區 (hd0,x),再找出 / 分區的 (hd0,y),同樣用 ls (hd0,x)/ 和 ls (hd0,y)/ 的方式確定分區<br /> grub rescue>root=(hd0,x)<br /> grub rescue>prefix=/grub<br /> grub rescue>set root=(hd0,x)<br /> grub rescue>set prefix=(hd0,x)/grub<br /> grub rescue>insmod normal<br /> rescue>normal -------->若出現啟動菜單,按c進入命令列模式<br /> rescue>linux /vmlinuz-xxx-xxx root=/dev/sday<br /> rescue>initrd /initrd.img-xxx-xxx<br /> rescue>boot<br />說明:<br />1)由於grub2版本的的不一致,有的可能在第9步insmod normal.mod載入正常模組後直接進入normal模式,即出現了normal grub>的提示符,這種情況就不能執行第10步,即可以跳過normal命令的輸入。<br />2)雖然輸入normal命令會出現菜單,但由於缺少載入核心的Linux命令,直接從菜單不能進入系統,需要按c在命令列繼續操作。<br />3)使用/boot單獨分區的,要正確修改路徑,如<br /> prefix=(hd0,8)/grub<br /> insmod /grub/normal.mod<br />另外root=/dev/sda8也要修改根分區的分區號。<br />4)按boot啟動系統後,再在系統下開啟終端,執行命令修複grub<br />重建設定檔grub.cfg<br /> sudo update-grub<br />重建grub到第一硬碟mbr<br /> sudo grub-install /dev/sda
PS:我的電腦出現這個問題,是因為我利用sudo fdisk /dev/sda刪除了分區,分區表已經改變,更改之後,我的OS是在hd0,9.
我用 grub rescue>set 查看後,發現裡面還是原來的hd0,10,然後我執行:
grub rescue>set root=(hd0,9)<br /> grub rescue>set prefix=(hd0,9)/boot/grub<br /> grub rescue>insmod normal<br />rescue> normal
之後順利進入ubuntu10.04,但是重啟之後依然是rescue。我們需要重新調整grub。
於是我在終端下用sudo grub-install /dev/sda,重新寫了GRUB到MBR。正常了!
2、在雙系統中,重裝windows後引導ubuntu
原因:
使用安裝版的windows重裝windows時會改寫mbr,造成MBR中的grub丟失。
方案:
可以用grub4dos引導進入ubuntu,然後 再修複grub。如果手中有光碟片,當然也可以livecd啟動後修複grub。(具體方案請參看:grub2引匯入門教程:GoogleDOC之"使用grub2常見錯誤及修複方法")
註:
這裡要提醒大家的是,使用grub4dos的話一定要用最新的,至少是grub4dos-0.4.4-2009.10.16的。(我之前用的grub4dos-0.4.4-2009-01-11.zip就無法訪問EXT4分區,老是提示file not found)這個問題我曾發在ubuntu論壇上:http://forum.ubuntu.org.cn/viewtopic.php?f=139&t=273929
還有一個比較簡單的方案:
在網上下載一個unetbtin,使用它很容易實現ubuntu的引導,也可以通過它進行linux的硬碟安裝。它不會改寫引導程式,所以用它很安全。它提供的是菜單式的選項,使用也比較容易的。教程見(有圖,但需註冊):http://ubuntuforums.org/showthread.php?t=690912
3、安裝ubuntu時不小心把gurb安裝在xp分區,而不是mbr
原因:
因為XP分區的開機磁區被grub所覆蓋。這種情況下只能引導ubuntu不能引導XP,使用sudo update-grub2也不行,這條命令只會更新設定檔/boot/grub/grub.cfg(這個只是引導菜單)。
方案:
a.首先,把grub 重寫到mbr,在終端下輸入:
sudo grub-install /dev/sda
b.使用fixboot修複XP磁碟分割開機磁區,參考上面提及到的“系統磁碟分割開機磁區的損壞:”