kpatch制作内核热补丁步骤总结

零、原理及参考

kpatch入门实践教程-CSDN博客

Kpatch 使用过程及其原理-CSDN博客

一、准备工作

  1. 安装对应版本的kpatch-build.rpm并解决依赖
  2. diff -Naur dir1 dir2 > hot.patch 拿到补丁文件
  3. 下载对应内核版本的src.rpm
  4. 安装好对应的开发包kernel-debuginfo,kernel-debuginfo-common,并可在/lib/debug/lib/modules/xxx-xxx.el7.x86_64/下找到vmlinux内核映像文件
  5. mkdir -p /usr/share/kpatch/patch提前创建好目录(不然也是~/.kpatch/build.log报错后建)
  6. kpatch-build -r kernel-bek-4.19.25-200.el7.bclinux.src.rpm -v /lib/debug/lib/modules/4.19.25-200.el7.x86_64/vmlinux  Unexpected_TXQ_queue_failure.patch --skip-gcc-check

在当前目录编译出内核热补丁ko后,尝试打入补丁

1.查看已安装的热补丁

# kpatch list (或者 lsmod)

2.加载kpatch热补丁模块

# kpatch load xxx.ko (或者 insmod xxx)

# kpatch list 查看加载情况 (或者 lsmod | grep xxx)

3.卸载某个kpatch热补丁模块

# kpatch unload xxx.ko

rmmod报错是因为该热补丁正在use,不能直接卸载,可以试着用配置取消热补丁:

# echo 0 > /sys/kernel/livepatch/livepatch_xxx/enabled

彻底移除该kpatch热补丁模块可以使用uninstall

# kpatch uninstall xxx.ko

# kpatch list 查看卸载情况

如果仅仅移除kpatch热补丁模块不会卸载运行内核已加载的热补丁模块,除非使用上面描述的kpatch upload命令。

二、制作热补丁时遇到问题及解决方式

  1. kpatch-build比较占磁盘空间,所以最开始要df -h 确保至少有16G空间
  2. fatal error: openssl/opensslv.h: No such file or directory

        A:缺少包,直接yum -y install openssl-devel即可(apt-get install libssl-dev)

     3.

A:有时发现报错“No targets, No makefile”确实离谱,可能是版本不匹配,最后换了个kpatch-build.rpm版本的包就可以了。

三、其它参考笔记

本次热补丁patch如下,本来不应该用热补丁去调试一个功能,而是去修改一个功能。但本次是线上产品,无法本地复现所以就加打印探查一下:

如果是纯学习的话,其实可以用下面这个源码提供的补丁,直接cat /proc/meminfo就能看出区别了

diff -Nupr src.orig/fs/proc/meminfo.c src/fs/proc/meminfo.c
--- src.orig/fs/proc/meminfo.c	2017-09-22 15:27:21.699056179 -0400
+++ src/fs/proc/meminfo.c	2017-09-22 15:27:41.274137239 -0400
@@ -99,7 +99,7 @@ static int meminfo_proc_show(struct seq_
 		"Committed_AS:   %8lu kB\n"
 		"VmallocTotal:   %8lu kB\n"
 		"VmallocUsed:    %8lu kB\n"
-		"VmallocChunk:   %8lu kB\n"
+		"VMALLOCCHUNK:   %8lu kB\n"
 #ifdef CONFIG_MEMORY_FAILURE
 		"HardwareCorrupted: %5lu kB\n"
 #endif

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值