You need to enable JavaScript to run this app.
导航
更换Linux操作系统内核版本
最近更新时间:2024.10.24 10:31:13首次发布时间:2024.10.24 10:31:13

如果服务器操作系统的内核无法满足您的业务需求,您可以选择更换内核版本,即可在较小(相较于更换操作系统)的影响范围内满足业务要求。

本文以CentOS操作系统为例,介绍更换内核版本的操作流程。

操作场景

  • 提升系统性能
    新的内核版本可能会带来性能优化,例如更快的文件系统操作、更低的延迟或更高的吞吐量。
  • 支持新硬件
    当服务器安装了新的硬件设备,但当前内核不支持该设备时,可能需要升级内核以获得对新硬件的支持。
  • 修复安全漏洞
    新的内核版本可能会修复部分在旧内核中发现的安全漏洞。
  • 获取新特性支持
    新的内核版本可能会引入一些新的功能特性,例如,新的文件系统、虚拟化技术、容器化功能等。

注意事项

  • 更换系统内核可能会出现兼容性、稳定性及安全问题,强烈建议您在操作前进行数据备份
  • 更换内核操作需使用root权限。

升级内核版本

升级内核小版本

若您仅需要升级内核的小版本,可通过yum官方源进行操作。

说明

本节以将CentOS 7.9内核版本由3.10.0-1160.102.1.el7升级为3.10.0-1160.119.1为例。

  1. 登录目标Linux服务器
  2. 执行如下命令,查看当前内核版本。
    uname -r
    
    回显示例:
  3. 执行如下命令,升级yum包管理器。
    sudo yum update -y
    
  4. 执行如下命令,查看可安装的内核版本。
    sudo yum list kernel --showduplicates
    
    回显示例:
  5. 执行如下命令,安装指定版本的内核。
    sudo yum install kernel-3.10.0-1160.119.1.el7 -y
    

    说明

    请将3.10.0-1160.119.1.el7替换为实际内核版本。

  6. 更新引导配置。
    • BIOS启动模式:
      grub2-mkconfig -o /boot/grub2/grub.cfg
      
    • UEFI启动模式:
      grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg
      
  7. 执行如下命令,查看已安装的内核。
    • BIOS启动模式:
      awk -F\' '$1=="menuentry " {print i++ " : " $2}' /boot/grub2/grub.cfg
      
    • UEFI启动模式:
      awk -F\' '$1=="menuentry " {print i++ " : " $2}' /boot/efi/EFI/centos/grub.cfg
      
      回显示例:
  8. 执行如下命令,设置默认使用的内核。
    sudo grub2-set-default 0
    

    说明

    请将0替换为您在第7步中查询到的已安装内核序号。

  9. 执行如下命令,重启实例。
    sudo reboot
    
  10. 执行如下命令,查看当前内核版本,确认内核是否升级成功。
    uname -r
    
    回显示例:
  11. 执行如下命令,安装新内核相关的内核软件包。
    yum  install kernel-devel kernel-headers kernel-modules-extra kernel-tools kernel-tools-libs kernel-tools-libs-devel -y
    
    回显示例:

    注意

    若Yum源中没有所需版本的kernel-headers、kernel-devel等软件包。您可以自行下载安装:

    1. 下载目标软件包,例如通过清华大学镜像站下载。
    2. 上传软件包至目标实例。了解更多
    3. 执行如下命令,安装目标软件包。
      rpm -ivh <待安装的RPM包>
      

升级内核大版本

若您需要升级内核的大版本,可通过ELRepo源或自行编译内核。

说明

本节以将CentOS 8.3内核版本由4.18.0-348.7.1升级为6.10.11为例。

