Grub引导默认会将Ubuntu放在第一个,Win7则在最后。
Grub的配置文件是/etc/default/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=""
这里可以看出,配置好这个文件后利用update-grub命令会自动生成Grub真正的配置文件/boot/grub/grub.cfg,这里可以设置默认启动第几个启动项,如果想默认启动第5个(Win7),那么可以把GRUB_DEFAULT改为4。
而如果想把Win7放在最上面,则需要更改另一个文件夹/etc/grub.d,ls一下可以看到下面有00_header、05_debian_theme、10_linux、20_linux_xen、20_memtest86+、30_os-prober、30_uefi-firmware、40_custom、41_custom、README这些文件,默认情况下win7对应的文件名是30_os-prober,Ubuntu的启动项相关文件名为“10_....”,只需要更改win7的文件名(06-09均可)即可将win7的启动项放在Ubuntu前面,即启动项列表的第一个。最后执行update-grub命令就行了。
而查看/boot/grub/grub.cfg的内容
#
# 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 ###
到这里就可以推断出Grub的工作原理:update-grub命令会读取/etc/default/grub的内容确定默认项、等待时间等等,并按照/etc/grub.d文件夹下文件名顺序生成menuentry关键字(每一个关键字代表一个启动项),全部写入/boot/grub/grub.cfg文件(所以最好不要手动修改这个文件),系统启动时会利用grub.cfg文件生成启动项列表。
如果想临时更改启动项配置,可以在启动时在对应启动项上按e键。