重新安裝Grub 2

 

一、緣由

  1. 一個硬碟中本身存在多個分割區,同時原本已安裝有多個不同的作業系統,並由Grub 2作為開機的選單管理程式,例如:

    1. sda1: Windows XP Professional; ntfs

    2. sda2: Ubuntu 10.4; ext4

  2. 如今有可能因為sda1Windows 作業系統損毀,必須重新安裝,或是想安裝新的Winodws 作業系統 ,例如,Windows 7,因此就重新安裝了Windows的某一作業系統。此時原本存在於MBRGRUB 2開機程式,就被Windows的開機程式所取代,因此重新開機後,就無法出現Ubuntu作業系統的開機選單。因此就必須重新安裝GRUB 2開機程式於MBR

 

二、重新安裝Grub 2的方式

  1. 最好的方式(最乾淨的方式),是透過CD,例如,Ubuntu Live CD,開啟(試用)Ubuntu作業系統後,執行相關的指令來達成。

 

三、以CD重新安裝Grub 2-Ubuntu作業系統為例

  1. 以較新版或當初所安裝過的Ubuntu Live CD,開啟(試用)Ubuntu作業系統。

  2. 開啟終端機 - 應用程式(Applications),附屬應用程式(Accessories),終端機(Terminal)。

  3. 找出所安裝Ubuntu系統是在那一個分割區。

    1. sudo fdisk -l,以判斷您的標準系統分割區 ,也就是已經安裝過的Ubuntu作業系統分割區。

    2. 若無法確定,可執行sudo df -Th,以顯示正確的磁碟容量和 ext3 ext4 格式下的分割區,以判定那一個分割區是你安裝過的Ubuntu作業系統分割區。

    3. 或是執行「位置->電腦」,點選所有可能是已安裝Ubuntu作業系統的分割區加以掛載,並執行「系統->管理->系統監控」,並點選「檔案系統」頁次,就可以看到已經掛載的各分割區的詳細資料,就可以進行確認所安裝Ubuntu系統是在那一個分割區,例如,sda2

  4. 掛載您的標準系統分割區:

    1. sudo mount /dev/sdXX /mnt ,例如,若/根目錄是安裝在sda2,則sudo mount /dev/sda2 /mnt

    2. Ubuntu系統中的某些目錄,有安裝在任何其他獨立的系統分割區,例如 /boot/usr等,這些分割區也應用同樣的方式掛載。例如, sudo mount /dev/sda3 /mnt/boot,或是 sudo mount /dev/sda6 /mnt/usr

    3. 在此處說明一下例用「位置->電腦」,點選所有可能是已安裝Ubuntu作業系統的分割區加以掛載的方式,在Ubuntu系統下,所掛載的分割區通常會掛載在/media目錄下。但是要執行grub-install時,似乎其所認識的分割區應該要掛載在/mnt目錄下。

  5. 掛載裝置:sudo mount --bind /dev/ /mnt/dev

  6. 修改所安裝Ubuntu 作業系統中/boot/grub.cfg該檔案中有關每一分割區的正確(hdX,Y)編號,其中,X是硬碟的編號,Y是該指定硬碟中的某一分割區,例如,可能將(hd1,1)改成(hd0,1)。以及若安裝新的其他作業系統時,就必須將該新作業系統安裝的碟碟分割區的uuid編號,也在grub.cfg中加以修正。詳細內容,請參考後續的詳細說明。

  7. Chroot 至您的標準系統裝置:sudo chroot /mnt

  8. sudo grub-install /dev/sdX,重新安裝 GRUB 2,用sdasdb 等等以正確裝置替換 sdX,同時不要指定分割區數字,例如,sudo grub-install /dev/sda

  9. sudo grub-install --recheck /dev/sdX驗證安裝,要使用正確裝置,例如 sda,不要指定分割區數字,例如,sudo grub-install --recheck /dev/sda,若最後一行顯示的是「Installation finished. No error reported.」,則代表已經重新安裝Grub 2

  10. 退出 chroot:按下鍵盤 CTRL-D

  11. 卸載裝置:sudo umount /mnt/dev,若您掛載獨立的 /boot 分割區,則執行sudo umount /mnt/boot

  12. 最後卸載裝置:sudo umount /mnt

  13. 重開機:reboot

  14. 說明:一旦使用者可以開機至正常運作的系統,試著判斷系統先前為何無法開機。以下指令證實對於找到和修復此問題非常有效。

    1. 更新 /boot/grub/grub.cfg 中的可用裝置及設定:sudo update-grub

    2. 尋找開機載入程式位置:grub-probe -t device /boot/grub

    3. 安裝 GRUB 2 sdX 分割區的主要開機磁區(MBR)(sdasdb 等等):sudo grub-install /dev/sdX

    4. 再度檢查安裝(sdasdb 等等):sudo grub-install --recheck /dev/sdX

  15. 說明修改所安裝Ubuntu 作業系統中/boot/grub.cfg檔案的內容

    1. Ubuntu系統有一個特點,就是可以在安裝系統當下時,將Ubuntu系統安裝在電腦中的local 硬碟,或是USB硬碟。grub.cfg有關硬碟與分割區之編號格式為(hdX,Y),其中,X是硬碟的編號,Y是該指定硬碟中的某一分割區,若是安裝在local硬碟,則grub.cfg檔案中有關的local硬碟編號將是(hd0,Y),若是安裝在USB硬碟,則grub.cfg檔案中有關的USB硬碟編號將是(hd1,Y)或是(hd2,Y)…等。

    2. 若想將原來的USB硬碟置換變成local硬碟,則一般就必須將(hd1,Y)改成(hd0,Y)

    3. 若想將原來的local硬碟置換變成USB硬碟,則一般就必須將(hd0,Y)改成(hd1,Y)

    4. 若是新安裝一個新的Windows作業系統,則將會產生一個新的uuid,所以也要一併更改所對應的uuid

文章標籤
創作者介紹
創作者 xx3d2ybnf 的頭像
xx3d2ybnf

xx3d2ybnf-不圖3日但2年精進勇者不懼的部落格

xx3d2ybnf 發表在 痞客邦 留言(0) 人氣()