首页 > 系统相关 >Linux内核机制—内核热补丁

Linux内核机制—内核热补丁

时间:2023-01-15 15:56:07浏览次数:38  
标签:kpatch 补丁 livepatch 内核 模块 Linux rst

一、内核热补丁简介

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

 

标签:kpatch,补丁,livepatch,内核,模块,Linux,rst
From: https://www.cnblogs.com/hellokitty2/p/17053613.html

相关文章

  • 在Linux环境下将war包部署到tomcat
    部署前先简单认识几个运维工具:MobaXterm、xshell、WinSCP、CRT。常见压缩格式的压缩与解压命令:ZIP:解压--unzip压缩包名.zip压缩--zip-r压缩包名.zip......
  • Linux后台运行程序
    我们在日常使用脚本中难免会遇到需要一直挂这的脚本,这里就需要用到Linux中如何让脚本后台运行的方法。这里有3种方法供参考。如何后台运行脚本方法1:nohup在执行命令前......
  • 从嵌入式linux到android应用开发
      时间过得很快,转眼之间已经到新公司一个月了。虽然学到了一些移动开发的知识,但是觉得离我的目标还很远,完全没能达到我想要的水平。以前产品都是自己主导的,需要完成什么,计......
  • 初探linux子系统集之i2c子系统(一)
          I2c子系统在进公司来的时候就学习过了,可是那是还不是很熟悉linux中的i2c子系统,就没有细看。记得当初很想熟悉linux中的各种总线驱动,想专门写一个关于总线驱......
  • 初探linux子系统集之led子系统(三)
         世界杯结束了,德国战车夺得了大力神杯,阿根廷最终还是失败了。也许3年,5年,或者10年后,人们就不知道巴西世界杯的亚军是谁,但是总是会记得冠军是谁。就像什么考试,比......
  • 初探linux子系统集之led子系统(二)
             巴西世界杯,德国7比1东道主,那个惨不忍睹啊,早上起来看新闻,第一眼看到7:1还以为点球也能踢成这样,后来想想,点球对多嘛6比1啊,接着就是各种新闻铺天盖地的来了......
  • 和菜鸟一起学linux总线驱动之i2c死锁问题
        不知不觉中已经有好几个月没有写点东西了,懒了就是懒了,说是忙着想把产品做得更好,都是借口,每天花一点时间来写点东西确实很不错,自己也坚持了很久很久,只不过今年以......
  • 初探linux子系统集之led子系统(一)
         就像学编程第一个范例helloworld一样,学嵌入式,单片机、fpga之类的第一个范例就是点亮一盏灯。对于庞大的linux系统,当然可以编写一个字符设备驱动来实现我们需......
  • 和菜鸟一起学linux之initramfs方式启动
    关于initramfs       initramfs在编译内核的同时被编译并与内核连接成一个文件,它被链接到地址__initramfs_start处,与内核同时被加载到ram中。initramfs被解析处理后......
  • Linux后台运行
    title:Linux后台运行date:2022-09-0312:51:35tags:-Linuxcategories:-Linux如何后台运行脚本方法1:nohup在执行命令前面加nohup但是CTRL+C就......