0%

Centos 升级内核的正确姿势

前言

本文仅适合在线 Yum 方式安装升级

查看当前内核版本

升级前查看下现在发行版的内核

1
2
# uname -sr
Linux 3.10.0-1062.4.1.el7.x86_64

安装最新内核

  1. 导入 ELRepo 公钥
    1
    rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org

ELRepo 项目使用的 GPG 密钥的详细信息访问https://www.elrepo.org/tiki/key

  1. 安装 ELRepo 仓库,根据自己 OS 的发行版选对应命令。
  • To install ELRepo for RHEL-8 or CentOS-8:

    1
    yum install https://www.elrepo.org/elrepo-release-8.0-2.el8.elrepo.noarch.rpm
  • To install ELRepo for RHEL-7, SL-7 or CentOS-7:

    1
    yum install https://www.elrepo.org/elrepo-release-7.0-4.el7.elrepo.noarch.rpm
  • To install ELRepo for RHEL-6, SL-6 or CentOS-6:

    1
    yum install https://www.elrepo.org/elrepo-release-6-9.el6.elrepo.noarch.rpm
  1. 为了使用镜像系统,请同时安装 yum-plugin-fastestmirror

    1
    yum install yum-plugin-fastestmirror -y
  2. ELRepo 安装后,使用下面的命令列出可用的系统内核相关包

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    [root@yunwei ~]# yum --disablerepo="*" --enablerepo="elrepo-kernel" list available
    Loaded plugins: fastestmirror
    Repository base is listed more than once in the configuration
    Repository updates is listed more than once in the configuration
    Repository extras is listed more than once in the configuration
    Repository epel is listed more than once in the configuration
    Loading mirror speeds from cached hostfile
    * elrepo-kernel: hkg.mirror.rackspace.com
    Available Packages
    kernel-lt.x86_64 4.4.204-1.el7.elrepo elrepo-kernel
    kernel-lt-devel.x86_64 4.4.204-1.el7.elrepo elrepo-kernel
    kernel-lt-doc.noarch 4.4.204-1.el7.elrepo elrepo-kernel
    kernel-lt-headers.x86_64 4.4.204-1.el7.elrepo elrepo-kernel
    kernel-lt-tools.x86_64 4.4.204-1.el7.elrepo elrepo-kernel
    kernel-lt-tools-libs.x86_64 4.4.204-1.el7.elrepo elrepo-kernel
    kernel-lt-tools-libs-devel.x86_64 4.4.204-1.el7.elrepo elrepo-kernel
    kernel-ml-devel.x86_64 5.4.0-1.el7.elrepo elrepo-kernel
    kernel-ml-doc.noarch 5.4.0-1.el7.elrepo elrepo-kernel
    kernel-ml-headers.x86_64 5.4.0-1.el7.elrepo elrepo-kernel
    kernel-ml-tools.x86_64 5.4.0-1.el7.elrepo elrepo-kernel
    kernel-ml-tools-libs.x86_64 5.4.0-1.el7.elrepo elrepo-kernel
    kernel-ml-tools-libs-devel.x86_64 5.4.0-1.el7.elrepo elrepo-kernel
    perf.x86_64 5.4.0-1.el7.elrepo elrepo-kernel
    python-perf.x86_64 5.4.0-1.el7.elrepo elrepo-kernel

    可以看到 kernel-ml 最新版本是 5.4.0 了

  1. 安装最新的主线稳定内核
    1
    yum --enablerepo=elrepo-kernel install kernel-ml

修改grub中默认的内核版本

内核升级完毕后,目前内核还是默认的版本,如果此时直接执行 reboot 命令,重启后使用的内核版本还是默认的 3.10,不会使用最新安装的内核版本,首先,我们可以通过命令查看默认启动顺序:

1
2
3
4
[root@yunwei ~]# awk -F\' '$1=="menuentry " {print $2}' /etc/grub2.cfg
CentOS Linux (5.4.0-1.el7.elrepo.x86_64) 7 (Core)
CentOS Linux (3.10.0-1062.4.1.el7.x86_64) 7 (Core)
CentOS Linux (0-rescue-7d26c16f128042a684ea474c9e2c240f) 7 (Core)

由上面可以看出新内核(5.4.0)目前位置在0,原来的内核(3.10.0)目前位置在1,所以如果想生效最新的内核,还需要我们修改内核的启动顺序为0:

1
vi /etc/default/grub

centos-upgrade-kernel-grub.jpg

Centos 6 更改的文件相同,使用命令确定新内核位置后,然后将参数default更改为0即可。

接着运行grub2-mkconfig命令来重新创建内核配置

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

重启,验证最新内核

1
2
3
4
reboot

[root@yunwei ~]# uname -sr
Linux 5.4.0-1.el7.elrepo.x86_64

删除旧内核

  1. 查看系统中全部的内核 RPM 包
    1
    2
    3
    4
    5
    6
    7
    8
    [root@yunwei ~]# rpm -aq |grep kernel
    kernel-headers-3.10.0-1062.4.1.el7.x86_64
    kernel-debug-devel-3.10.0-1062.4.1.el7.x86_64
    kernel-tools-libs-3.10.0-1062.4.1.el7.x86_64
    kernel-tools-3.10.0-1062.4.1.el7.x86_64
    kernel-ml-5.4.0-1.el7.elrepo.x86_64
    kernel-3.10.0-1062.4.1.el7.x86_64
    kernel-devel-3.10.0-1062.4.1.el7.x86_64
  2. 删除旧内核
    1
    yum remove kernel-headers-3.10.0-1062.4.1.el7.x86_64 kernel-debug-devel-3.10.0-1062.4.1.el7.x86_64 kernel-tools-3.10.0-1062.4.1.el7.x86_64 kernel-3.10.0-1062.4.1.el7.x86_64 kernel-devel-3.10.0-1062.4.1.el7.x86_64

安装最新版 kernel-tool, kernel-headers, kernel-devel

1
yum --enablerepo=elrepo-kernel install kernel-ml-devel.x86_64 kernel-ml-headers.x86_64 kernel-ml-tools.x86_64

链接

  • ELRepo.org
  • The Linux Kernel Archives
坚持原创技术分享,您的支持将鼓励我继续创作!