重新安裝Grub 2
一、緣由
-
一個硬碟中本身存在多個分割區,同時原本已安裝有多個不同的作業系統,並由Grub 2作為開機的選單管理程式,例如:
-
sda1: Windows XP Professional; ntfs
-
sda2: Ubuntu 10.4; ext4
-
-
如今有可能因為sda1的Windows 作業系統損毀,必須重新安裝,或是想安裝新的Winodws 作業系統 ,例如,Windows 7,因此就重新安裝了Windows的某一作業系統。此時原本存在於MBR的GRUB 2開機程式,就被Windows的開機程式所取代,因此重新開機後,就無法出現Ubuntu作業系統的開機選單。因此就必須重新安裝GRUB 2開機程式於MBR。
二、重新安裝Grub 2的方式
-
最好的方式(最乾淨的方式),是透過CD,例如,Ubuntu 的Live CD,開啟(試用)Ubuntu作業系統後,執行相關的指令來達成。
三、以CD重新安裝Grub 2-以Ubuntu作業系統為例
-
以較新版或當初所安裝過的Ubuntu Live CD,開啟(試用)Ubuntu作業系統。
-
開啟終端機 - 應用程式(Applications),附屬應用程式(Accessories),終端機(Terminal)。
-
找出所安裝Ubuntu系統是在那一個分割區。
-
sudo fdisk -l,以判斷您的標準系統分割區 ,也就是已經安裝過的Ubuntu作業系統分割區。
-
若無法確定,可執行sudo df -Th,以顯示正確的磁碟容量和 ext3 或 ext4 格式下的分割區,以判定那一個分割區是你安裝過的Ubuntu作業系統分割區。
-
或是執行「位置->電腦」,點選所有可能是已安裝Ubuntu作業系統的分割區加以掛載,並執行「系統->管理->系統監控」,並點選「檔案系統」頁次,就可以看到已經掛載的各分割區的詳細資料,就可以進行確認所安裝Ubuntu系統是在那一個分割區,例如,sda2。
-
-
掛載您的標準系統分割區:
-
sudo mount /dev/sdXX /mnt ,例如,若/根目錄是安裝在sda2,則sudo mount /dev/sda2 /mnt 。
-
若Ubuntu系統中的某些目錄,有安裝在任何其他獨立的系統分割區,例如 /boot,/usr等,這些分割區也應用同樣的方式掛載。例如, sudo mount /dev/sda3 /mnt/boot,或是 sudo mount /dev/sda6 /mnt/usr
-
在此處說明一下例用「位置->電腦」,點選所有可能是已安裝Ubuntu作業系統的分割區加以掛載的方式,在Ubuntu系統下,所掛載的分割區通常會掛載在/media目錄下。但是要執行grub-install時,似乎其所認識的分割區應該要掛載在/mnt目錄下。
-
-
掛載裝置:sudo mount --bind /dev/ /mnt/dev
-
修改所安裝Ubuntu 作業系統中/boot/grub.cfg該檔案中有關每一分割區的正確(hdX,Y)編號,其中,X是硬碟的編號,Y是該指定硬碟中的某一分割區,例如,可能將(hd1,1)改成(hd0,1)。以及若安裝新的其他作業系統時,就必須將該新作業系統安裝的碟碟分割區的uuid編號,也在grub.cfg中加以修正。詳細內容,請參考後續的詳細說明。
-
Chroot 至您的標準系統裝置:sudo chroot /mnt
-
以sudo grub-install /dev/sdX,重新安裝 GRUB 2,用sda、sdb 等等以正確裝置替換 sdX,同時不要指定分割區數字,例如,sudo grub-install /dev/sda
-
以sudo grub-install --recheck /dev/sdX驗證安裝,要使用正確裝置,例如 sda,不要指定分割區數字,例如,sudo grub-install --recheck /dev/sda,若最後一行顯示的是「Installation finished. No error reported.」,則代表已經重新安裝Grub 2。
-
退出 chroot:按下鍵盤 CTRL-D
-
卸載裝置:sudo umount /mnt/dev,若您掛載獨立的 /boot 分割區,則執行sudo umount /mnt/boot
-
最後卸載裝置:sudo umount /mnt
-
重開機:reboot
-
說明:一旦使用者可以開機至正常運作的系統,試著判斷系統先前為何無法開機。以下指令證實對於找到和修復此問題非常有效。
-
更新 /boot/grub/grub.cfg 中的可用裝置及設定:sudo update-grub
-
尋找開機載入程式位置:grub-probe -t device /boot/grub
-
安裝 GRUB 2 至 sdX 分割區的主要開機磁區(MBR)(sda、sdb 等等):sudo grub-install /dev/sdX
-
再度檢查安裝(sda、sdb 等等):sudo grub-install --recheck /dev/sdX
-
-
說明修改所安裝Ubuntu 作業系統中/boot/grub.cfg檔案的內容
-
Ubuntu系統有一個特點,就是可以在安裝系統當下時,將Ubuntu系統安裝在電腦中的local 硬碟,或是USB硬碟。grub.cfg有關硬碟與分割區之編號格式為(hdX,Y),其中,X是硬碟的編號,Y是該指定硬碟中的某一分割區,若是安裝在local硬碟,則grub.cfg檔案中有關的local硬碟編號將是(hd0,Y),若是安裝在USB硬碟,則grub.cfg檔案中有關的USB硬碟編號將是(hd1,Y)或是(hd2,Y)…等。
-
若想將原來的USB硬碟置換變成local硬碟,則一般就必須將(hd1,Y)改成(hd0,Y)。
-
若想將原來的local硬碟置換變成USB硬碟,則一般就必須將(hd0,Y)改成(hd1,Y)。
-
若是新安裝一個新的Windows作業系統,則將會產生一個新的uuid,所以也要一併更改所對應的uuid。
-