2016年3月17日 星期四

重建Ubuntu Grub2開機選單

本文取自 手把手玩Linux
Ubuntu 9.10,10.04都能使用此方法修複Grub開機選單,此方法應能適用大部份的狀況。剛好不知怎麼了,我的的開機選單出現錯誤,正好驗證一下寫的是否會有問題。

請準備一片與出問題的系統相符合或高於安裝版本的Ubuntu Live CD,因為,舊的可能無法辨別新版本所使用的分割格式,Live CD可以用複寫片燒錄就行,就算我能用硬碟直接安裝,還是會準備一片以便不時之需。


打開選單「系統」、「管理」、「磁碟工具程式」我系統安裝在/dev/sda(SATA 第一顆硬碟,編號從A開始,第二顆就是B囉),所以我要在sda找出掛載/的裝置,先把所需要的資料找出來。

▼把這些抄起來:①裝置:/dev/sda ②已掛載於:③分割區類型:ext4 ④掛載點/dev/sda5

實作修複Grub2開機選單


插Ubuntu Live CD開機後,開啟終端機:

1、把原本系統的/掛載到到/mnt。
sudo mount -t ext4 /dev/sda3 /mnt
◎如果你/boot不是在/裡面,而是另外分割區,要先把/boot掛載到/mnt/boot在進行下一步。
2、安裝開機選單,我要裝到/dev/sda,root-directory為原來系統的/,安裝時/就指向/mnt。
sudo grub-install --root-directory=/mnt --recheck /dev/sda
修正Windows系統的uuid(如果雙系統windows在sda1的情況下)
  1. 進入ubuntu系統
  2. 把/dev/sda1的uuid找出來。
    sudo blkid -s UUID -o value /dev/sda1
  3. sudo vim /boot/grub/grub.cfg

手動比對是否正確


1、把/dev/sda5的uuid找出來。
sudo blkid -s UUID -o value /dev/sda5
2、列出/mnt/boot目錄內容。
ls -l /mnt/boot
3、打開grub.cfg搜尋10_linux,比對內容是否相跟所查到的資料一樣。
sudo gedit /mnt/boot/grub/grub.cfg

▼①找出uuid ②列出boot內容 ③比對grub.cfg


沒問題的話就重開機試試看,重開機前記得先把解除剛剛掛載的哦。
sudo umount /dev/sda5

若想關閉grub2的進階選項

  1. vim /etc/default/grub 增加一列
    GRUB_DISABLE_SUBMENU=Y (似乎無效)
  2. grub-mkconfig
  3. update-grub
若想關閉grub2的memory test
  1. chmod 000 /etc/grub.d/20*
  2. update-grub