关于内核种类:
kernel-ml
kernel-ml 中的ml是英文【 mainline stable 】的缩写,elrepo-kernel中罗列出来的是最新的稳定主线版本。
kernel-lt
kernel-lt 中的lt是英文【 long term support 】的缩写,elrepo-kernel中罗列出来的长期支持版本。
- ML 与 LT 两种内核类型版本可以共存
- 但每种类型内核只能存在一个版本
- 例如:
- 当系统已存在 LT 内核的 5.4.103 版本时,继续安装 LT 内核的 4.4.215 版本则会提示:
package kernel-lt-5.4.103-1.el7.elrepo.x86_64 (which is newer than kernel-lt-4.4.215-1.el7.elrepo.x86_64) is already installed
- 当系统已存在 LT 内核的 5.4.103 版本时,继续安装 LT 内核的 4.4.215 版本则会提示:
- 例如:
01 内核在线安装
# 为 RHEL-7 SL-7 或 CentOS-7 安装 ELRepo [导入仓库源]
# 正常的是这样的
# rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
# rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
# 更换成清华源
yum install https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm -y
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
内核下载
# 查看可用安装包
yum --disablerepo="*" --enablerepo="elrepo-kernel" list available
# 选择 ML 或 LT 版本安装
# 安装 ML 版本
yum --enablerepo=elrepo-kernel install kernel-ml-devel kernel-ml -y
# 安装 LT 版本,K8S全部选这个
yum --enablerepo=elrepo-kernel install kernel-lt-devel kernel-lt -y
更换内核启动顺序 直接换成最新的
# 查看已安装那些内核
rpm -qa | grep kernel
# 查看默认内核
grubby --default-kernel
# 若不是最新的使用命令设置
grubby --set-default $(ls /boot/vmlinuz-* | grep elrepo)
# 重启验证
shutdown -r now
uname -r
更换启动顺序 有选择的换内核
3 # . 修改内核启动顺序
awk -F \' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg
grub2-set-default "CentOS Linux (4.19.12-1.el7.elrepo.x86_64) 7 (Core)"
4 # . 重启Linux主机 进行验证
shutdown -r now
uname -r
02 离线安装指定版本的rpm
查找 kernel rpm 历史版本:http://mirrors.coreix.net/elrepo-archive-archive/kernel/el7/x86_64/RPMS/
下载指定版本的内核
wget http://mirrors.coreix.net/elrepo-archive-archive/kernel/el7/x86_64/RPMS/kernel-lt-5.4.252-1.el7.elrepo.x86_64.rpm
wget http://mirrors.coreix.net/elrepo-archive-archive/kernel/el7/x86_64/RPMS/kernel-lt-devel-5.4.252-1.el7.elrepo.x86_64.rpm
# 或者
wget http://mirrors.coreix.net/elrepo-archive-archive/kernel/el7/x86_64/RPMS/kernel-ml-6.4.9-1.el7.elrepo.x86_64.rpm
wget http://mirrors.coreix.net/elrepo-archive-archive/kernel/el7/x86_64/RPMS/kernel-ml-devel-6.4.9-1.el7.elrepo.x86_64.rpm
安装内核
rpm -ivh kernel-lt-5.4.252-1.el7.elrepo.x86_64.rpm
rpm -ivh kernel-lt-devel-5.4.252-1.el7.elrepo.x86_64.rpm
rpm -ivh kernel-ml-6.4.9-1.el7.elrepo.x86_64.rpm
rpm -ivh kernel-ml-devel-6.4.9-1.el7.elrepo.x86_64.rpm
确认已经安装的版本
rpm -qa | grep kernel
更换启动顺序
awk -F\' '$1=="menuentry " {print $2}' /etc/grub2.cfg
grub2-set-default 0
reboot
03 卸载之前的内核
例如:
当系统已存在 LT 内核的 5.4.103 版本时,继续安装 LT 内核的 4.4.215 版本则会提示: package kernel-lt-5.4.103-1.el7.elrepo.x86_64 (which is newer than kernel-lt-4.4.215-1.el7.elrepo.x86_64) is already installed
更新 现在的情况应该不是这样了 显示的是如下的
软件包 kernel-lt-devel-5.4.254-1.el7.elrepo.x86_64 (比 kernel-lt-devel-5.4.252-1.el7.elrepo.x86_64 还要新) 已经安装
这时就需卸载最新版的内核才能安装比较老的内核版本。
# 查看系统当前内核版本
uname -r
# 5.4.103-1.el7.elrepo.x86_64
# 查看系统中全部内核
rpm -qa | grep kernel
# 删除指定内核
yum remove -y kernel-lt-devel-5.4.103-1.el7.elrepo.x86_64
yum remove -y kernel-lt-5.4.103-1.el7.elrepo.x86_64
yum remove -y kernel-lt-devel-5.4.254-1.el7.elrepo.x86_64
yum remove -y kernel-lt-5.4.254-1.el7.elrepo.x86_64
# 卸载完后不一定需要重启 检查卸载后内核版本
rpm -qa | grep kernel
参考: CentOS 7升级内核的三种方式(yum/rpm/源码) - UpH2O - 博客园 (cnblogs.com)