1. 程式人生 > >Win7與ubuntu雙系統開機找不到ubuntu引導項問題解決

Win7與ubuntu雙系統開機找不到ubuntu引導項問題解決

現在很多人都是使用windows和linux雙系統,一般的做法是先安裝windows系統,然後再安裝ubuntu系統,這樣ubuntu的grub就會自己搜尋並新增windows的引導項,這是正常情況下的狀態。但是有時候自己不小心在windows裡面修改了linux磁碟之前的碟符或者重灌了windows系統,又或者使用了windows下的開機引導修復工具,就會導致開機時找不到ubuntu的相關引導項了。

當然,萬能的解決方案是重新安裝ubuntu,但這是下下之選,除非萬不得已。

因為筆者電腦預裝的windows系統有100M的系統保留分割槽,自己動手刪掉並使用開機引導修復工具修復了一下,發現開機找不到ubuntu的引導了,只能上網搜尋解決方案。網路上的方案很多,比如ubuntu livecd試用並重新安裝grub等等,自己試驗了一下,很多都不能解決我的問題。

經過摸索,終於試驗成功了這一種解決方案。這種方案不一定是萬能的,或許不能解決所有類似的問題,但也是提供了一種選擇,可以嘗試。

我的雙系統是windows 7 專業版和ubuntu 12.04非wubi安裝。機器只有一個硬碟,hd0,如果有多個硬碟,自己對應系統裝在哪一塊硬盤裡,後面命令中的hd0相應修改為hd1,hd2等等。後面命令中msdos7這個msdos是固定寫法,數字是對應分割槽數字。比如你查出的/boot是對應dev/sda7,那這裡就寫msdos7。也可以直接寫數字7而不用寫msdos7。

解決方案:

一、安裝ubuntu系統時,如果單獨分出了/boot分割槽,如下:

1、先進入windows 7系統。(如果進不去可以先用win PE進入,然後使用引導修復工具修復之後就可以進入windows)
2、下載並安裝EasyBCD工具。
3、通過“新增新條目”選項新增一個“Linux/BSD”,型別為Grub2,驅動器選中/boot分割槽所在碟符。如我的就是hd0,msdos7。 新增條目。(如果不知道哪個分割槽是/boot分割槽,可以通過ubuntu livecd試用ubuntu,fdisk -l 命令列出所有分割槽,根據後面的型別以及大小應該可以分析出相應分割槽)
4、重啟,引導項中選擇自己新增的這個條目,這時並不是如自己所想進入ubuntu,而是找不到ubuntu相關引導,進入了grub rescure> 命令列模式。
5、執行以下命令:
set root=(hd0,msdos7)
set prefix=(hd0,msdos7)/grub
insmod normal
normal
6、執行上面命令之後應該就能看到之前ubuntu的引導項,選擇進入ubuntu系統
7、進入ubuntu系統之後執行以下命令,否則再重啟還要重複上面的動作。
sudo update-grub
sudo grub-install /dev/sda
(注意上面第二行命令最後一個是sda而不是sda1或者sda7之類的具體數字)
8、重啟,應該就能正常出現ubuntu和windows的引導項了。

二、安裝ubuntu系統時,如果沒有單獨分出/boot分割槽,如下:

1、先進入windows 7系統。(如果進不去可以先用win PE進入,然後使用引導修復工具修復之後就可以進入windows)
2、下載並安裝EasyBCD工具。
3、通過“新增新條目”選項新增一個“Linux/BSD”,型別為Grub2,驅動器選中/分割槽所在碟符。如我的就是hd0,msdos8。 新增條目。(如果不知道哪個分割槽是/分割槽,可以通過ubuntu livecd試用ubuntu,fdisk -l 命令列出所有分割槽,根據後面的型別以及大小應該可以分析出相應分割槽)
4、重啟,引導項中選擇自己新增的這個條目,這時並不是如自己所想進入ubuntu,而是找不到ubuntu相關引導,進入了grub rescure> 命令列模式。
5、執行以下命令:
set root=(hd0,msdos8)
set prefix=(hd0,msdos8)/boot/grub
insmod normal
normal
6、執行上面命令之後應該就能看到之前ubuntu的引導項,選擇進入ubuntu系統
7、進入ubuntu系統之後執行以下命令,否則再重啟還要重複上面的動作。
sudo update-grub
sudo grub-install /dev/sda
(注意上面第二行命令最後一個是sda而不是sda1或者sda7之類的具體數字)
8、重啟,應該就能正常出現ubuntu和windows的引導項了。