centos7离线升级内核

1.升级说明

1.1 系统默认信息

  • 系统版本:CentOS7.8
  • 默认内核版本:3.10.0-1127.el7.x86_64

1.2 升级内核目的

  • 部署k8s需要

1.3 k8s官方要求

  • cpu:2核以上
  • mem:2G以上
  • 内核:4.x以上

1.4 升级内核版本(永久支持)

  • CentOS7.8内核升级为:5.4.278

 

2.下载内核包地址(centos7内核升级)

https://mirrors.coreix.net/elrepo-archive-archive/kernel/el7/x86_64/RPMS/
  • 内核包详细说明
kernel-lt-5.4.278-1.el7.elrepo.x86_64.rpm
描述:这是核心内核包,包含了所有的内核功能和驱动程序。
作用:升级内核本身,提供系统的基础功能。

kernel-lt-devel-5.4.278-1.el7.elrepo.x86_64.rpm
描述:内核开发包,包含构建内核模块所需的头文件和开发文件。
作用:用于编译和安装第三方内核模块(例如 NVIDIA 驱动、VirtualBox 等)。

kernel-lt-headers-5.4.278-1.el7.elrepo.x86_64.rpm
描述:内核头文件包,提供与内核交互的 API 和结构体。
作用:主要用于开发需要与内核交互的用户空间程序。

kernel-lt-doc-5.4.278-1.el7.elrepo.noarch.rpm (可选)
描述:内核文档包,提供内核开发和配置的详细文档。
作用:帮助开发者理解内核的工作原理和配置方法。

kernel-lt-tools-5.4.278-1.el7.elrepo.x86_64.rpm
描述:内核工具包,提供内核相关的工具,如 cpupower 等。
作用:用于内核的调试、监控和管理。

kernel-lt-tools-libs-5.4.278-1.el7.elrepo.x86_64.rpm
描述:为内核工具包提供库文件。
作用:支持内核工具的运行。

kernel-lt-tools-libs-devel-5.4.278-1.el7.elrepo.x86_64.rpm
描述:内核工具库开发包。
作用:用于开发与内核工具交互的程序或模块。

 

3.升级内核

3.1 将内核文件上传到服务器,我这里上传到/data/kernel/目录

[root@node2 kernel]# ll -htr
total 74M
-rw-r--r-- 1 root root  51M Jan 15 10:08 kernel-lt-5.4.278-1.el7.elrepo.x86_64.rpm
-rw-r--r-- 1 root root 8.3M Jan 15 10:09 kernel-lt-doc-5.4.278-1.el7.elrepo.noarch.rpm
-rw-r--r-- 1 root root  13M Jan 15 10:09 kernel-lt-devel-5.4.278-1.el7.elrepo.x86_64.rpm
-rw-r--r-- 1 root root 1.4M Jan 15 10:09 kernel-lt-headers-5.4.278-1.el7.elrepo.x86_64.rpm
-rw-r--r-- 1 root root 231K Jan 15 10:09 kernel-lt-tools-5.4.278-1.el7.elrepo.x86_64.rpm
-rw-r--r-- 1 root root 120K Jan 15 10:10 kernel-lt-tools-libs-5.4.278-1.el7.elrepo.x86_64.rpm
-rw-r--r-- 1 root root  98K Jan 15 10:10 kernel-lt-tools-libs-devel-5.4.278-1.el7.elrepo.x86_64.rpm

3.2 安装内核包kernel-lt...

yum localinstall -y kernel-lt-*.rpm

3.3 遇到问题报错

查看代码
 (3/3): epel/x86_64/primary_db                                                                                                                                | 8.7 MB  00:00:05     
