更改内核启动顺序

Centos7 服务器每次重启都会启动最新内核版本,有时候我不希望启动最新的,由于和现在某些软件不兼容,还是想选择旧的版本,下面是如何开机启动你的旧版本内核

1
2
[root@localhost ~]# uname -sr
Linux 3.10.0-862.el7.x86_64 注:这个就是内核版本号

查看系统上的所有可用内核:

1
2
3
4
5
6
[root@localhost ~]# sudo awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg
0 : CentOS Linux (3.10.0-957.27.2.el7.x86_64) 7 (Core)
1 : CentOS Linux (3.10.0-862.el7.x86_64) 7 (Core)
2 : CentOS Linux (0-rescue-3d8698de8c6b4c4586bd5f41a20ec7d6) 7 (Core)
[root@localhost ~]#

服务器上存在3个内核,我们要使用(3.10.0-862.el7.x86_64)这个版本,可以通过 grub2-set-default 1 命令或编辑 /etc/default/grub 文件来设置

编辑 /etc/default/grub 文件

  • 设置 GRUB_DEFAULT=1,通过上面查询显示的编号为 1 的内核作为默认内核:
1
2
3
4
5
6
7
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=1
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0 crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet"
GRUB_DISABLE_RECOVERY="true"

生成 grub 配置文件并重启

1
2
3
4
5
6
7
8
9
10
[root@localhost ~]# grub2-mkconfig -o /boot/grub2/grub.cfg
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-3.10.0-957.27.2.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-957.27.2.el7.x86_64.img
Found linux image: /boot/vmlinuz-3.10.0-862.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-862.el7.x86_64.img
Found linux image: /boot/vmlinuz-0-rescue-3d8698de8c6b4c4586bd5f41a20ec7d6
Found initrd image: /boot/initramfs-0-rescue-3d8698de8c6b4c4586bd5f41a20ec7d6.img
done
[root@localhost ~]#

删除内核

  • 查看都有那些内核:
1
2
3
4
5
6
7
[root@localhost ~]# rpm -qa | grep kernel
kernel-tools-3.10.0-957.27.2.el7.x86_64
kernel-3.10.0-862.el7.x86_64
kernel-headers-3.10.0-957.27.2.el7.x86_64
kernel-3.10.0-957.27.2.el7.x86_64
kernel-tools-libs-3.10.0-957.27.2.el7.x86_64
[root@localhost ~]#
  • yum remove 删除内核的 RPM 包
1
[root@localhost ~]# yum remove kernel-tools-3.10.0-957.27.2.el7.x86_64