Win7與Linux雙系統引導修復

此文是本人經歷與網上資料整理如下,便與大家借鑑


我們遇到引導問題的原因可能有

1.      刪除Linux,直接在win下刪了該分區

2.      調整磁盤,利用工具合併,刪除,分割分區導致磁盤分區數目變化

3.      重新安裝系統,把Linux下安到新分區,原分區格式化,但沒有重裝grub2

……

總歸,是由於操作者不知道grub2分爲兩部分,一部分(一般情況下)寫在了mbr上,另一部分寫在了某個分區的/boot/grub目錄(如果/boot單獨分區,則直接寫在對應分區的/grub目錄)裏面。由於上述操作,致使grub2的mbr裏面的那一部分找不到/grub目錄裏面的那一部分了(或者那一部分已經刪除了)。

現在我們進不了系統,抱着不重裝系統的心理繼續。

我們開機可能出現了過

1.       grub>

2.      grub rescue>

 

下面分別介紹兩種修復方法

1.       如果遇到的是grub>

如果你先裝win,然後再裝Linux的話,誤刪了啓動文件或者刪除了Linux,引導程序就不能讀出系統所在的位置,導致出現grub命令提示。這時候可以手動啓動比如我的win7c盤,輸入如下3個命令就可以了

1.     rootnoverify (hd0,0) 

設爲根分區/root設備,但不加載文件系統。(hd0,0)表示第幾個硬盤的第幾個分區

2.     chainloader +1       

將啓動引導權轉交給當前分區的首扇區

3.  boot

已經成功了一大半,終於可以進去win了!  不過這樣的話,但每次開機你都要輸入,我們就要修復一下主引導扇區MBR(硬盤的第一個扇區),一個扇區是512個字節,前面446個字節用於引導程序,接下來64個字節用於存放分區信息,最後2個字節爲結束標記。修復的方法很多,xp下可以用個工具 clsmbr.exe(CSDN下載有售),運行一下就可以了,win7這個小工具不能用,不兼容,不過不要緊,我們如果有win7的iso的話,可以從安裝包中拷貝bootsect.exe(在boot這個文件夾裏)這個文件,然後在cmd中輸入 bootsect /nt60 SYS /mbr 就可以了。

然後大功告成。 

2.如果遇到的是grub rescue>

遇到這種情況的原因可能有

這個情況下命令比上種情況少,不過不要緊

方法如下:

1.grub rescue>ls 

//回車,列出本機所有磁盤及分區,如:hd0,(hd0,1),(hd0,7),(hd0,8),(hd0,9)等,我的機器上顯示的是(hd0,msdos8)

2.然後查看到底是那個盤是grub的啓動盤,做如下測試,若出現該目錄下的文件列表,則成;若出現"unknow filesystem"則表示不成功,繼續試探!

 

 

ls (hd0,X)/boot/grub X代表ls裏出現的盤號,如果出現一大堆的文件,拓展名爲.mod,.list等,記住這個盤的盤號(這裏是/boot適用於木有單獨分區,單獨分區可以同理)

3grub rescue>set root=(hd0,msdos8)   //括號裏爲上一步嘗試成功的分區,例如msdos8

grubrescue>set prefix=(hd0,msdos8)/boot/grub 

   grub rescue>insmod normal        //每個命令輸入後按回車,">"是提示符!!!

然後應該就退出grub rescue模式了

4) grub> normal  //這樣就進入到grub界面下了

很好,我們終於回到Linux了

進入Linux系統之後,還沒完呢,在命令行輸入以下命令即可!

sudo update-grub

然後輸入

sudo grub-install /dev/sda   //你的啓動盤

這樣就解決了,Win與Linux都可以啓動了

 

參考來源:

1.grub rescue修復方法

.http://forum.ubuntu.org.cn/viewtopic.php?t=348503&p=2516283

2.win Linux雙系統修復

http://blog.csdn.net/shc5840/article/details/6313323

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章