浪潮云启操作系统(InLinux)支持内核热补丁

前言

操作系统的内核问题往往会导致系统崩溃,会对客户的业务造成中断性影响,提供稳定高效的操作系统内核是各个操作系统厂商必须解决的问题。然而,当操作系统内核出现问题或发现安全漏洞后,如何快速定位到问题,快速验证问题的解决方案是一个比较难的问题;即使定位到具体问题,如何在用户无感知(内核不重启)的前提下快速修复问题或安全漏洞也是一个技术难题。
浪潮云启操作系统(InLinux)提供了一个热补丁管理工具,可以快速定位问题,并在不重启操作系统的前提下,快速修复内核问题。
以下使用修改内存信息的补丁,讲解如何使用浪潮云启操作系统(InLinux)支持热补丁的构建、安装和升级。

浪潮云启操作系统(InLinux)版本

以下操作都是在InLinux2312-LTS-SP1版本进行
在这里插入图片描述

热补丁管理工具

浪潮云启操作系统(InLinux)支持syscare工具,该工具支持热补丁的构建、安装、查看等管理功能。
使用yum命令安装syscare工具:

yum install -y syscare
yum install -y syscare-build

安装完syscare后,验证syscare可用:
在这里插入图片描述

构建内核补丁还需要安装构建相关的包:

yum install -y kernel-source kernel-debuginfo kernel-devel
yum install -y elfutils-libelf-devel openssl-devel dwarves flex python3-devel rpm-build bison cmake make gcc g++ rust cargo --allowerasing --skip-broken --nobest

修改内存信息

查看内存信息

在操作系统中,使用cat /proc/meminfo命令可以查看内存信息:
在这里插入图片描述
内存显示信息中有VmallocTotal、VmallocUsed、VmallocChunk字段,以下代码修改这三个字段,用于kpatch测试。

代码修改patch

修改VmallocTotal、VmallocUsed、VmallocChunk字段为VmallocTotaltest、VmallocUsedtest、VmallocChunktest,
对应代码的patch如下:

---
 fs/proc/meminfo.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/fs/proc/meminfo.c b/fs/proc/meminfo.c
index e03212ddaddf..287feea75c1f 100644
--- a/fs/proc/meminfo.c
+++ b/fs/proc/meminfo.c
@@ -116,10 +116,10 @@ static int meminfo_proc_show(struct seq_file *m, void *v)
 		    global_node_page_state(NR_WRITEBACK_TEMP));
 	show_val_kb(m, "CommitLimit:    ", vm_commit_limit());
 	show_val_kb(m, "Committed_AS:   ", committed);
-	seq_printf(m, "VmallocTotal:   %8lu kB\n",
+	seq_printf(m, "VmallocTotaltest:   %8lu kB\n",
 		   (unsigned long)VMALLOC_TOTAL >> 10);
-	show_val_kb(m, "VmallocUsed:    ", vmalloc_nr_pages());
-	show_val_kb(m, "VmallocChunk:   ", 0ul);
+	show_val_kb(m, "VmallocUsedtest:    ", vmalloc_nr_pages());
+	show_val_kb(m, "VmallocChunktest:   ", 0ul);
 	show_val_kb(m, "Percpu:         ", pcpu_nr_pages());
 
 #ifdef CONFIG_MEMORY_FAILURE
-- 

制作内核补丁(kpatch)

基于syscare build命令构建内存信息修改的kpatch

syscare build --patch-name "modify-meminfo"  --source kernel-5.10.0-197.0.0.110.ile2312sp1.src.rpm  --debuginfo kernel-debuginfo-5.10.0-197.0.0.110.ile2312sp1.x86_64.rpm  --output ./output/ --verbose --skip-cleanup --patch 0001-modify-meminfo.patch

构建成功后,在output目录下生成kpatch文件:patch-kernel-5.10.0-197.0.0.110.ile2312sp1-modify-meminfo-1-1.x86_64.rpm
在这里插入图片描述

安装内核补丁

使用rpm安装命令安装kpatch

rpm -ivh patch-kernel-5.10.0-197.0.0.110.ile2312sp1-modify-meminfo-1-1.x86_64.rpm

在这里插入图片描述
使用syscare list命令查看补丁信息:
在这里插入图片描述
使用syscare apply 命令执行内核补丁:
在这里插入图片描述

查看热补丁运行效果

补丁处于ACTIVED状态,标识补丁已经生效,查看/proc/meminfo信息:
在这里插入图片描述
在不重启浪潮云启操作系统(InLinux)的前提下,内存信息的代码修改已经生效。

总结

使用浪潮云启操作系统(InLinux)可以支持内核补丁的热升级,支持内核问题或安全漏洞的快速定位和修复,降低修复内核问题对用户的影响,在用户无感知(不重启操作系统)的前提下,支持内核缺陷和安全漏洞的快速修复。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值