最近发现服务器的内核有更新,但是重启后发现内核使用的还是安装服务器时的默认内核,本文记录一下如何更改CentOS的默认启动内核。

一、显示目前服务器上可用的所有内核

cat -n /boot/grub2/grub.cfg | grep menuentry

23	if [ x"${feature_menuentry_id}" = xy ]; then
24	  menuentry_id_option="--id"
26	  menuentry_id_option=""
29	export menuentry_id_option
88	menuentry 'CentOS Linux (3.10.0-1127.13.1.el7.x86_64) 7 (Core)' --class rhel fedora --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-5.6.4-1.el7.elrepo.x86_64-advanced-e8bac8c6-555e-473c-b5ce-0785d05bb42d' {
103	menuentry 'CentOS Linux (5.7.4-1.el7.elrepo.x86_64) 7 (Core)' --class rhel fedora --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-5.6.4-1.el7.elrepo.x86_64-advanced-e8bac8c6-555e-473c-b5ce-0785d05bb42d' {
118	menuentry 'CentOS Linux (5.7.2-1.el7.elrepo.x86_64) 7 (Core)' --class rhel fedora --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-5.6.4-1.el7.elrepo.x86_64-advanced-e8bac8c6-555e-473c-b5ce-0785d05bb42d' {
133	menuentry 'CentOS Linux (5.7.1-1.el7.elrepo.x86_64) 7 (Core)' --class rhel fedora --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-5.6.4-1.el7.elrepo.x86_64-advanced-e8bac8c6-555e-473c-b5ce-0785d05bb42d' {
148	menuentry 'CentOS Linux (3.10.0-1127.10.1.el7.x86_64) 7 (Core)' --class rhel fedora --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-5.6.4-1.el7.elrepo.x86_64-advanced-e8bac8c6-555e-473c-b5ce-0785d05bb42d' {
163	menuentry 'CentOS Linux (5.7.0-1.el7.elrepo.x86_64) 7 (Core)' --class rhel fedora --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-5.6.4-1.el7.elrepo.x86_64-advanced-e8bac8c6-555e-473c-b5ce-0785d05bb42d' {
178	menuentry 'CentOS Linux (5.6.15-1.el7.elrepo.x86_64) 7 (Core)' --class rhel fedora --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-5.6.4-1.el7.elrepo.x86_64-advanced-e8bac8c6-555e-473c-b5ce-0785d05bb42d' {
193	menuentry 'CentOS Linux (3.10.0-1127.8.2.el7.x86_64) 7 (Core)' --class rhel fedora --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-5.6.4-1.el7.elrepo.x86_64-advanced-e8bac8c6-555e-473c-b5ce-0785d05bb42d' {
208	menuentry 'CentOS Linux (3.10.0-1127.el7.x86_64) 7 (Core)' --class rhel fedora --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-5.6.4-1.el7.elrepo.x86_64-advanced-e8bac8c6-555e-473c-b5ce-0785d05bb42d' {
223	menuentry 'CentOS Linux (3.10.0-1062.18.1.el7.x86_64) 7 (Core)' --class rhel fedora --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-3.10.0-1062.18.1.el7.x86_64-advanced-e8bac8c6-555e-473c-b5ce-0785d05bb42d' {
238	menuentry 'CentOS Linux (0-rescue-0c84358e6ca240a494e11906f262a03d) 7 (Core)' --class rhel fedora --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-0-rescue-0c84358e6ca240a494e11906f262a03d-advanced-e8bac8c6-555e-473c-b5ce-0785d05bb42d' {

如上述结果所示的88、103、118、133、148、163、178、193、208、223、238都是可用的内核名称

二、手动设置要启动的内核名称

如我这里想要将启动的脚本设置为CentOS Linux (5.7.4-1.el7.elrepo.x86_64) 7 (Core),则需执行如下命令:

grub2-set-default 'CentOS Linux (5.7.4-1.el7.elrepo.x86_64) 7 (Core)'

查看设置的结果:

grub2-editenv list

三、修改默认启动内核

在前面我们看到,我想要设置的内核CentOS Linux (5.7.4-1.el7.elrepo.x86_64) 7 (Core)排序在第二位,序号为1(做开发的都知道昂),接下来就要修改启动服务器所使用的默认内核序列号。 vi /etc/default/grub 找到其中的GRUB_DEFAULT选项,将其改为你所选用的内核对应的序号,我这里是1,改完后进行保存。

四、修改Boot Loader的默认启动项

找到设置默认启动项目的地方:cat -n /boot/grub2/grub.cfg | grep 'set default',得到结果如下:

15	   set default="${next_entry}"
20	   set default="0"

20行的0改为1后并保存,然后重启服务器。

五、验证修改结果

执行如下命令:uname -r,如果结果是5.7.4-1.el7.elrepo.x86_64则表明修改成功。