Kpatch不重启给Linux内核打补丁

网友投稿 1459 2023-02-11

本站部分文章、图片属于网络上可搜索到的公开信息,均用于学习和交流用途,不能代表睿象云的观点、立场或意见。我们接受网民的监督,如发现任何违法内容或侵犯了您的权益,请第一时间联系小编邮箱jiasou666@gmail.com 处理。

Kpatch不重启给Linux内核打补丁

搭建kpatch builder

以centos7.2为例。

默认centos7.2的安装的内核版本是3.10.0-327.el7.x86_64,这个内核版本当初是通过gcc 4.8.3编译的。 而centos7.2自带gcc rpm包的版本则是 4.8.5

kpatch build命令执行的时候,首先检查gcc的版本是否一致, 因为两者的版本不一致,所以kpatch build命令会失败。 当然我们可以使用--skip-gcc-check,跳过这个检查,我也测试发现在一些简单补丁下可以打包通过。 但是系统不推荐这样做的,会有一定的风险。

搭建步骤:

升级kernel

升级kernel版本到kernel-3.10.0-327.36.3.el7.x86_64

1
2
yum update kernel-y
kernel-3.10.0-327.36.3.el7.x86_64

重启系统,并切换到新安装的内核reboot(switch to new kernel)安装所需的rpm包

打开debug源

1
yum-config-manager--enable debug

安装编译kernel所需的rpm报文

1
yum-builddep kernel

安装debuginfo相关的rpm包

1
sudo debuginfo-install kernel

但是这个命令在选择kernel版本的时候,失败。 通过手动安装两个debuginfo的rpm报文,跳过了这一步

从github上下载并安装kpatch

centos默认的kpatch rpm里只有kpatch的命令行工具, 没有kpatch-core.ko, 这个ko是kpatch的必备文件。 kpatch的版本是tag: v0.3.4

制作热升级补丁

制作补丁很简单可以通过命令kpatch-build。 如:

1
kpatch-build vxlan.patch

第一次安装的时候,需要下载kernel src rpm包,速度会慢一些。

最后,在命令执行的当前目录下回产生一个ko文件

如何部署热升级补丁

服务器首次部署kpatch

升级内核版本

确保被升级机器的内核版本跟builder机一致。

如不一致, 升级kernel到3.10.0-327.36.3.el7.x86_64

1
yum update kernel

安装kaptch及kpatch core模块

1
2
yum install kpatch
insmod kpatch-core.ko

centos7.2自带的kpatch rpm包里只有kpatch的一些脚本命令,缺少kpatch-core.ko, 这个需要我们手动从builder机里copy。

安装kpatch 热补丁

加载热补丁

1
kpatch install kpatch-vxlan.ko

显示已安装的补丁

1
2
3
4
5
[root@vm2~]# kpatch list
Loaded patch modules:
Installed patch modules:
kpatch_vxlan(3.10.0-327.36.3.el7.x86_64)
上一篇:怎么处理异常告警处理(报警后警告处理)
下一篇:restorecon命令详解
相关文章

 发表评论

评论列表