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
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程使用 AI 从 0 到 1 写了个小工具
· 快收藏!一个技巧从此不再搞混缓存穿透和缓存击穿
· AI 插件第二弹,更强更好用
· Blazor Hybrid适配到HarmonyOS系统
· 支付宝 IoT 设备入门宝典(下)设备经营篇