火山引擎云服务器实践教程-更换Linux操作系统内核版本

axin 2025-04-06 7人围观 ,发现0个评论 火山引擎云服务器云服务器云服务器教程

👉点击这里申请火山引擎VIP帐号,立即体验火山引擎产品>>>

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

操作场景

  • 提升系统性能

新的内核版本可能会带来性能优化,例如更快的文件系统操作、更低的延迟或更高的吞吐量。
  • 支持新硬件

当服务器安装了新的硬件设备,但当前内核不支持该设备时,可能需要升级内核以获得对新硬件的支持。
  • 修复安全漏洞

新的内核版本可能会修复部分在旧内核中发现的安全漏洞。
  • 获取新特性支持

新的内核版本可能会引入一些新的功能特性,例如,新的文件系统、虚拟化技术、容器化功能等。

注意事项

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

  • 更换内核操作需使用root权限。

升级内核版本

升级内核小版本

若您仅需要升级内核的小版本,可通过yum官方源进行操作。
说明
本节以将CentOS 7.9内核版本由3.10.0-1160.102.1.el7升级为3.10.0-1160.119.1为例。
  1. 登录目标Linux服务器。

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

uname -r
回显示例:

  1. 执行如下命令,升级yum包管理器。

sudo yum update -y
  1. 执行如下命令,查看可安装的内核版本。

sudo yum list kernel --showduplicates
回显示例:

  1. 执行如下命令,安装指定版本的内核。

sudo yum install kernel-3.10.0-1160.119.1.el7 -y
说明
请将3.10.0-1160.119.1.el7替换为实际内核版本。
  1. 更新引导配置。

    • BIOS启动模式:

grub2-mkconfig -o /boot/grub2/grub.cfg
    • UEFI启动模式:

grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg
  1. 执行如下命令,查看已安装的内核。

    • 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
回显示例:

  1. 执行如下命令,设置默认使用的内核。

sudo grub2-set-default 0
说明
请将0替换为您在第7步中查询到的已安装内核序号。

  1. 执行如下命令,重启实例。

sudo reboot
  1. 执行如下命令,查看当前内核版本,确认内核是否升级成功。

uname -r
回显示例:

  1. 执行如下命令,安装新内核相关的内核软件包。

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. 下载目标软件包,例如通过清华大学镜像站下载。

  1. 上传软件包至目标实例。了解更多。

  1. 执行rpm -ivh <待安装的RPM包>命令,安装目标软件包。

升级内核大版本

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

通过ELRepo源升级

步骤一:安装ELRepo源

  1. 登录目标Linux服务器

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

uname -r
回显示例:

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

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

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

yum install https://www.elrepo.org/elrepo-release-8.el8.elrepo.noarch.rpm -y
  1. 执行如下命令,替换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/作为镜像仓库地址,您也可以按需选用其他镜像站。了解更多。
  1. 执行如下命令,更新软件包缓存。

sudo yum makecache

步骤二:安装新内核

  1. 在目标实例中执行如下命令,载入ELRepo源数据。

yum --disablerepo="*" --enablerepo="elrepo-kernel" repolist
回显示例:

  1. 查看ELRepo源中当前操作系统支持使用的内核包。

yum --disablerepo="*" --enablerepo="elrepo-kernel" list available
回显示例

说明
  • kernel-ml:代表主线内核。它包含了最新的功能、改进和实验性的特性,更新频繁。若您追求最新的技术和功能,对系统稳定性有一定的容忍度,并且愿意处理可能出现的问题,可以选用该类内核。

  • kernel-lt:长期支持(LTS)内核。主要关注稳定性和兼容性,这些内核版本经过了更广泛的测试,并且在较长时间内得到支持。若您需要稳定运行环境、不希望频繁更新内核或者对新功能需求不高,可以选用该类内核。

  1. 执行如下命令,安装最新的主线内核。

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
回显示例:

  1. 执行如下命令,指定启动实例时使用的默认内核。

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替换为上一步查询获取的实际目标内核信息。
  1. 执行如下命令,重启实例。

reboot
  1. 执行如下命令,确认实例内核是否更新成功。

uname -r
回显示例:

  1. 安装新内核相关软件包。

    1. 执行如下命令,查看已安装的内核软件包。

rpm -qa | grep kernel
回显示例:

    1. 执行如下命令,删除旧内核软件包。

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版本内核相关软件包为例,请将其替换为实际软件包。
    1. 执行如下命令,安装当前使用的新内核相关软件包。

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
    1. 执行如下命令,确认您需要的新内核及其内核软件包均已安装。

rpm -qa | grep kernel
回显示例:


自编译内核升级

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

步骤一:下载内核源码

  1. 前往Kernel官方站点,进入您期望下载的目标内核版本目录。

说明
本文以下载5.x版本内核源码包为例。
  1. 获取目标版本内核源码包下载链接。

说明
本文以安装5.4.278内核为例,获取进入v5.x目录后获取linux-5.4.278.tar.gz的下载链接为https://mirrors.edge.kernel.org/pub/linux/kernel/v5.x/linux-5.4.278.tar.gz。
  1. 登录目标Linux服务器

  1. 在待更换内核的实例中,执行如下命令,下载内核源码包。

wget https://mirrors.edge.kernel.org/pub/linux/kernel/v5.x/linux-5.4.278.tar.gz
  1. 执行如下命令,下载系统安装相关软件包。

yum install bc gcc make python3 ncurses-devel flex bison openssl-devel elfutils-libelf-devel -y
  1. 执行如下命令,查看GCC版本。

