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 2023-01-15 15:42 Hello-World3 阅读(1725) 评论(0) 编辑 收藏 举报
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源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 实体、垫、链接