Linux内核机制—内核热补丁

一、内核热补丁简介

1. 热补丁内核实现路径:kernel/livepatch/

2. 热补丁内核使用demo路径 lib/livepatch/,可参考 livepatch-sample.c 实验也最简单。

复制代码
/* 单独测试,使用新函数替换内核中的一个旧函数 */
livepatch-sample.c

/* 这三个文件是一起的 */
livepatch-callbacks-busymod.c
livepatch-callbacks-mod.c
livepatch-callbacks-demo.c

/* 这三个文件是一起的 */
livepatch-shadow-fix1.c
livepatch-shadow-fix2.c
livepatch-shadow-mod.c
复制代码

3. 相关内核文档

kernel-5.10/Documentation/livepatch$ ls -l
callbacks.rst
cumulative-patches.rst
index.rst
livepatch.rst
module-elf-format.rst
shadow-vars.rst
system-state.rst

4. kpatch热补丁示意图

kpatch 工作在 function 级别,最基本的原理就是使用新的 function 替换旧的 function。主要组件包括:

(1) kpatch-build:将源差异补丁程序转换为热补丁程序模块的工具集合。它们的工作方式是在有或没有源补丁的情况下编译内核,比较二进制文件,并生成一个热补丁模块,其中包括要替换功能的新二进制版本。
(2) 热补丁模块:内核模块(.ko文件),其中包括替换功能和有关原始功能的元数据。
(3) kpatch 核心模块:内核模块(.ko文件),为热补丁模块提供接口以注册新功能以进行替换。它使用内核 ftrace 子系统来挂钩原始函数的 mcount 调用指令,以便将对原始函数的调用重定向到替换函数。
(4) kpatch utility:命令行工具,允许用户管理热补丁模块的集合。可以将一个或多个热补丁模块配置为在引导时加载,这样,即使在重新引导到相同版本的内核之后,系统也可以保持修补状态。

 

 

 

 

参考:

[华为云]Linux 内核热补丁方案介绍对比:https://bbs.huaweicloud.com/blogs/249693
linux内核热补丁: https://blog.51cto.com/u_15859002/5821625

 

posted on   Hello-World3  阅读(1725)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
历史上的今天:
2018-01-15 V4L2 subdev
2018-01-15 .gitignore忽略git版本库中的文件(夹)
2018-01-15 V4L2控制驱动
2018-01-15 Entities、pads、links 实体、垫、链接

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示