gentoo的源碼樹認為grub2不夠穩定,所以在gentoo install guid 中最後安裝引導程式的時候使用的是grub0.97.之前忘了在核心中支援ntfs檔案系統,導致我誤認為grub1(grub0.97)不支援ntfs(其實應該是支援的),結果果斷的換成了grub2(grub1.99).具體步驟如下:
1、在portage源碼樹中解除對grub2的鎖定
#echo "=sys-boot/grub-9999" >> /etc/portage/package.unmask #echo "=sys-boot/grub-9999 **" >> /etc/portage/package.keywords#echo "=sys-boot/os-prober-1.47" >> /etc/portage/package.unmask
2、安裝grub2
#emerge -av sys-boot/grub:2
3、配置grub.cfg。上一步安裝玩grub2以後會在/boot目錄下產生一個grub2目錄,開機是grub讀取的就是這個目錄下的grub.cfg檔案。grub2提供了自動組建組態檔案工具,代碼如下:
grub2-mkconfig -o /boot/grub2/grub.cfg
這裡注意一點是:在gentoo的官方wiki上這條命令寫的是
grub-mkconfig -o /boot/grub2/grub.cfg ,但是如果你的硬碟上開始時安裝的grub1,那麼在/boot目錄下面本來會存在一個grub目錄。執行gentoo 提供的上述命令會導致將產生的grub.cfg寫道grub1的目錄中,導致grub2啟動時找不到設定檔,不能進入系統。(這裡稍微注意點應該不會犯錯。我太馬虎了,在這卡了一段時間)
4、將grub2寫入MBR。這步跟gentoo官方wiki上基本相同。代碼
grub2-install /dev/sda
如果你的核心沒有大錯誤,此時重新啟動應該能看到gentoo的啟動項,並且能夠啟動。
由於我的硬碟上本來有個win7系統,裝完gentoo後必須用grub2引導win7,所以要修改/boot/grub2/grub.cfg檔案,將win7的啟動資訊加入。以下是我的win7啟動資訊
menuentry 'Windows 7 (loader)(on /dev/sda2)'{ load_video insmod gzio insmod part_msdos insmod ntfs set root='(hd0,msdos1)' search --no-floppy --fs-uuid --set=root AE3EFDE83EFDA98B chainloader +1}
需要注意的是:set root='hd0,msdos1'這行中,msdos1代表你的win7開機磁碟分割位置。注意,win7的開機磁碟分割一定不是win7系統的安裝分區(通常是C盤),要確定開機磁碟分割,可在gentoo下執行 fdisk -l,哪一行的BOOT標誌是*,且分揀系統是ntfs或者是fat,說明它是win7開機磁碟分割。我的是/dev/sda1,故寫成msdos1.下一項需要注意的是開機磁碟分割的UUID,可以在gentoo下使用blkid命令查看。按照上述設定即可成功啟動win7.
不經常寫部落格,不知道為什麼發表後顯示的會不全,但是複製再粘貼到本地就可以看了!
參考:
1、http://en.gentoo-wiki.com/wiki/Grub2
2、http://hi.baidu.com/techofchaos/blog/item/b88c2f22d42d614cac34de32.html