博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
编译并使用kpath不重启更新linux-kernel
阅读量:6525 次
发布时间:2019-06-24

本文共 1059 字,大约阅读时间需要 3 分钟。

yum install ncurses-devel -y

tar -xvf linux-4.9.3.tar.xz

cd linux-4.9.3/

make menuconfig

make all

make modules_install

make install

Kpatch主要有四个组件。

  1. kpatch-build                       产生hot patch。 通过对比包含patch和不包含patch的kernel差异,产生hotpatch。

  2. hot patch module            内核模块文件:包含替换函数和源函数的元数据。

  3. kpatch core module        内核模块文件,提供注册新函数的功能。利用内核kernel ftrace subsystem通过钩子将原函数进行重定向。

  4. kpatch utility                    管理热patch。可以配置在启动时加载哪些patch。这样相同的内核即使重启,仍然包含所打的热patch。

如何使用kpatch进行热patch

目前支持Fedora20,RHEL7,Ubuntu14.04,Debian8.0,Debian7.*
详细使用过程见https://github.com/dynup/kpatch

限制:

  1. 某些函数不支持hot patch,如(schedule(), sys_poll(), sys_select(), sys_read(), sys_nanosleep())

  2. 初始化函数不支持hot patch,如__init

  3. 不支持修改静态分配的数据

  4. 不支持vdso中的函数进行patch

  5. kpatch和ftrace以及kprobes存在不兼容

yum install kexec-tools -y

latestkernel=`ls -t /boot/vmlinuz-* | sed "s/\/boot\/vmlinuz-//g" | head -n1`

echo ${latestkernel}

4.9.3

kexec -l /boot/vmlinuz-${latestkernel} --initrd=/boot/initramfs-${latestkernel}.img --append="`cat /proc/cmdline`"

kexec -e

执行完后,终端会断掉,因为socket被重置了,重新连接即可。

本文转自 a120518129 51CTO博客,原文链接:http://blog.51cto.com/silencezone/1892180,如需转载请自行联系原作者
你可能感兴趣的文章
Python 判断闰年,判断日期是当前年的第几天
查看>>
web.xml 中的listener、 filter、servlet 加载顺序
查看>>
MyBatis原理简介和小试牛刀
查看>>
js部分基础
查看>>
脏读,幻读,不可重复读解释和例子
查看>>
Tomcat指定(JDK路径)JAVA_HOME而不用环境变量
查看>>
银行卡信息安全事件频发 互联网站成数据泄露"重灾区"
查看>>
云服务器 ECS 使用OpenAPI管理ECS:使用OpenAPI弹性创建ECS实例
查看>>
写个软件来防止服务器网站CPU百分百
查看>>
智能城市里,“公共电话亭”的存在意味着什么?
查看>>
JVM分代垃圾回收策略的基础概念
查看>>
5G技术的5大猜想
查看>>
MongoDB 3.0(1):CentOS7 安装MongoDB 3.0服务
查看>>
别随便安装 Pokemon GO被曝藏恶意后门
查看>>
让数据会思考会说话,为出海企业提供多样化数据智能解决方案
查看>>
我眼中的自动化测试框架设计要点
查看>>
FLIF:自由的无损图像格式
查看>>
Google开源Inception-ResNet-v2,提升图像分类水准
查看>>
Opera 出售细节曝光:昆仑出资1.68亿美元
查看>>
CentOS 5.3 下快速安装配置 PPTP ××× 服务器
查看>>