👉点击这里申请火山引擎VIP帐号,立即体验火山引擎产品>>>
操作场景
提升系统性能
支持新硬件
修复安全漏洞
获取新特性支持
注意事项
更换系统内核可能会出现兼容性、稳定性及安全问题,强烈建议您在操作前进行数据备份。
更换内核操作需使用root权限。
升级内核版本
升级内核小版本
登录目标Linux服务器。
执行如下命令,查看当前内核版本。
uname -r
执行如下命令,升级yum包管理器。
sudo yum update -y
执行如下命令,查看可安装的内核版本。
sudo yum list kernel --showduplicates
执行如下命令,安装指定版本的内核。
sudo yum install kernel-3.10.0-1160.119.1.el7 -y
更新引导配置。
BIOS启动模式:
grub2-mkconfig -o /boot/grub2/grub.cfg
UEFI启动模式:
grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg
执行如下命令,查看已安装的内核。
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
执行如下命令,设置默认使用的内核。
sudo grub2-set-default 0
执行如下命令,重启实例。
sudo reboot
执行如下命令,查看当前内核版本,确认内核是否升级成功。
uname -r
执行如下命令,安装新内核相关的内核软件包。
yum install kernel-devel kernel-headers kernel-modules-extra kernel-tools kernel-tools-libs kernel-tools-libs-devel -y
下载目标软件包,例如通过清华大学镜像站下载。
上传软件包至目标实例。了解更多。
执行rpm -ivh <待安装的RPM包>命令,安装目标软件包。
升级内核大版本
通过ELRepo源升级
步骤一:安装ELRepo源
登录目标Linux服务器。
执行如下命令,查看当前内核版本。
uname -r
执行如下命令,更新软件包。
yum update -y
执行如下命令,导入ELRepo公钥。
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
执行如下命令,安装ELRepo源。
yum install https://www.elrepo.org/elrepo-release-8.el8.elrepo.noarch.rpm -y
执行如下命令,替换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
执行如下命令,更新软件包缓存。
sudo yum makecache
步骤二:安装新内核
在目标实例中执行如下命令,载入ELRepo源数据。
yum --disablerepo="*" --enablerepo="elrepo-kernel" repolist
查看ELRepo源中当前操作系统支持使用的内核包。
yum --disablerepo="*" --enablerepo="elrepo-kernel" list available
kernel-ml:代表主线内核。它包含了最新的功能、改进和实验性的特性,更新频繁。若您追求最新的技术和功能,对系统稳定性有一定的容忍度,并且愿意处理可能出现的问题,可以选用该类内核。
kernel-lt:长期支持(LTS)内核。主要关注稳定性和兼容性,这些内核版本经过了更广泛的测试,并且在较长时间内得到支持。若您需要稳定运行环境、不希望频繁更新内核或者对新功能需求不高,可以选用该类内核。
执行如下命令,安装最新的主线内核。
yum --enablerepo=elrepo-kernel install kernel-ml -y
yum --enablerepo="elrepo-kernel" install kernel-ml-6.10.11-1.el8.elrepo
步骤三:修改Grub配置
执行如下命令,查看已安装的内核信息。
grubby --info=ALL | grep ^kernel
执行如下命令,指定启动实例时使用的默认内核。
grubby --set-default=/boot/vmlinuz-6.10.11-1.el8.elrepo.x86_64
执行如下命令,重启实例。
reboot
执行如下命令,确认实例内核是否更新成功。
uname -r
安装新内核相关软件包。
执行如下命令,查看已安装的内核软件包。
rpm -qa | grep kernel
执行如下命令,删除旧内核软件包。
yum remove kernel-core-4.18.0 kernel-devel-4.18.0 kernel-tools-libs-4.18.0 kernel-headers-4.18.0 -y
执行如下命令,安装当前使用的新内核相关软件包。
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
执行如下命令,确认您需要的新内核及其内核软件包均已安装。
rpm -qa | grep kernel
自编译内核升级
步骤一:下载内核源码
前往Kernel官方站点,进入您期望下载的目标内核版本目录。
获取目标版本内核源码包下载链接。
登录目标Linux服务器。
在待更换内核的实例中,执行如下命令,下载内核源码包。
wget https://mirrors.edge.kernel.org/pub/linux/kernel/v5.x/linux-5.4.278.tar.gz
执行如下命令,下载系统安装相关软件包。
yum install bc gcc make python3 ncurses-devel flex bison openssl-devel elfutils-libelf-devel -y
执行如下命令,查看GCC版本。
gcc --version
若版本不低于7,请继续后续步骤。
若版本低于7,请执行如下命令,升级GCC。
执行如下命令,安装SCL默认源。
yum install centos-release-scl scl-utils-build -y
执行如下命令,替换软件仓库地址替换为国内镜像地址。
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
执行如下命令,刷新Yum缓存。
yum repolist && yum clean all && yum makecache
执行如下命令,安装高版本GCC。
yum install -y devtoolset-10-gcc devtoolset-10-gcc-c++ devtoolset-10-binutils
执行如下命令,使新版本GCC生效。
临时生效(重启或退出bash后失效)
scl enable devtoolset-10 bash
永久生效
echo "source /opt/rh/devtoolset-10/enable" >>/etc/profile source /etc/profile
执行如下命令,验证新安装的GCC是否生效。
gcc --version
步骤二:编译内核
在下载的内核源码包所在目录下,执行如下命令进行解压。
tar xvf linux-5.4.278.tar.gz
执行如下命令,进入解压后的源码目录。
cd linux-5.4.278
执行如下命令,复制当前内核使用的配置文件。
cp -p /boot/config-$(uname -r) .config
执行如下命令,修改新内核的配置文件。
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
编辑内核参数。
执行如下命令,进入文本界面。
make menuconfig
按需修改内核参数配置,本文仅修改内核名称。
使用方向键选中General setup,按回车键进入通用设置页面。
使用方向键选中Local version - append to kernel release,按回车键进入内核版本自定义设置。
输入跟随在内核版本后的本地信息,本文以-1.el7.x86例,最终内核信息将展示为5.4.278-1.el7.x86。
按tab键选中< Ok >,按回车键保存修改。
按tab键选中< Exit >,按回车键回到主页面。
按tab键选中< Save >,按回车键保存修改。
按需修改内核配置文件名称,按tab键选中< Ok >,按回车键保存修改。
按回车键退出编辑。
按Tab键选中< Exit >,按回车键退出编辑。
执行如下命令,编译内核。
make -j $(nproc)
执行如下命令,将编译后的内核模块复制至系统目录。
make modules_install
执行如下命令,安装内核镜像及boot初始化文件系统镜像文件。
make install
步骤三:修改Grub配置
更新引导配置。
BIOS启动模式:
grub2-mkconfig -o /boot/grub2/grub.cfg
UEFI启动模式:
grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg
执行如下命令,查看已安装的内核。
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
执行如下命令,设置默认使用的内核。
sudo grub2-set-default 0
执行如下命令,重启实例。
sudo reboot
执行如下命令,查看当前内核版本,确认内核是否升级成功。
uname -r
安装新内核相关软件包。
执行如下命令,查看已安装的内核软件包。
rpm -qa | grep kernel
执行如下命令,删除旧内核软件包。
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
执行如下命令,安装新内核相关的内核软件包。
yum install kernel-devel kernel-headers kernel-modules-extra kernel-tools kernel-tools-libs kernel-tools-libs-devel -y
下载目标软件包,例如通过清华大学镜像站下载。
上传软件包至目标实例。了解更多。
执行rpm -ivh <待安装的RPM包>命令,安装目标软件包。
执行如下命令,确认您需要的新内核及其内核软件包均已安装。
rpm -qa | grep kernel