从Ubuntu 9.10起,grub2就已是默认的BootLoader了。这里简要说要Ubuntu的grub2和其余发行版不同的地方。
对于全部的OS启动项,CentOS全都显示在一个grub选择界面,显得很是拥挤,而Ubuntu这里就使用了一个Submenu的概念,将kernel版本最高的OS启动项放在最顶端名为“Ubuntu”的选项中,其余的版本都放在一个名为“Advanced options for Ubuntu”中,这个就是前面说到的Submenu子菜单。进入子菜单后,就能够手动选择你须要的版本了。这里注意,每一个版本都提供了普通版和recover mode两种选择。
grub选择界面:
grub配置文件以下:linux
…… # OS启动版本选择 set default="0" fi submenu 'Advanced options for Ubuntu' $menuentry_id_option 'gnulinux-advanced-f7627d97-02da-4145-af58-0fe730f276b2' { menuentry 'Ubuntu, with Linux 3.13.0-24-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-3.13.0-24-generic-advanced-f7627d97-02da-4145-af5 8-0fe730f276b2' { …… menuentry 'Ubuntu, with Linux 3.13.0-24-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-3.13.0-24-generic-recovery-f7627d 97-02da-4145-af58-0fe730f276b2' { …… }
下载kernel源代码,执行make bzImage -j 4 && make modules -j 4 && make modules_install && make install,编译并安装后,就会在/boot目录生成对应版本的vmlinuz、initrd.img、.config等文件,而且会默认执行update-grub命令来生成最新的grub配置文件。若是未手动修改,默认会按照kernel版本号从高到低的顺序将各个版本的OS放入Submenu中,也就是说,默认启动的就是kernel版本最高的OS。ubuntu
grub的配置文件有两个:/boot/grub/grub.cfg和/etc/default/grub,其中/boot/grub/grub.cfg为真正生效的文件,但其权限为只读的,也就是不建议直接修改;这是就须要/etc/default/grub文件了,经过修改该文件,再执行update-grub命令,便可将改动从/etc/default/grub更新到/boot/grub/grub.cfg了。打开/etc/default/grub:code
# 选择的OS版本 GRUB_DEFAULT="1>2" GRUB_HIDDEN_TIMEOUT_QUIET=true # 停留在grub选择界面的时间 GRUB_TIMEOUT=5 GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian` GRUB_CMDLINE_LINUX_DEFAULT="" GRUB_CMDLINE_LINUX=""
这里咱们主要关注GRUB_DEFAULT这个选项,咱们上面提到,OS启动版本中,第一项是kernel版本最高的OS,第二项就是Submenu,而全部OS版本都在这个Submenu中,包括版本最高的OS。打开/boot/grub/grub.cfg,索引从0开始,选择第几个index,update-grub并重启后,就会从选择的OS启动。好比咱们要选择索引为2的OS版本,那么咱们只须要GRUB_DEFAULT修改以下便可。而后执行命令update-grub,再重启OS即生效。1>2表示先选择第1项(索引从0开始的),即Submenu,再从Submenu中选择第2项。索引
GRUB_DEFAULT="1>2"
若是以为数字的方式比较难以区分,也可使用名称的方式,格式相似,以下。表示先选择名为Advanced options for Ubuntu的第一层,即Submenu,再从Submenu中选择名为Ubuntu, with Linux 3.9.0的OS版本。get
GRUB_DEFAULT="Advanced options for Ubuntu>Ubuntu, with Linux 3.9.0"
若是想了解更多关于Ubuntu grub2的信息,请参考官网:https://help.ubuntu.com/community/Grub2it