最近裝了Ubuntu 10.10,因為之前有Windows 7等系統,所以Ubuntu裝上后出現啟動菜單,默認Ubuntu啟動。網上找了好多修改啟動選項的方法,眾說紛紜,現在總結如下:
一、能上網情況下的最好方法:安裝startupmanager——圖形啟動項管理器
打開終端輸入:sudo apt-get install startupmanager
安裝啟動管理器
系統——系統管理——啟動管理器,選中默認開機操作系統即可。
二、最方便的方法:調整Windows系統的默認啟動順序(不需要修改grub.cfg)
/etc/grub.d 目錄中的腳本文件的文件名都是以數字開頭,這確定了在執行update-grub 時各文件內容被執行的順序。
1. 用 sudo nautilus 命令,以root權限打開文件瀏覽器。然后找到30_os-prober這個文件,把 30_os-prober這個文件名的數字30改為05到10之間的數字即可(沒多少可選06、07、08、09),比如改為08_os-prober, 這樣創建出來的grub.cfg內的菜單項,windows的排序就會自動在ubuntu之前;
2. 運行 sudo update-grub 命令。就可以看到,windows7 已經排在了第一個的位置上。
三、網上介紹最多的方法(修改grub.cfg)
用 sudo gedit /boot/grub/grub.cfg 命令打開grub.cfg 這個文件,
一種方法是並將文件中的 set default="0" 中的 0 改成對應欲默認啟動的操作系統的序號(從0開始) 。然后保存;
另一種方法是把Windows對應的啟動說明那一段剪切到啟動說明段最前面;
用這2種方法都能默認啟動Windows,但用修改grub.cfg 文件來實現修改默認啟動項應注意:當使用update-grub 命令或者系統升級、grub升級等,grub.cfg文件將被復原。需要重新修改。
如果懶於每次update-grub 之后都要修改grub.cfg 文件,則可以進行如下操作:
用 sudo gedit /etc/grub.b/00_header 命令打開00_header 這個文件,找到 ser default ="${GRUB_DEFAULT}" 一行,將${GRUB_DEFAULT} 換成欲默認啟動的操作系統的序號(從0開始),保存,再update-grub。這樣每次update-grub之后生成的grub.cfg將自動改成我 們想要的樣子。
四、如果你在硬盤中同時安裝了不同的系統,或者由於Ubuntu更新/安裝軟件而產生了多個啟動項,為了免去每次開機都要選擇的麻煩,可以把一些低版本的或是不需要的啟動項注釋掉,這樣開機看起來就沒那么亂了。
具體做法:sudo gedit /boot/grub/grub.cfg
然后找到 menuentry ...,看准了要去掉的系統啟動項,在menuentry這個單詞前面加上"#"就然后保存就可以了。注意:至少要留一個,建議保留兩個ubuntu的選 項,留下最高版本的兩個不同類型的,其次再核對類型是不是各自一個:一個是正常的(沒有注明“恢復模式”或:“recovery”),另一個是恢復模式的 (注明“恢復模式”或:“recovery”)。另外含有Window的項是不能加“#”進行注釋的,否則你的就會找不到相關的系統入口了。還有內存測試 (menuentry "Memory test .....“ ),如果希望使用此功能留下一項,個人認為留下選項多的那個入口代表更多功能,但是內存測試的速度也會花更長的時間。
以下貼上本人機器啟動項的配置情況,windows是最后一項,裝的XP。
---------------------------------------------------------------------------------------
#
# DO NOT EDIT THIS FILE
#
# It is automatically generated by grub-mkconfig using templates
# from /etc/grub.d and settings from /etc/default/grub
#
### BEGIN /etc/grub.d/00_header ###
if [ -s $prefix/grubenv ]; then
set have_grubenv=true
load_env
fi
set default="2"
if [ "${prev_saved_entry}" ]; then
set saved_entry="${prev_saved_entry}"
save_env saved_entry
set prev_saved_entry=
save_env prev_saved_entry
set boot_once=true
fi
function savedefault {
if [ -z "${boot_once}" ]; then
saved_entry="${chosen}"
save_env saved_entry
fi
}
function recordfail {
set recordfail=1
if [ -n "${have_grubenv}" ]; then if [ -z "${boot_once}" ]; then save_env recordfail; fi; fi
}
function load_video {
insmod vbe
insmod vga
}
insmod part_msdos
insmod ext2
set root='(hd1,msdos8)'
search --no-floppy --fs-uuid --set c825786c-e42c-4fed-8cc2-fd2a610a183b
if loadfont /usr/share/grub/unicode.pf2 ; then
set gfxmode=1280x1024
load_video
insmod gfxterm
fi
terminal_output gfxterm
insmod part_msdos
insmod ext2
set root='(hd1,msdos8)'
search --no-floppy --fs-uuid --set c825786c-e42c-4fed-8cc2-fd2a610a183b
set locale_dir=($root)/boot/grub/locale
set lang=zh
insmod gettext
if [ "${recordfail}" = 1 ]; then
set timeout=-1
else
set timeout=3
fi
### END /etc/grub.d/00_header ###
### BEGIN /etc/grub.d/05_debian_theme ###
set menu_color_normal=white/black
set menu_color_highlight=black/light-gray
### END /etc/grub.d/05_debian_theme ###
### BEGIN /etc/grub.d/10_linux ###
#menuentry 'Ubuntu, with Linux 2.6.35-22-generic' --class ubuntu --class gnu-linux --class gnu --class os {
recordfail
insmod part_msdos
insmod ext2
set root='(hd1,msdos8)'
search --no-floppy --fs-uuid --set c825786c-e42c-4fed-8cc2-fd2a610a183b
linux /boot/vmlinuz-2.6.35-22-generic root=UUID=c825786c-e42c-4fed-8cc2-fd2a610a183b ro vga=775 quiet splash
initrd /boot/initrd.img-2.6.35-22-generic
}
#menuentry 'Ubuntu, with Linux 2.6.35-22-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os {
recordfail
insmod part_msdos
insmod ext2
set root='(hd1,msdos8)'
search --no-floppy --fs-uuid --set c825786c-e42c-4fed-8cc2-fd2a610a183b
echo 'Loading Linux 2.6.35-22-generic ...'
linux /boot/vmlinuz-2.6.35-22-generic root=UUID=c825786c-e42c-4fed-8cc2-fd2a610a183b ro single vga=775
echo 'Loading initial ramdisk ...'
initrd /boot/initrd.img-2.6.35-22-generic
}
menuentry 'Ubuntu, with Linux 2.6.32-25-server' --class ubuntu --class gnu-linux --class gnu --class os {
recordfail
insmod part_msdos
insmod ext2
set root='(hd1,msdos8)'
search --no-floppy --fs-uuid --set c825786c-e42c-4fed-8cc2-fd2a610a183b
linux /boot/vmlinuz-2.6.32-25-server root=UUID=c825786c-e42c-4fed-8cc2-fd2a610a183b ro vga=775 quiet splash
initrd /boot/initrd.img-2.6.32-25-server
}
menuentry 'Ubuntu, with Linux 2.6.32-25-server (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os {
recordfail
insmod part_msdos
insmod ext2
set root='(hd1,msdos8)'
search --no-floppy --fs-uuid --set c825786c-e42c-4fed-8cc2-fd2a610a183b
echo 'Loading Linux 2.6.32-25-server ...'
linux /boot/vmlinuz-2.6.32-25-server root=UUID=c825786c-e42c-4fed-8cc2-fd2a610a183b ro single vga=775
echo 'Loading initial ramdisk ...'
initrd /boot/initrd.img-2.6.32-25-server
}
#menuentry 'Ubuntu, with Linux 2.6.32-25-generic' --class ubuntu --class gnu-linux --class gnu --class os {
recordfail
insmod part_msdos
insmod ext2
set root='(hd1,msdos8)'
search --no-floppy --fs-uuid --set c825786c-e42c-4fed-8cc2-fd2a610a183b
linux /boot/vmlinuz-2.6.32-25-generic root=UUID=c825786c-e42c-4fed-8cc2-fd2a610a183b ro vga=775 quiet splash
initrd /boot/initrd.img-2.6.32-25-generic
}
#menuentry 'Ubuntu, with Linux 2.6.32-25-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os {
recordfail
insmod part_msdos
insmod ext2
set root='(hd1,msdos8)'
search --no-floppy --fs-uuid --set c825786c-e42c-4fed-8cc2-fd2a610a183b
echo 'Loading Linux 2.6.32-25-generic ...'
linux /boot/vmlinuz-2.6.32-25-generic root=UUID=c825786c-e42c-4fed-8cc2-fd2a610a183b ro single vga=775
echo 'Loading initial ramdisk ...'
initrd /boot/initrd.img-2.6.32-25-generic
}
#menuentry 'Ubuntu, with Linux 2.6.32-25-preempt' --class ubuntu --class gnu-linux --class gnu --class os {
recordfail
insmod part_msdos
insmod ext2
set root='(hd1,msdos8)'
search --no-floppy --fs-uuid --set c825786c-e42c-4fed-8cc2-fd2a610a183b
linux /boot/vmlinuz-2.6.32-25-preempt root=UUID=c825786c-e42c-4fed-8cc2-fd2a610a183b ro vga=775 quiet splash
initrd /boot/initrd.img-2.6.32-25-preempt
}
#menuentry 'Ubuntu, with Linux 2.6.32-25-preempt (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os {
recordfail
insmod part_msdos
insmod ext2
set root='(hd1,msdos8)'
search --no-floppy --fs-uuid --set c825786c-e42c-4fed-8cc2-fd2a610a183b
echo 'Loading Linux 2.6.32-25-preempt ...'
linux /boot/vmlinuz-2.6.32-25-preempt root=UUID=c825786c-e42c-4fed-8cc2-fd2a610a183b ro single vga=775
echo 'Loading initial ramdisk ...'
initrd /boot/initrd.img-2.6.32-25-preempt
}
### END /etc/grub.d/10_linux ###
### BEGIN /etc/grub.d/20_linux_xen ###
### END /etc/grub.d/20_linux_xen ###
### BEGIN /etc/grub.d/20_memtest86+ ###
#menuentry "Memory test (memtest86+)" {
insmod part_msdos
insmod ext2
set root='(hd1,msdos8)'
search --no-floppy --fs-uuid --set c825786c-e42c-4fed-8cc2-fd2a610a183b
linux16 /boot/memtest86+.bin
}
menuentry "Memory test (memtest86+, serial console 115200)" {
insmod part_msdos
insmod ext2
set root='(hd1,msdos8)'
search --no-floppy --fs-uuid --set c825786c-e42c-4fed-8cc2-fd2a610a183b
linux16 /boot/memtest86+.bin console=ttyS0,115200n8
}
### END /etc/grub.d/20_memtest86+ ###
### BEGIN /etc/grub.d/30_os-prober ###
menuentry "Microsoft Windows XP Professional (on /dev/sda1)" {
insmod part_msdos
insmod ntfs
set root='(hd1,msdos1)'
search --no-floppy --fs-uuid --set 22a89599a8956bd3
drivemap -s (hd0) ${root}
chainloader +1
}
### END /etc/grub.d/30_os-prober ###
### BEGIN /etc/grub.d/40_custom ###
# This file provides an easy way to add custom menu entries. Simply type the
# menu entries you want to add after this comment. Be careful not to change
# the 'exec tail' line above.
### END /etc/grub.d/40_custom ###
### BEGIN /etc/grub.d/41_custom ###
if [ -f $prefix/custom.cfg ]; then
source $prefix/custom.cfg;
fi
### END /etc/grub.d/41_custom ###
------------------------------------------------------------------
對以上啟動項配置修改的簡要說明:
紅 色語句前面都是加了”#“就是不再顯示的啟動項,如果以后需要再次重新啟用,那么只要能夠進入編輯/boot /grub/grub.cfg這個文件,把”#“號去掉就可以了。綠色的項目是保留的啟動項,在系統啟動時候會顯示。萬一你對分辨這紅和綠這兩種顏色有困 難的話,可以數一下,啟動代碼中紅色的語句共7句,綠色的3句。
五、關於系統啟動時默認等待時間的設置:
Ubuntu默認是顯示啟動列表10秒以后自動進入第一個顯示的啟動項。要修改這個啟動等待時間也是可以在/boot/grub/grub.cfg這個文件里面修改的,找到以下代碼段:
---------------------------------------------------------------
search --no-floppy --fs-uuid --set c825786c-e42c-4fed-8cc2-fd2a610a183b
set locale_dir=($root)/boot/grub/locale
set lang=zh
insmod gettext
if [ "${recordfail}" = 1 ]; then
set timeout=-1
else
set timeout=3
fi
--------------------------------------------------------------
修改else語句后面這個”timeout“的值,比如這里是3表示等待3秒后自動進入系統。改為其他值比如5就等待5秒。
如果你不熟悉代碼的意思或者怕改錯,那么建議你安裝一個啟動管理器在里面進行可視化設置。這樣比較保險。
六、刪除開機啟動菜單多余的內核
很多用戶一般都會選擇Windows + Ubuntu的雙系統。用得時間久了,隨着Ubuntu內核的不斷升級,開機啟動菜單會變得越來越臃腫。下面簡單介紹一下如何刪除開機啟動菜單多余的內核(舊版本),以及如何調整不同操作系統的啟動順序。
Ubuntu是由grub引導啟動的。每當Ubuntu升級到新的版本后,grub會自動調整開機啟動菜單的順序,把新的內核放在啟動菜單的開始, 同時也不會刪除久的內核版本。這樣,當Ubuntu的升級次數一多,啟動菜單中將變得非常臃腫。而且那些舊版本的內核基本不會用,不如刪除之。解決方案如 下:
1.找出系統已經安裝的內核版本,在終端里輸入命令:
dpkg --get-selections | grep linux-image
然后會顯示系統中已安裝的內核,例如:
linux-image-2.6.35-22-generic install
linux-image-2.6.38-10-generic install
linux-image-2.6.38-11-generic install
linux-image-2.6.38-8-generic install
linux-image-3.0.0-12-generic install
linux-image-generic install
2.卸載舊的內核版本,在終端里輸入命令:
sudo apt-get remove linux-image-2.6.35-22-generic linux-image-2.6.38-8-generic linux-image-2.6.38-10-generic linux-image-2.6.38-11-generic
上面命令和含義是:
dpkg --get-selections [<表達式> ...] 把已選中的軟件包列表打印到標准輸出;
grep linux-image 匹配查找;
uname -a 查看已安裝的linux內核版。
這樣,舊的內核版本就刪除了。