Home > 技术乱弹 > Vista和Ubuntu双系统引导 – 修改默认启动的操作系统

Vista和Ubuntu双系统引导 – 修改默认启动的操作系统

January 25th, 2010 nanyo Leave a comment Go to comments

之前在台式机上装了双系统,电脑自带的是Vista Home Premium,而我装了Ubuntu 9.10。Ubuntu的Grub自动给电脑做好了引导程序,但默认的启动系统我选的是Ubuntu,不是Vista。后来发现,还是Vista用的多,但启动系统时一不留神就进来Ubuntu,得重启后再进Vista,如此折腾了多次。今天心血来潮,想把默认启动的系统改为Vista。Google了很多修改grub的文章,大多是针对Ubuntu 9.10之前的版本的,这些版本使用的是grub,而Ubuntu 9.10用的是Grub2。Grub2和Grub还是有些不同的,比如/boot/grub/文件夹下就找不到menu.lst。而网上的多数方法都是针对Grub。有关Grub2的修改的文章有一些,但大部分方法不对头,这些方法建议修改/boot/grub/grub.cfg的相关内容,如set default=”0″,来指定默认的启动系统。但这样治标不治本,更新grub之后,所作的修改都会失效。究其原因,可以看grub.cfg文件开头的一段描述:

#
# DO NOT EDIT THIS FILE
#
# It is automatically generated by /usr/sbin/grub-mkconfig using templates
# from /etc/grub.d and settings from /etc/default/grub
#

也就是说,grub.cfg文件的内容是从文件etc/default/grub的设置导入的,如果只修改grub.cfg,而不修改grub文件,那执行命令update-grub或update-grub2之后,grub.cfg中所做的修改都是无效的。先来看下grub文件的内容:

# If you change this file, run ‘update-grub’ afterwards to update
# /boot/grub/grub.cfg.

GRUB_DEFAULT=0
#GRUB_HIDDEN_TIMEOUT=0
GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_TIMEOUT=10
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT=”quiet splash”
GRUB_CMDLINE_LINUX=”"

# Uncomment to disable graphical terminal (grub-pc only)
#GRUB_TERMINAL=console

# The resolution used on graphical terminal
# note that you can use only modes which your graphic card supports via VBE
# you can see them in real GRUB with the command `vbeinfo’
#GRUB_GFXMODE=640×480

# Uncomment if you don’t want GRUB to pass “root=UUID=xxx” parameter to Linux
#GRUB_DISABLE_LINUX_UUID=true

# Uncomment to disable generation of recovery mode menu entrys
#GRUB_DISABLE_LINUX_RECOVERY=”true”

这里我们只看两条语句:“GRUB_DEFAULT=0”和“GRUB_TIMEOUT=10”,其他的我也没去细究。GRUB_DEFAULT制定了默认启动的操作系统,0便是这个操作系统的在可选操作系统目录中的索引。我的电脑的系统引导界面里Ubuntu, Linux 2.6.31-17-generic-pae是第一条,所以这个0指向它。GRUB_TIMEOUT制定了引导界面的停留时间,默认是10秒。因此,修改默认启动的OS方法很简单,只要把想启动的OS在目录的索引值找出来,并赋给GRUB_DEFAULT。引导界面的操作系统列表可以从文件/boot/grub/grub.cfg找出。在grub.cfg文件中找到所有“menuentry “****” ”之类的语句,*代表任意内容。在我的grub.cfg文件里,一共找到了7条此类语句,按顺序排列如下:

menuentry “Ubuntu, Linux 2.6.31-17-generic-pae”
menuentry “Ubuntu, Linux 2.6.31-17-generic-pae (recovery mode)”
menuentry “Ubuntu, Linux 2.6.31-14-generic-pae”
menuentry “Ubuntu, Linux 2.6.31-14-generic-pae (recovery mode)”
menuentry “Memory test (memtest86+)”
menuentry “Memory test (memtest86+, serial console 115200)”
menuentry “Windows Vista (loader) (on /dev/sda1)”

Vista在最后,其索引值为6(从0开始数起)。知道了这个索引值之后,就可以动手修改/etc/default/grub文件了(修改此文件需要管理员权限),以我的系统为例,步骤如下:
首先,打开一个Terminal窗口,输入命令”sudo vi /etc/default/grub”,提示输入管理员密码,“[sudo] password for ***: ”,输入密码(不会在:号之后显示出来)之后,vi编辑器将会打开文件grub。
接着,在vi编辑器里,按“a”键切换到输入状态,找到“GRUB_DEFAULT=0”,将0改为6。按ESC切换回命令状态,输入“:wq!”,按Enter键后,保存退出,返回到命令窗口。
最后,输入命令“sudo update-grub”“或sudo update-grub2”,更新grub引导程序。为了保险,我两条命令都试了一次。

更新完之后,可以打开文件/boot/grub/grub.cfg,里面的set default语句之后的数字已经变成6,而不是原来的0。重启系统,在系统引导界面,默认启动的系统已经变成Vista了(被高亮的)。

转载请注明出处: 利田小子[http://www.zhuhuang.com]

本文链接: http://www.zhuhuang.com/2010/01/vista-ubuntu-grub/

Categories: 技术乱弹 Tags: ,
  1. No comments yet.
  1. No trackbacks yet.