BCLinux 22.10 系统 KIDLED 模块偶发内核崩溃

本文提供移动云帮助中心的核心功能操作指引及常见问题解决方案

问题背景

BCLinux 22.10系统在ext4缓存释放时将kidled模块保存的数据偶发误读为其他格式的数据会导致机器发生内核崩溃重启。

重启云主机,进入/var/crash目录,该目录下会自动生成内核崩溃文件vmcore-dmesg.txt。

查看文件,崩溃发生函数点RIP:list_lru_add以及相关call trace如下报错截图所示。

影响范围:

内核版本:5.10.0-136.30.0.106.1 - 5.10.0-136.108.0.188.34 (操作系统版本BC-Linux 22.10和BC-Linux 22.10U1)

内核版本:5.10.0-153.24.0.100.1- 5.10.0-153.52.0.130.16 (操作系统版本BC-Linux 22.10U2)

5.10.0-136.108.0.188.35.oe2203sp1版本及以上版本已修复该问题。

目前针对该问题有两种方案:一种是热补丁修复方案(不涉及机器重启),另一种是升级内核版本修复方案(需重启后新内核生效)。

一、热补丁修复方案

1. 环境检查:

热补丁修复方案适用于内核版本:

5.10.0-136.74.0.154.22.oe2203sp1.bclinux.x86_64

5.10.0-136.49.0.127.10.oe2203.bclinux.x86_64

系统内通过uname -r查看当前的内核版本,如果内核版本与适用版本不一致,强行安装,则热补丁不能加载生效,但不会对客户云主机环境造成危害。

2. 上传热补丁安装包并进行安装

将下面热补丁安装包上传至目标服务器:

bclinux-kernel-hotfix-20260122-01-5.10.0-136.74.0.154.22.oe2203sp1.bclinux.x86_64.rpm

上传后进行使用yum命令安装:

yum install bclinux-kernel-hotfix-20260122-01-5.10.0-136.74.0.154.22.oe2203sp1.bclinux.x86_64.rpm

安装成功后如下图所示。

x3. 加载热补丁

如果机器没有kpatch命令,使用yum安装kpatch。

yum install kpatch -y

执行如下命令加载验证。

kpatch load klp_klpKidled     ## 加载热补丁
kpatch list     ## 验证加载情况,如果出现klp_klpKidled [disabled],再次执行上一条命令,结果显示klp_klpKidled [enabled]即为成功

具体加载过程可参考下图。

5.10.0-136.49.0.127.10.oe2203.bclinux.x86_64版本内核需上传bclinux-kernel-hotfix-20260122-01-5.10.0-136.74.0.154.22.oe2203sp1.bclinux.x86_64.rpm热补丁到云主机,使用方式参考上述操作步骤。

注意

如果报错insmod: ERROR: could not insert module xxx.ko: Permission denied,

执行setenforce 0临时关闭selinux,重新执行kpatch load klp_klpKidled,执行成功后再执行setenforce 1恢复selinux。

二、升级内核版本修复方案

系统内执行vim /etc/yum.repos.d/BCLinux.repo找到[update]模块,将oe22.10修改为oe22.10U1保存退出。

执行yum makecache更新缓存,可以通过命令

yum update kernel-5.10.0-136.108.0.188.35.oe2203sp1将内核进行升级到修复版本,或者直接执行yum update kernel 更新到最新内核。

本文档内容整理自移动云官方帮助中心(查看原文),仅供参考。