不久前,實驗室一個同學電腦上裝的本來是Windows 7+Fedora 16雙系統,結果他不想用Fedora 16了, 就在windows上把Fedora 16所在的磁盤格式化了。重新啟動后Windows 7和Fedora 16都進不去了。界面就一直停在grub輸入的地方。索性就進winPE了,PE進去重新安裝了一下C盤,不過是ghost安裝的,安裝好之后重啟結果還是不能進入Windows 7,還是grub引導那里。后來我就直接再進入PE,用里面的修復啟動項軟件重寫了MBR,這下能進入Windows 7了,并且在進入Windows 7后開始自動重寫輸入表,驅動之類的。我想了下,下面是整個過程的解釋。
MBR上面有分區表(64字節)和引導程序(446個字節),grub就是裝在這個446字節上的。grub功能很強大,grub是支持多系統啟動的,還有控制權轉交的功能。所有淡淡這么點大小的儲存量是不夠的。所有在Boot Loader(這里就說是grub了)加載的時候有兩個階段,Stage1,Stage2。Stage1階段主要是加載Boot Loader上的程序,就是說加載了grub,但這里并沒有安裝Loader相關的配置文件。在Stage2階段就是通過gurb來讀取配置文件,比如/boot/grub/menu.lst或grubcon.fig,配置文件提供了很多信息,一個比較直觀的信息就是開機時候的系統選擇菜單(詳細配置文件再介紹)。這就可以理解上面的問題了,刪除了Linux后,Stage1中grub是加載好了,但是Stage2過程中去加載配置文件就沒了。也就不能發揮grub的系統引導功能和控制權轉交功能。
那么為什么ghost安裝后還是不能恢復引導呢?ghost開始就是克隆硬盤上的數據的,也就是把鏡像的文件重新寫了一遍Windows 7上的C盤,C盤自己的Boot Loader是重寫了。但是MBR不屬于任何操作系統,MBR沒有寫額。所以就導致MBR上Boot Loader還是原來的grub程序,也還是會去讀取Fedora 16下的配置文件。
最后就是進入PE之后修復MBR后就OK了,這里的解釋就是重寫MBR了,不過肯定不會再是grub了,是windows自己的引導程序了。