No package matched to upgrade: kernel-lt-headers
--> Processing Conflict: kernel-lt-tools-libs-5.4.278-1.el7.elrepo.x86_64 conflicts kernel-tools-libs < 5.4.278-1.el7.elrepo
--> Restarting Dependency Resolution with new changes.
--> Running transaction check
---> Package kernel-tools-libs.x86_64 0:3.10.0-1127.el7 will be updated
--> Processing Dependency: kernel-tools-libs = 3.10.0-1127.el7 for package: kernel-tools-3.10.0-1127.el7.x86_64
---> Package kernel-tools-libs.x86_64 0:3.10.0-1160.119.1.el7 will be an update
--> Running transaction check
---> Package kernel-tools.x86_64 0:3.10.0-1127.el7 will be updated
---> Package kernel-tools.x86_64 0:3.10.0-1160.119.1.el7 will be an update
--> Processing Conflict: kernel-lt-headers-5.4.278-1.el7.elrepo.x86_64 conflicts kernel-headers < 5.4.278-1.el7.elrepo
No package matched to upgrade: kernel-lt-headers
--> Processing Conflict: kernel-lt-tools-libs-5.4.278-1.el7.elrepo.x86_64 conflicts kernel-tools-libs < 5.4.278-1.el7.elrepo
No package matched to upgrade: kernel-lt-tools-libs
--> Processing Conflict: kernel-lt-tools-5.4.278-1.el7.elrepo.x86_64 conflicts kernel-tools < 5.4.278-1.el7.elrepo
No package matched to upgrade: kernel-lt-tools
--> Finished Dependency Resolution
Error: kernel-lt-tools conflicts with kernel-tools-3.10.0-1160.119.1.el7.x86_64
Error: kernel-lt-headers conflicts with kernel-headers-3.10.0-1160.119.1.el7.x86_64
Error: kernel-lt-tools-libs conflicts with kernel-tools-libs-3.10.0-1160.119.1.el7.x86_64
 You could try using --skip-broken to work around the problem
 You could try running: rpm -Va --nofiles --nodigest

3.4 报错原因

由于 kernel-lt 包与系统中现有的 kernel-tools、kernel-headers 和 kernel-tools-libs 包版本冲突。kernel-lt 包是与系统的默认内核版本不兼容的,特别是在 CentOS 7 上,它们共享一些关键的文件和资源。

3.5 解决方法

  • 卸载现有的 kernel-tools 和 kernel-headers 包,然后再安装 kernel-lt 系列的包。
yum remove kernel-tools kernel-headers kernel-tools-libs
  • 安装 kernel-lt 包
yum localinstall -y kernel-lt-*.rpm
  • 解决依赖冲突时使用 --skip-broken(可选,不建议使用,会导致缺少库文件)
yum localinstall -y kernel-lt-*.rpm --skip-broken

 

4.重建GRUB配置并重启

  • 查看最新内核的顺序,最上边第一条序号就是0,grub2-set-default 就设置为 0
[root@node2 kernel]# awk -F\' '$1=="menuentry " {print $2}' /etc/grub2.cfg
CentOS Linux (5.4.278-1.el7.elrepo.x86_64) 7 (Core)
CentOS Linux (3.10.0-1127.el7.x86_64) 7 (Core)
CentOS Linux (0-rescue-2f64a5d6a38e44d2b47db7673fbeb5cb) 7 (Core)
  • BIOS启动和UEFI启动的GRUB是不一样的(我这里是BIOS)
#BIOS
sudo grub2-set-default 0
sudo grub2-mkconfig -o /boot/grub2/grub.cfg
#重启
reboot
#UEFI
sudo grub2-set-default 0
sudo grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg
#重启
reboot
  • 通过判断 /sys/firmware/efi 目录是否存在可以区分,存在是UEFI,否则是BIOS
#!/bin/bash

# 判断系统是否为 UEFI 启动
if [ -d /sys/firmware/efi ]; then
    echo "系统使用 UEFI 启动"

    # 对于 UEFI 系统,更新 GRUB 配置文件
    sudo grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg

else
    echo "系统使用 BIOS 启动"

    # 对于 BIOS 系统,更新 GRUB 配置文件
    sudo grub2-mkconfig -o /boot/grub2/grub.cfg
fi

# 设置默认启动项 (假设要设置为第一个内核)
sudo grub2-set-default 0

# 显示更新后的 GRUB 配置
echo "GRUB 配置已更新,当前默认启动项已设置。"

 

5.系统重启后验证内核版本 

[root@node2 ~]# uname -r
5.4.278-1.el7.elrepo.x86_64

 

6.参考文档

https://blog.csdn.net/thankyou1988/article/details/143081387

 

posted @   Leonardo-li  阅读(166)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程使用 AI 从 0 到 1 写了个小工具
· 快收藏!一个技巧从此不再搞混缓存穿透和缓存击穿
· AI 插件第二弹,更强更好用
· Blazor Hybrid适配到HarmonyOS系统
· 支付宝 IoT 设备入门宝典(下)设备经营篇
点击右上角即可分享
微信分享提示