自訂 Grub2 on Ubuntu 9.10+
從 Ubuntu 9.10 開始,凍仁就沒什麼調校過開機選單,畢竟 Grub 與 Grub2 的差異真的不小,記得以前只要修改 /boot/grub/menu.lst 一個檔案即可,可現在的卻會動態產生這個檔案,也就是實際可編寫的設定檔改了位置也改了規則。
不過 Grub2 最棒的地方是它會搜尋所有分割區上的作業系統,並納入開機選單,這點可是讓 Ubuntu 更人性化不少呢!至於 Grub2 不完美的部份嘛,那就自己小小調校一下了。
1.2. 更新開機選單。
2.1.2. 停用 os-prober,也就是往後使用 update-grub 指令時將不會自動產生其他作業系統的設定。
2.1.3. 更新開機選單。
不過 Grub2 最棒的地方是它會搜尋所有分割區上的作業系統,並納入開機選單,這點可是讓 Ubuntu 更人性化不少呢!至於 Grub2 不完美的部份嘛,那就自己小小調校一下了。
1. 一般設定
[ jonny@precise ~
$ sudo vi /etc/default/grub [Enter]
# 更改預設開機系統。
GRUB_DEFAULT=0
# 隱藏 grub 開機選單。
GRUB_HIDDEN_TIMEOUT=0
# 使用文字模式開機,裝上 NVIDIA 顯卡驅動的圖形化開機不夠美觀。
GRUB_CMDLINE_LINUX_DEFAULT=""
# 自訂解析度。
GRUB_GFXMODE=800x600
1.2. 更新開機選單。
[ jonny@precise ~
$ sudo update-grub [Enter]
Generating grub.cfg ...
Found linux image: /boot/vmlinuz-3.2.0-24-generic-tp
Found initrd image: /boot/initrd.img-3.2.0-24-generic-tp
Found linux image: /boot/vmlinuz-3.2.0-24-generic
Found initrd image: /boot/initrd.img-3.2.0-24-generic
Found memtest86+ image: /boot/memtest86+.bin
Found Windows 7 (loader) on /dev/sda1
Found Windows 7 (loader) on /dev/sda2
Found Windows 7 (loader) on /dev/sdb1
Found Ubuntu 10.04.4 LTS (10.04) on /dev/sdb6
done
2. 進階設定
以下章節需對開機選單、分割區及系統配置觀念,搞砸也甭擔心,把 os-prober 啟用並更新開機選單即可。2.1. 建立自訂選單
2.1.1. 參考 /boot/grub/grub.cfg 編寫 /etc/grub.d/40_custom,以下為凍仁自訂的開機選單。[ jonny@precise ~ ]
$ sudo vi /etc/grub.d/40_custom [Enter]
1 #!/bin/sh 2 exec tail -n +3 $0 3 # This file provides an easy way to add custom menu entries. Simply type the 4 # menu entries you want to add after this comment. Be careful not to change 5 # the 'exec tail' line above. 6 7 # - Ubuntu 10.04 on /dev/sdb6 8 menuentry "# ----" --class gnu-linux --class gnu --class os { 9 insmod part_msdos 10 insmod ext2 11 set root='(hd2,msdos6)' 12 search --no-floppy --fs-uuid --set=root 3c4b2a07-a099-4e2a-8f35-c46162389986 13 chainloader +1 14 } 15 16 # - Windows 7 on /dev/sda1 17 menuentry "Windows 7 (/dev/sda1)" --class windows --class os { 18 insmod part_msdos 19 insmod ntfs 20 set root='(hd1,msdos1)' 21 search --no-floppy --fs-uuid --set=root 9440E68540E66E04 22 chainloader +1 23 } 24 25 # - Windows XP on /dev/sdb1 26 menuentry "Windows XP (/dev/sdb1)" --class windows --class os { 27 insmod part_msdos 28 insmod ntfs 29 set root='(hd2,msdos1)' 30 search --no-floppy --fs-uuid --set=root 2CDCBD4CDCBD1156 31 chainloader +1 32 } 33 34 # - Ubuntu 10.04 on /dev/sdb6 35 menuentry "Ubuntu 10.04 (/dev/sdb6)" --class gnu-linux --class gnu --class os { 36 insmod part_msdos 37 insmod ext2 38 set root='(hd2,msdos6)' 39 search --no-floppy --fs-uuid --set=root 3c4b2a07-a099-4e2a-8f35-c46162389986 40 #linux /boot/vmlinuz-2.6.32-41-generic-tp root=UUID=3c4b2a07-a099-4e2a-8f35-c46162389986 ro 41 #initrd /boot/initrd.img-2.6.32-41-generic-tp 42 chainloader +1 43 } 44
2.1.2. 停用 os-prober,也就是往後使用 update-grub 指令時將不會自動產生其他作業系統的設定。
[ jonny@precise ~
$ sudo vi /etc/default/grub [Enter]
GRUB_DISABLE_OS_PROBER=true
2.1.3. 更新開機選單。
[ jonny@precise ~
$ sudo update-grub [Enter]
Generating grub.cfg ...
Found linux image: /boot/vmlinuz-3.2.0-24-generic-tp
Found initrd image: /boot/initrd.img-3.2.0-24-generic-tp
Found linux image: /boot/vmlinuz-3.2.0-24-generic
Found initrd image: /boot/initrd.img-3.2.0-24-generic
Found memtest86+ image: /boot/memtest86+.bin
done
相關連結:
★os-prober
★grub2 如何更改選單中的開機順序 ? | 酷學園
資料來源:
★GRUB 2 中文指南 - Ubuntu 正體中文 Wiki
留言
張貼留言
喜歡這篇文章嗎?歡迎在底下留言讓凍仁知道。😉