https://www.cnblogs.com/ding2016/p/10429640.html

测试环境:
系统当前内核版本小版本升级CentOS 7.63.10.0-9573.10.0-957.5.1

系统当前内核版本大版本升级CentOS 7.63.10.0-9574.20.12-1(目前最新)

操作步骤:
小版本升级

1查看当前和可升级版本

  1. [root@server-1 ~]# yum list kernel
  2. Installed Packages
  3. kernel.x86_64 3.10.0-957.el7 @anaconda
  4. Available Packages
  5. kernel.x86_64 3.10.0-957.5.1.el7 updates

2. 升级

[root@server-1 ~]# yum update kernel -y
3. 重启并检查
[root@server-1 ~]# reboot   
[root@server-1 ~]# uname -r

大版本升级

  1. 载入公钥

http://elrepo.org/tiki/HomePage

[root@server-1 ~]# rpm —import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
2. 升级安装ELRepo

[root@server-1 ~]# rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm

  1. yum install https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm -y

3. 载入elrepo-kernel元数据

[root@server-1 ~]# yum —disablerepo=* —enablerepo=elrepo-kernel repolist

4. 查看可用的rpm包

[root@server-1 ~]# yum —disablerepo= —enablerepo=elrepo-kernel list kernel
Installed Packages
kernel.x86_64 3.10.0-957.el7 @anaconda
kernel.x86_64 3.10.0-957.5.1.el7 @updates
kernel-tools.x86_64 3.10.0-957.el7 @anaconda
kernel-tools-libs.x86_64 3.10.0-957.el7 @anaconda
Available Packages
kernel-lt.x86_64 4.4.176-1.el7.elrepo elrepo-kernel
kernel-lt-devel.x86_64 4.4.176-1.el7.elrepo elrepo-kernel
kernel-lt-doc.noarch 4.4.176-1.el7.elrepo elrepo-kernel
kernel-lt-headers.x86_64 4.4.176-1.el7.elrepo elrepo-kernel
kernel-lt-tools.x86_64 4.4.176-1.el7.elrepo elrepo-kernel
kernel-lt-tools-libs.x86_64 4.4.176-1.el7.elrepo elrepo-kernel
kernel-lt-tools-libs-devel.x86_64 4.4.176-1.el7.elrepo elrepo-kernel
kernel-ml.x86_64 4.20.12-1.el7.elrepo elrepo-kernel // 安装目标版本
kernel-ml-devel.x86_64 4.20.12-1.el7.elrepo elrepo-kernel
kernel-ml-doc.noarch 4.20.12-1.el7.elrepo elrepo-kernel
kernel-ml-headers.x86_64 4.20.12-1.el7.elrepo elrepo-kernel
kernel-ml-tools.x86_64 4.20.12-1.el7.elrepo elrepo-kernel
kernel-ml-tools-libs.x86_64 4.20.12-1.el7.elrepo elrepo-kernel
kernel-ml-tools-libs-devel.x86_64 4.20.12-1.el7.elrepo elrepo-kernel

说明:
lt :long term support,长期支持版本;
ml:mainline,主线版本;

5. 安装最新版本的kernel

[root@server-1 ~]# yum —disablerepo=* —enablerepo=elrepo-kernel install kernel-ml.x86_64 -y

6. 删除旧版本工具包

[root@server-1 ~]# yum remove kernel-tools-libs.x86_64 kernel-tools.x86_64 -y

7. 安装新版本工具包

[root@server-1 ~]# yum —disablerepo=* —enablerepo=elrepo-kernel install kernel-ml-tools.x86_64 -y

8. 查看内核插入顺序

[root@server-1 ~]# awk -F \’ ‘$1==”menuentry “ {print i++ “ : “ $2}’ /etc/grub2.cfg
0 : CentOS Linux (4.20.12-1.el7.elrepo.x86_64) 7 (Core)
1 : CentOS Linux (3.10.0-957.5.1.el7.x86_64) 7 (Core)
2 : CentOS Linux (3.10.0-957.el7.x86_64) 7 (Core)
3 : CentOS Linux (0-rescue-ca0f6fb3c5f24478abc0a2e275281d7a) 7 (Core)
说明:默认新内核是从头插入,默认启动顺序也是从0开始(当前顺序还未生效),或者使用:

  1. [root@server-1 ~]# awk -F \' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg
  2. 0 : CentOS Linux (4.20.12-1.el7.elrepo.x86_64) 7 (Core)
  3. 1 : CentOS Linux (3.10.0-957.5.1.el7.x86_64) 7 (Core)
  4. 2 : CentOS Linux (3.10.0-957.el7.x86_64) 7 (Core)
  5. 3 : CentOS Linux (0-rescue-ca0f6fb3c5f24478abc0a2e275281d7a) 7 (Core)

其中文件 /etc/grub2.cfg 和 /boot/grub2/grub.cfg 内容一致。

9. 查看当前实际启动顺序

[root@server-1 ~]# grub2-editenv list
saved_entry=CentOS Linux (3.10.0-957.5.1.el7.x86_64) 7 (Core)

10. 设置默认启动

[root@server-1 ~]# grub2-set-default ‘CentOS Linux (4.20.12-1.el7.elrepo.x86_64) 7 (Core)’
[root@server-1 ~]# grub2-editenv list
saved_entry=CentOS Linux (4.20.12-1.el7.elrepo.x86_64) 7 (Core)
或者直接设置数值

[root@server-1 ~]# grub2-set-default 0  // 0代表当前第一行,也就是上面的4.20.12版本那一行内容
[root@server-1 ~]# grub2-editenv list
saved_entry=0

  1. yum install https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm -y
  2. yum remove kernel-tools-libs.x86_64 kernel-tools.x86_64 -y
  3. yum --disablerepo=* --enablerepo=elrepo-kernel install kernel-ml-tools.x86_64 -y
  4. yum --disablerepo=* --enablerepo=elrepo-kernel install kernel-ml.x86_64 -y
  5. grub2-set-default 0
  6. reboot
  1. [root@master ~]# awk -F \' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg
  2. 0 : CentOS Linux (5.12.1-1.el7.elrepo.x86_64) 7 (Core)
  3. 1 : CentOS Linux (3.10.0-1160.15.2.el7.x86_64) 7 (Core)
  4. 2 : CentOS Linux (3.10.0-1062.el7.x86_64) 7 (Core)
  5. 3 : CentOS Linux (0-rescue-44e7679cbc5847419115c5e163e77100) 7 (Core)
  6. [root@master ~]# grub2-set-default 0
  7. [root@master ~]# grub2-editenv list
  8. saved_entry=0
  9. [root@master ~]#

11. 重启并检查

[root@server-1 ~]# reboot
[root@server-1 ~]# uname -r

  1. rpm -Uvh https://www.elrepo.org/elrepo-release-7.0-4.el7.elrepo.noarch.rpm
  2. yum --enablerepo=elrepo-kernel install -y kernel-ml
  3. grub2-set-default 0
  4. reboot
  5. uname -r

参考: https://github.com/gjmzj/kubeasz/blob/master/docs/guide/kernel_upgrade.md
    https://wiki.centos.org/HowTos/Grub2#head-535f476a61e62f24bc150c73f7e0816f85345f46