一、功能概述
注意:说明:
注意:TencentOS Server 内核(TencentOS Kernel,简称 TK)通过 RPM 包分发,你可以根据需要升级到更新版本以获取新特性和修复,或降级到旧版本以规避新版本引入的兼容性问题。但内核是系统的核心组件,操作不当可能导致系统无法启动,建议你遵循"先备份、再测试、保留旧内核可回退"的原则。
二、版本号格式解读
TencentOS Server 的内核版本号格式为 <基础版本>-<补丁号>.tl<发行版标识>.<架构>,例如 5.4.241-24.0017.14.tl3.x86_64
| 字段 | 含义 | 示例 |
| 基础版本 | 大版本号 | 5.4.241 |
| 补丁号 | 小版本迭代 | 24.0017.14 |
| 发行版标识 | tl3/tl4 | tl3(TencentOS Server 3)/tl4(TencentOS Server 4) |
| 架构 | CPU 架构标识 | x86_64、aarch64 |
三、前提条件
在开始内核版本管理操作之前,请确认满足以下条件:
·root/sudo 权限:这篇所有安装、升级、降级操作需以 root 用户执行,或通过 sudo 提权。
·系统版本确认:通过 cat /etc/rpm/macros.dist 确认发行版标识(tl3 或 tl4),确保下载的内核包后缀与系统匹配,tl3 与 tl4 包不互通。
·grub.cfg 备份:修改默认启动内核前务必备份 GRUB 配置,以便回退。
·/boot 分区空间充足:至少 300MB 可用空间,空间不足会导致新内核安装失败(可用 df -h /boot 检查)。
·网络/RPM 包准备:在线升级需放行网络;离线安装需提前下载对应版本的内核 RPM 包并上传至 OS 内。
·在线升级网络配置:云上服务器默认可通过内网访问 TencentOS 镜像源,若需公网升级请确认安全组已放行出站访问。可使用 dnf repolist 确认源可用性。
·离线安装文件上传:在本地下载内核 RPM 包后,可通过以下方式上传至目标服务器:通过 SCP/SFTP 工具上传(如 scp kernel-*.rpm root@<目标 IP>:/root/),或通过云服务器控制台 VNC 登录后传输文件。
·测试环境建议:生产环境升级内核前,强烈建议先在测试环境验证新内核的兼容性和业务可用性。
# 确认当前用户权限whoami # 预期输出:root# 确认系统发行版标识(tl3 或 tl4)cat /etc/rpm/macros.dist 2>/dev/null || rpm –eval '%{dist}'# 预期输出:.tl3 或 .tl4# 确认 /boot 分区空间(至少 300MB)df -h /boot# 预期输出:Avail 列不低于 300M# 备份 GRUB 配置(修改默认启动内核前执行)cp /boot/grub2/grub.cfg /boot/grub2/grub.cfg.bak.$(date +%Y%m%d)
注意:内核是 TencentOS Server 的核心部分,进行相关操作前需要注意以下事宜
四、内核版本对应关系
| 系统版本 | 内核系列 | 基础内核版本 |
| TencentOS Server 3 | Linux 5.4 LTS | 5.4.x |
| TencentOS Server 4 | Linux 6.6 LTS | 6.6.x |
六、内核包结构说明
| 包名 | 说明 | 适用版本 |
| kernel-<版本> | 主包 | 所有版本 |
| kernel-<版本>-core | 核心模块包 | 所有版本 |
| kernel-<版本>-modules | 驱动模块包 | 所有版本 |
七、内核包安装命令
| 操作 | 命令 | 说明 |
| 安装(保留旧内核) | rpm -ivh | 推荐方式,可在 GRUB 菜单中回退到旧内核 |
| 升级(替换旧内核) | rpm -Uvh | 会删除旧内核,不推荐用于生产 |
| 强制安装(降级) | rpm -ivh –force –nodeps | 用于回退到更低版本,可能导致依赖问题 |
九、查看当前内核版本
# 查看运行中的内核版本uname -r# 预期输出示例:5.4.241-24.0017.14.tl3.x86_64# 查看所有已安装内核rpm -qa | grep kernel | sort# 预期输出:列出所有已安装的 kernel RPM 包# 查看发行版信息(判断 .tl3 还是 .tl4)cat /etc/rpm/macros.dist 2>/dev/null || rpm –eval '%{dist}'# 预期输出:%dist .tl3 或 %dist .tl4(tl4 可用 rpm –eval 替代)
十、通过 dnf/yum 在线升级(推荐)
# 查看可用内核版本dnf list kernel* –showduplicates | head -20# 预期输出:列出所有可用的内核版本包# 升级到最新内核dnf update kernel -y# 预期输出:显示安装/升级过程,最终提示 Complete!# 或安装特定版本(将 <版本号> 替换为实际版本)dnf install kernel-<版本号> -y# 升级完成后重启(重启将导致业务中断,请确认已安排维护窗口后再执行)reboot
十一、通过 RPM 包离线安装
适用于无法连接外网或需要安装指定版本的场景。
1. 确认目标系统版本
# 查看发行版标识(tl3 或 tl4)cat /etc/rpm/macros.dist 2>/dev/null | grep dist || rpm –eval '%{dist}'# 预期输出:%dist .tl3 或 %dist .tl4(tl4 可用 rpm –eval 替代)
确保下载与目标系统 .tl3 或 .tl4 后缀匹配的 RPM 包。
2. 下载内核 RPM 包(建议你联系对应商务人员获取)
多包结构说明:TencentOS Server 的内核均由三个 RPM 包组成:kernel-*(主包)、kernel-*-core(核心模块包)、kernel-*-modules(驱动模块包),安装时必须同时安装。使用 dnf 安装时会自动处理依赖,无需手动指定三个包。
3. 安装内核
三个包必须同时安装(缺一会导致驱动模块缺失),-ivh 保留旧内核、-Uvh 替换旧内核:
# 新增安装(保留旧内核,推荐——可在 GRUB 菜单回退)rpm -ivh kernel-5.4.241-24.0017.14.tl3.x86_64.rpm \\ kernel-core-5.4.241-24.0017.14.tl3.x86_64.rpm \\ kernel-modules-5.4.241-24.0017.14.tl3.x86_64.rpm# 预期输出:三个包依次安装完成,最终提示 ##### [100%]
4. 重启并验证
# 重启系统(重启将导致业务中断,请确认已安排维护窗口后再执行)reboot# 重启后验证内核版本uname -r# 预期输出:显示新安装的内核版本号,例如 5.4.241-24.0017.14.tl3.x86_64
十二、切换默认启动内核
当系统安装了多个内核时,可通过 grubby 工具设置 GRUB 默认启动的内核版本。
1. 查看当前默认启动内核
# 查看当前 GRUB 默认启动的内核grubby –default-kernel# 预期输出:/boot/vmlinuz-5.4.241-24.0017.14.tl3.x86_64
2. 查看所有已安装内核
# 列出所有已安装的内核镜像ls /boot/vmlinuz-*# 预期输出:# /boot/vmlinuz-5.4.119-19.0009.13.tl3.x86_64# /boot/vmlinuz-5.4.241-24.0017.14.tl3.x86_64# 或通过 rpm 查看rpm -qa | grep kernel | sort
3. 设置默认启动内核
# 设置指定内核为默认启动(将 <kernel-path> 替换为实际内核路径)grubby –set-default /boot/vmlinuz-<kernel-version># 示例:grubby –set-default /boot/vmlinuz-5.4.241-24.0017.14.tl3.x86_64# 预期输出:The default is set to a nonzero entry. Success!
4. 重启并验证
# 重启系统(重启将导致业务中断,请确认已安排维护窗口后再执行)reboot# 重启后确认当前运行的内核为设定的默认内核uname -r# 预期输出:5.4.241-24.0017.14.tl3.x86_64(与设置的默认内核一致)# 再次确认默认启动内核配置grubby –default-kernel# 预期输出:/boot/vmlinuz-5.4.241-24.0017.14.tl3.x86_64
十三、安装低版本内核(降级)
降级风险警告
强制降级内核可能导致系统依赖问题,请谨慎操作,并确保有备用启动方案(如 GRUB 菜单可回退到旧内核)。生产环境降级前务必先在测试环境验证。
# 尝试常规安装低版本内核会报错:# "package xxx (which is newer than xxx) is already installed"# 需使用 –force –nodeps 强制安装rpm -ivh –force –nodeps kernel-5.4.119-19.0009.13.tl3.x86_64.rpm# 预期输出:显示安装进度,最终提示 ##### [100%]
十四、删除旧内核
# 查看所有已安装内核rpm -qa | grep kernel | sort# 预期输出:列出所有已安装的 kernel RPM 包# 删除指定旧内核(确保不删除当前运行的内核)rpm -e kernel-5.4.119-19.0009.13.tl3.x86_64# 预期输出:提示卸载完成# 查看 /boot 使用情况df -h /boot# 预期输出:可用空间有所增加
十五、验证
# 1. 确认新内核正在运行uname -r# 预期输出:5.4.241-24.0017.14.tl3.x86_64(与目标安装版本一致)# 2. 确认系统启动正常systemctl –failed# 预期输出:0 loaded units listed(无失败服务)# 3. 确认内核引导顺序grubby –default-kernel# 预期输出:/boot/vmlinuz-5.4.241-24.0017.14.tl3.x86_64
十六、预期结果汇总
| 操作步骤 | 预期输出 | 验证方法 |
| 在线升级内核 | dnf update 提示 Complete! | rpm -q kernel-$(uname -r) |
| 离线安装内核 | rpm -ivh 提示 100% | ls /boot/vmlinuz-* 列出新内核 |
| 设置默认启动内核 | grubby 提示 Success! | grubby –default-kernel 显示目标内核 |
| 降级安装 | rpm -ivh –force 提示 100% | uname -r 显示降级后版本 |
| 删除旧内核 | rpm -e 卸载完成 | rpm -qa | grep kernel 不再列出 |
十八、Q1:安装新内核并重启后,系统仍运行旧内核
原因:GRUB 默认启动内核未指向新安装的内核。
解决方案:将 GRUB 默认启动内核指向新安装的内核后重启。
# 1. 确认新内核已安装rpm -qa | grep kernel | sort# 2. 查看当前默认启动内核grubby –default-kernel# 3. 设置新内核为默认启动grubby –set-default /boot/vmlinuz-<kernel-version># 示例:grubby –set-default /boot/vmlinuz-5.4.241-24.0017.14.tl3.x86_64# 4. 重启并验证(重启将导致业务中断,请在维护窗口内执行)rebootuname -r
十九、Q2:安装内核时报错 "package xxx is already installed"
原因:系统已安装更高版本的内核,rpm -ivh 不允许安装更低版本。需要你详细评估风险后,使用强制命令安装。
解决方案:评估风险后使用强制安装(降级)或 -U 参数升级替换。
# 如需安装更低版本(降级),使用 –force –nodeps 强制安装rpm -ivh –force –nodeps kernel-<版本号>.tl3.x86_64.rpm# 如需升级替换为更高版本,使用 -U 参数rpm -Uvh kernel-<版本号>.tl3.x86_64.rpm
注意:警告:–force –nodeps 强制安装可能导致依赖冲突或系统不稳定,请确保有备用启动方案(如 GRUB 菜单可回退)
20、Q3:新版内核安装后缺少驱动模块,系统功能异常
原因:TencentOS Server 采用多包结构,仅安装了主包未安装 kernel-core 和 kernel-modules,会导致异常报错,例如:网卡无法初始化(ip addr 无网络接口)、存储驱动加载失败(无法识别磁盘设备)、lsmod 显示模块列表不完整、dmesg 中出现驱动加载错误信息。
解决方案:补装缺失的 kernel-core 和 kernel-modules 包。
# 安装全部三个包(将 <版本号> 替换为实际版本)rpm -ivh kernel-<版本号>.tl3.x86_64.rpm \\ kernel-core-<版本号>.tl3.x86_64.rpm \\ kernel-modules-<版本号>.tl3.x86_64.rpm# 或通过 dnf 自动处理依赖dnf install kernel-<版本号> -y
21、Q4:安装内核报错 "/boot 空间不足"
原因:/boot 分区可用空间不足 300MB,无法容纳新内核镜像。
解决方案:清理旧内核释放空间,必要时扩容 /boot 所在分区。
# 1. 查看 /boot 可用空间df -h /boot# 2. 清理旧内核(保留最近 2 个)package-cleanup –oldkernels –count=2# 3. 或手动删除不使用的旧内核(先确认当前运行内核)uname -r # 记录当前内核,切勿删除rpm -e kernel-<旧版本号>.tl3.x86_64# 4. 若清理后空间仍不足,可扩容 /boot 所在分区(谨慎操作,操作前务必备份)# 云服务器 /boot 通常位于根分区,可先在控制台扩容系统盘,再扩展分区与文件系统:growpart /dev/vda 1 # 扩展分区(假设根分区为 /dev/vda1)xfs_growfs / # 扩展文件系统(xfs);ext4 使用 resize2fs /dev/vda1# 5. 重新安装目标内核rpm -ivh kernel-<版本号>.tl3.x86_64.rpm
22、Q5:升级后系统无法正常启动
原因:新内核与硬件或驱动不兼容,或 GRUB 配置异常。
解决方案:通过 GRUB 菜单选择旧内核启动,定位失败原因后切回。
1. 在系统启动时按 Esc 或 Shift 进入 GRUB 引导菜单
2. 选择旧版内核启动系统
3. 登录后查看上次启动失败日志:
# 查看上次(失败的)启动日志journalctl -b -1 | tail -50# 预期输出:显示 panic 或驱动加载失败信息# 确认系统启动状态systemctl –failed
4. 排查问题后,可将默认启动内核切回旧版:
将 <旧版本号> 替换为实际内核版本(rpm -qa | grep kernel 可查):
grubby –set-default /boot/vmlinuz-<旧版本号>