yum更新Centos7的内核到最新

yum更新默认内核

该文档适用于Centos7rhel8

# 从默认源中安装最新版内核
yum -y install kernel kernel-core kernel-tools kernel-modules kernel-headers kernel-devel dkms

Linux常见内核

Linux 内核 RPM 软件包概述

  • 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://cloud.tencent.com/developer/article/1737907

在这里插入图片描述


前置条件

  • 安装epel源

参考: https://blog.csdn.net/omaidb/article/details/126462414

  • 安装ELRepo源

参考: https://blog.csdn.net/omaidb/article/details/126462414


安装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://notion.ccm.ink/centos-core


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.51cto.com/u_14757092/2631074
https://www.sysgeek.cn/check-installed-linux-kernel/

# 查看默认启动的内核
[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.51cto.com/u_14757092/2631074

centos8使用grubby修改内核启动参数
也适用于部分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://zhjwpku.com/2016/11/30/os-identification.html

# 安装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中选择从旧版内核启动

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

识途老码

赞赏是第一生产力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值