步骤一:安装ELRepo源

  1. 登录目标Linux服务器

  2. 执行如下命令,查看当前内核版本。

    uname -r
    

    回显示例:

  3. 执行如下命令,更新软件包。

    yum update -y
    
  4. 执行如下命令,导入ELRepo公钥。

    rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
    
  5. 执行如下命令,安装ELRepo源。

    yum install https://www.elrepo.org/elrepo-release-8.el8.elrepo.noarch.rpm -y
    
  6. 执行如下命令,替换ELRepo镜像仓库地址为清华大学开源软件镜像站,并注释mirrorlist

    sed -i "s@mirrorlist@#mirrorlist@g" /etc/yum.repos.d/elrepo.repo ;sed -i "s@elrepo.org/linux@mirrors.tuna.tsinghua.edu.cn/elrepo@g" /etc/yum.repos.d/elrepo.repo
    

    注意

    本文使用清华大学开源软件镜像站https://mirrors.tuna.tsinghua.edu.cn/作为镜像仓库地址,您也可以按需选用其他镜像站。了解更多

  7. 执行如下命令,更新软件包缓存。

    sudo yum makecache
    

步骤二:安装新内核

  1. 在目标实例中执行如下命令,载入ELRepo源数据。
    yum --disablerepo="*" --enablerepo="elrepo-kernel" repolist
    
    回显示例:
  2. 查看ELRepo源中当前操作系统支持使用的内核包。
    yum --disablerepo="*" --enablerepo="elrepo-kernel" list available
    
    回显示例

    说明

    • kernel-ml:代表主线内核。它包含了最新的功能、改进和实验性的特性,更新频繁。若您追求最新的技术和功能,对系统稳定性有一定的容忍度,并且愿意处理可能出现的问题,可以选用该类内核。
    • kernel-lt:长期支持(LTS)内核。主要关注稳定性和兼容性,这些内核版本经过了更广泛的测试,并且在较长时间内得到支持。若您需要稳定运行环境、不希望频繁更新内核或者对新功能需求不高,可以选用该类内核。
  3. 执行如下命令,安装最新的主线内核。
    yum --enablerepo=elrepo-kernel install kernel-ml -y
    

    说明

    若您期望安装指定内核,可执行如下命令,请将kernel-ml-6.10.11-1.el8.elrepo替换为上一步查询获得的目标内核版本。

    yum --enablerepo="elrepo-kernel" install kernel-ml-6.10.11-1.el8.elrepo 
    

步骤三:修改Grub配置

  1. 执行如下命令,查看已安装的内核信息。
    grubby --info=ALL | grep ^kernel
    
    回显示例:
  2. 执行如下命令,指定启动实例时使用的默认内核。
    grubby --set-default=/boot/vmlinuz-6.10.11-1.el8.elrepo.x86_64
    
    回显示例:

    说明

    本文以使用安装的6.10.11-1.el8.elrepo.x86_64内核为例,请将/boot/vmlinuz-6.10.11-1.el8.elrepo.x86_64替换为上一步查询获取的实际目标内核信息。

  3. 执行如下命令,重启实例。
    reboot
    
  4. 执行如下命令,确认实例内核是否更新成功。
    uname -r
    
    回显示例:
  5. 安装新内核相关软件包。
    1. 执行如下命令,查看已安装的内核软件包。
      rpm -qa | grep kernel
      
      回显示例:
    2. 执行如下命令,删除旧内核软件包。
      yum remove kernel-core-4.18.0 kernel-devel-4.18.0 kernel-tools-libs-4.18.0 kernel-headers-4.18.0 -y
      

      说明

      本文以删除4.18.0版本内核相关软件包为例,请将其替换为实际软件包。

    3. 执行如下命令,安装当前使用的新内核相关软件包。
      yum --enablerepo="elrepo-kernel" install kernel-ml-devel kernel-ml-headers kernel-ml-modules-extra kernel-ml-tools kernel-ml-tools-libs kernel-ml-tools-libs-devel -y
      
    4. 执行如下命令,确认您需要的新内核及其内核软件包均已安装。
      rpm -qa | grep kernel
      
      回显示例: