恢復被win7覆蓋的Ubuntu Grub


情景:本本裝有Ubuntu 12.04 + Win7 32。重裝Win7 64后,Ubuntu啟動菜單被覆蓋。

恢復的方法有多種,思路都一樣。第一步,進入Linux環境;第二步。修改Grub使其重新覆蓋windows的MBR。

我使用的方法為easyBCD。

步驟:

在win7上安裝easyBCD;打開該軟件后如下圖:

可以看到只有一個啟動項。我們再加一個引導Linux的啟動項,如下圖:點擊添加新條目->NeroGrub->安裝。

安裝成功后在C盤會看到以下NeoGrub文件和NST文件夾。

重啟,選擇NeoGrub,然后便能進入grub。


 

 

到這里之后,進行下一步操作之前,我們先要明白自己的硬盤分區是什么結構。以我的為例:

右擊計算機->管理->磁盤管理,如下圖:

 

(備注:以sd表示磁盤,磁盤0表示為sda,若有磁盤1,則表示為sdb,磁盤2表示為sdc……)

系統保留分區為sda1,C盤系統盤為sda2,DEF三個邏輯分區合起來為一個擴展分區,叫sda3,然后具體的D盤為sda4,E盤為sda5,F盤為sda6,Linux分區為sda7,linux交換空間為sda8。

但是在Ubuntu 下看到的跟這個略為不同:

用fdisk -l命令查看:

可以看見區別么?少了sda4。我在網上查資料,說是linux約定sda1~4為基本分區(主分區+擴展分區),所以不可能把sda4這個稱呼給D盤,因為D盤是邏輯分區。

另一個區別是linux把自己的系統分區和交換空間也放在擴展分區里的。

好,說到這里,我們繼續恢復Ubuntu Grub的步驟。

通過以上的鋪墊,我們知道了Linux系統分區位於sda8。不知道也沒關系,一個個分區試也能試出來。

grub> root(hd0,x)
grub> ls

輪換使用上述兩個命令,直到看到了linux系統下的文件夾(如lost+found,etc等等),此時的(hd0,x)即是linux分區。另一個區別是linux文件系統格式為ext2(或者ext3、ext4)。windows分區為ntfs。

 

之前的操作到了重啟,選擇NeoGrub啟動菜單進入grub命令行,用root(hdm,n)命令選擇m塊硬盤上的n分區。對我的機器來說就是:

grub> root(hd0,7)

有同學可能會納悶了,之前不是說在sda8分區上嗎,怎么選擇的是(hd0,7)啊。這是因為hd(hard drive)是從0開始計數的,而sda從1開始。從hd0也能看出hd是從0的。hd0就表示你的第一塊硬盤。下一步:

grub> kernel /boot/vmlinuz-x.x.x-xx-generic root=/dev/sda8

vmlinuz-x.x.x-xx-generic中的x為kernel的版本,可以按Tab鍵自動補全,也可以用 ls /boot/ 命令查看一下。下一步:

grub> initrd /boot/initrd.img-x.x.x-xx.generic

最后一步:

grub> boot

這樣就能進入Ubuntu 了。


 

 

進去之后,修改grub,用grub覆蓋windows 7的MBR:

$ sudo update-grub

$ sudo grub-install /dev/sda

大功告成,重啟。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM