此文是本人經歷與網上資料整理如下,便與大家借鑑
我們遇到引導問題的原因可能有
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命令提示。這時候可以手動啓動比如我的win7在c盤,輸入如下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適用於木有單獨分區,單獨分區可以同理)
3)grub 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