gcc --version
    • 若版本不低于7,请继续后续步骤。

    • 若版本低于7,请执行如下命令,升级GCC。

      1. 执行如下命令,安装SCL默认源。

yum install centos-release-scl scl-utils-build -y
      1. 执行如下命令,替换软件仓库地址替换为国内镜像地址。

说明
本文以替换为火山引擎镜像地址https://mirrors.volces.com/为例,您可以按需替换为目标镜像地址。
sed -i "s@#baseurl=http://mirror.centos.org@baseurl=https://mirrors.volces.com/@g" /etc/yum.repos.d/CentOS-SCLo-scl-rh.repo
sed -i "s@mirrorlist=@#mirrorlist=@g" /etc/yum.repos.d/CentOS-SCLo-scl-rh.repo
sed -i "s@# baseurl=http://mirror.centos.org@baseurl=https://mirrors.volces.com/@g" /etc/yum.repos.d/CentOS-SCLo-scl.repo
sed -i "s@mirrorlist=@#mirrorlist=@g" /etc/yum.repos.d/CentOS-SCLo-scl.repo
      1. 执行如下命令,刷新Yum缓存。

yum repolist && yum clean all && yum makecache
      1. 执行如下命令,安装高版本GCC。

yum install -y devtoolset-10-gcc devtoolset-10-gcc-c++ devtoolset-10-binutils
说明
本文以安装GCC 10版为例,请按需调整。
      1. 执行如下命令,使新版本GCC生效。

      • 临时生效(重启或退出bash后失效)

scl enable devtoolset-10 bash
      • 永久生效

echo "source /opt/rh/devtoolset-10/enable" >>/etc/profile
source /etc/profile
      1. 执行如下命令,验证新安装的GCC是否生效。

gcc --version
回显示例:

步骤二:编译内核

  1. 在下载的内核源码包所在目录下,执行如下命令进行解压。

tar xvf linux-5.4.278.tar.gz
说明
请将linux-5.4.278.tar.gz替换为实际源码包。
  1. 执行如下命令,进入解压后的源码目录。

cd linux-5.4.278
说明
请将linux-5.4.278替换为实际源码包。
  1. 执行如下命令,复制当前内核使用的配置文件。

cp -p /boot/config-$(uname -r) .config
  1. 执行如下命令,修改新内核的配置文件。

sed -i "s@CONFIG_SYSTEM_TRUSTED_KEYS@#CONFIG_SYSTEM_TRUSTED_KEYS@g" /root/linux-5.4.278/.config ;sed -i "s@CONFIG_DEBUG_INFO_BTF@#CONFIG_DEBUG_INFO_BTF@g" /root/linux-5.4.278/.config
说明
请将/root/linux-5.4.278/.config替换为您在第8步中复制获得的配置文件所在路径。
  1. 编辑内核参数。

    1. 执行如下命令,进入文本界面。

make menuconfig

    1. 按需修改内核参数配置,本文仅修改内核名称。

      1. 使用方向键选中General setup,按回车键进入通用设置页面。

      1. 使用方向键选中Local version - append to kernel release,按回车键进入内核版本自定义设置。

      1. 输入跟随在内核版本后的本地信息,本文以-1.el7.x86例,最终内核信息将展示为5.4.278-1.el7.x86。

      1. 按tab键选中< Ok >,按回车键保存修改。

    1. 按tab键选中< Exit >,按回车键回到主页面。

    1. 按tab键选中< Save >,按回车键保存修改。

说明
本文保持默认设置,请按需调整。

    1. 按需修改内核配置文件名称,按tab键选中< Ok >,按回车键保存修改。

说明
本文保持默认设置,请按需调整。

    1. 按回车键退出编辑。

    1. 按Tab键选中< Exit >,按回车键退出编辑。

  1. 执行如下命令,编译内核。

make -j $(nproc)
编译成功回显示例:

  1. 执行如下命令,将编译后的内核模块复制至系统目录。

make modules_install
  1. 执行如下命令,安装内核镜像及boot初始化文件系统镜像文件。

make install

步骤三:修改Grub配置

  1. 更新引导配置。

    • BIOS启动模式:

grub2-mkconfig -o /boot/grub2/grub.cfg
    • UEFI启动模式:

grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg
  1. 执行如下命令,查看已安装的内核。

    • 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
回显示例:

  1. 执行如下命令,设置默认使用的内核。

sudo grub2-set-default 0
请将0替换为您在第2步中查询到的已安装内核序号。

  1. 执行如下命令,重启实例。

sudo reboot
  1. 执行如下命令,查看当前内核版本,确认内核是否升级成功。

uname -r
回显示例:

  1. 安装新内核相关软件包。

    1. 执行如下命令,查看已安装的内核软件包。

rpm -qa | grep kernel
回显示例:

    1. 执行如下命令,删除旧内核软件包。

yum remove kernel-tools-3.10.0 kernel-3.10.0 kernel-tools-libs-3.10.0 kernel-headers-3.10.0 kernel-devel-3.10.0 -y
说明
本文以删除3.10.0版本内核及其相关软件包为例,请将其替换为实际软件包。
    1. 执行如下命令,安装新内核相关的内核软件包。

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. 下载目标软件包,例如通过清华大学镜像站下载。

  1. 上传软件包至目标实例。了解更多。

  1. 执行rpm -ivh <待安装的RPM包>命令,安装目标软件包。

    1. 执行如下命令,确认您需要的新内核及其内核软件包均已安装。

rpm -qa | grep kernel



请关注微信公众号
微信二维码
不容错过
Powered By TOPYUN 云产品资讯