yum更新Centos7的内核到最新
yum更新Centos7的内核到最新
yum更新默认内核
该文档适用于Centos7
和rhel8
# 从默认源中安装最新版内核
yum -y install kernel kernel-core kernel-tools kernel-modules kernel-headers kernel-devel dkms
Linux常见内核
-
kernel
:此软件包包含用于单核,多核和多处理器系统的内核 -
kernel-core
: 包含内核的二进制镜像、所有与initramfs
(初始RAM 文件系统
) 相关的对象来引导系统,以及确保核心功能的内核模块数量最少。仅在虚拟和云环境中使用这个子软件包来为Red Hat Enterprise Linux 8 内核
提供一个快速引导时间和小磁盘空间。 -
kernel-modules
: - 包含没有包括在kernel-core
中的其他内核模块。
上述 kernel 子软件包
中的一部分旨在帮助系统管理员减少需要维护的范围,特别是在虚拟化和云环境中
-
perf
:此软件包包含perf 工具
,可用于监视Linux内核
的性能。 -
linux-firmware
:它包含各种设备运行所需的固件文件。 -
DKMS
全称是Dynamic Kernel Module Support
(动态内核模块支持),即在内核版本变动之后可以自动重新生成新驱动模块。
可选内核软件包:
-
kernel-modules-extra
: - 包含用于默认禁用加载的个别硬件和模块的内核模块。 -
kernel-debug
: - 包含内核诊断启用大量调试选项的内核,但牺牲了性能降低。 -
kernel-tools
:包含用于操纵Linux内核和支持文档的工具。 -
kernel-devel
: - 包含内核标头和 makefile,以根据 kernel 软件包构建模块。 -
kernel-abi-stablelists
: - 包含与RHEL 内核
ABI
相关的信息,包括外部 Linux 内核模块
和yum 插件
辅助功能所需的内核符号列表。 -
kernel-headers
: - 包含C 标头文件
,用于指定Linux 内核
与用户空间库和程序之间的接口。头文件定义了构建大多数标准程序所需的常量结构和常量。
# 升级可选内核软件包
yum install -y kernel-modules-extra kernel-tools kernel-devel kernel-abi-stablelists kernel-headers
为什么要更新Centos7的内核到4.4以上
在
k8s
所有节点上执行k8s
在内核3.10
下有bug
,一定要更新到4.4
以上
参考: https://blog.csdn.net/weixin_54626591/article/details/138131196
前置条件
安装epel源
参考: https://blog.csdn.net/weixin_54626591/article/details/138063915
安装ELRepo源
参考: https://blog.csdn.net/weixin_54626591/article/details/138282401
安装4.4以上新内核
参考: https://shawn0915.github.io/redhat/2018/02/04/how-to-upgrade-centos-kernel.html
kernel-lt
中的lt
是英文【long term support
】的缩写,elrepo-kernel
中罗列出来的长期支持版本。
kernel-ml
中的ml
是英文【mainline stable
】的缩写,elrepo-kernel
中罗列出来的是最新的稳定主线版本。
Centos7安装4.4以上新内核
参考: https://blog.csdn.net/weixin_54626591/article/details/138280488
Centos7安装kernel-lt内核
kernel-lt
中的lt
是英文【long term support
】的缩写,elrepo-kernel
中罗列出来的长期支持版本。
# 安装kernel-lt内核---Centos7
yum --enablerepo=elrepo-kernel install kernel-lt -y
# 重启
reboot
## 卸载旧版内核组件
yum remove kernel kernel-core kernel-modules kernel-devel kernel-tools kernel-tools-libs kernel-headers -y
# 安装kernel-lt扩展内核---Centos7
yum --enablerepo=elrepo-kernel install kernel-lt* -y
Centos7安装kernel-ml内核
kernel-ml
中的ml
是英文【mainline stable
】的缩写,elrepo-kernel
中罗列出来的是最新的稳定主线版本。
# 安装kernel-ml内核---Centos7
yum -y --enablerepo=elrepo-kernel install kernel-ml
# 重启
reboot
## 卸载旧版内核组件
yum remove kernel kernel-core kernel-modules kernel-devel kernel-tools kernel-tools-libs kernel-headers -y
# 安装kernel-ml扩展内核---Centos7
yum --enablerepo=elrepo-kernel install kernel-ml* -y
Centos7设置默认启动的内核为最新内核
# 查看内核启动编号
awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg
# 设置默认启动的内核为最新内核
grub2-set-default 0
# 重启
reboot
Centos7设置默认启动的内核为最新内核–方法2
参考: https://blog.csdn.net/weixin_54626591/article/details/138155065
# 查看默认启动的内核
[root@c78 ~]# grub2-editenv list
saved_entry=CentOS Linux (3.10.0-1127.el7.x86_64) 7 (Core)
# 查看默认启动的内核
[root@c78 ~]# grubby --default-kernel
/boot/vmlinuz-3.10.0-1127.el7.x86_64
# 查看下次启动生效内核版本
sudo cat /boot/grub2/grubenv | grep saved_entry
# 查看内核启动顺序
awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg
## 或
awk -F\' '$1=="menuentry " {print $2}' /etc/grub2.cfg
## 打印的内核编号
0 : CentOS Linux (5.4.163-1.el7.elrepo.x86_64) 7 (Core)
1 : CentOS Linux (3.10.0-1160.49.1.el7.x86_64) 7 (Core)
2 : CentOS Linux (3.10.0-1160.el7.x86_64) 7 (Core)
3 : CentOS Linux (0-rescue-256ac73c25b94a4ba8336a4455214622) 7 (Core)
# 查看系统中有哪些内核
rpm -qa | grep -i kernel
# 设置默认启动的内核为最新内核
grub2-set-default 0
# 刷新grub2
sudo grub2-mkconfig -o /etc/grub2.cfg
# 重启系统
reboot
# 重启后查看是否是新内核
uname -a
RHEL8安装4.4以上新内核
RHEL8安装kernel-lt内核
kernel-lt
中的lt
是英文【long term support
】的缩写,elrepo-kernel
中罗列出来的长期支持版本。
# 安装kernel-lt长期支持内核---RHEL8
## --allowerasing参数自动卸载冲突包
yum -y --enablerepo=elrepo-kernel install kernel-lt kernel-lt-* --allowerasing
RHEL8安装kernel-ml内核
kernel-ml
中的ml
是英文【mainline stable
】的缩写,elrepo-kernel
中罗列出来的是最新的稳定主线版本。
# 安装kernel-ml最新稳定版内核---RHEL8
## --allowerasing参数自动卸载冲突包
yum -y --enablerepo=elrepo-kernel install kernel-ml kernel-ml-* --allowerasing
rhel8设置默认启动的内核为最新内核
参考: https://blog.csdn.net/weixin_54626591/article/details/138155065
也适用于部分Centos7
## 安装完成后检查 /boot/grub2/grub.cfg 中对应内核 menuetry 中是否包含 initrd16 配置,如果没有,再安装一次
cat /boot/grub2/grub.cfg |grep menuetry
# 1、执行下述命令查看默认内核
grubby --default-kernel
# 执行下述命令查看所有内核
grubby --info=ALL
# 查看/boot下有哪些版本的vmlinuz
ls /boot|grep vmlinuz
# 2、设置需要设置的启动的默认的内核
grubby --set-default /boot/vmlinuz-4.18.0-80.11.2.el8_0.x86_64
后置条件
当内核升级完成并重启后,建议卸载旧版内核
## 卸载旧版内核组件
yum remove kernel kernel-core kernel-modules kernel-devel kernel-tools kernel-tools-libs kernel-header -y
lsb—Linux标准基础(Linux Standards Base,简称LSB)
参考: https://en.wikipedia.org/wiki/Linux_Standard_Base
Linux
标准基础(Linux Standards Base
,简称LSB
)是一套核心标准,是Linux标准化领域中事实上的标准,制定了应用程序与运行环境之间的二进制接口。 它保证了LINUX发行
版同LINUX应用程序之间的良好结合。
# 安装lsb_release命令
yum install -y redhat-lsb
脚本示例
参考: https://blog.csdn.net/weixin_54626591/article/details/138281807
# 安装lsb_release命令
yum install -y redhat-lsb
# 导入gpg key
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
# Centos7安装epelrepo源
rpm -Uvh https://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm
# Centos8安装epelrepo源
# rpm -Uvh https://www.elrepo.org/elrepo-release-8.el8.elrepo.noarch.rpm
# 替换为清华源
cd /etc/yum.repos.d
cp elrepo.repo elrepo.repo.bak
# 将elrepo.org/linux替换为mirrors.tuna.tsinghua.edu.cn/elrepo
sed -i 's/elrepo.org\/linux/mirrors.tuna.tsinghua.edu.cn\/elrepo/g' elrepo.repo
# 刷新缓存
yum repolist && yum clean all && yum makecache
# 安装kernel-lt长期支持版本内核
yum -y --enablerepo=elrepo-kernel install kernel-lt kernel-lt-*
# 查看内核启动编号
awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg
# 设置默认启动的内核为最新内核
grub2-set-default 0
内核更新失败
重启系统,从Grub
中选择从旧版内核启动