1、简介
给 Linux 内核动态打补丁而不必重启系统是最近的一项 热点技术 。 虽然此前已经有了 Ksplice 来达到此类目
的 , 但最近 SUSE 和 Redhat 却先后推出了类似的项目 。 其中,前者为 kGraft, 后者是 kpatch。
kGraft : 为了使 Linux 管理人员更容易的安装重要的 Kernel 安全补丁,同时又不让系统宕机,SUSE Labs 开发了 kGraft。kGraft 使用一组diff文件来计算内核中需要修改的部分。Kgraft在做替换时,不需要完全停止内核。 在打补丁时,正在运行的函数可以先使用老版本或新内核中对应的部分,当补丁打完后就可以完全切换新的版本。
kpatch : Redhat 目前已经以 GPLv2 许可发布了kpatch 的源代码 ,其主要包含以下 4 个组件 :
-
kpatch-build: 用来将 source diff patch 转换成 hot patch module;
-
hot patch module: 包含替代函数及原始函数元数据的内核模块;
-
kpatch core module: 为 hot patch 注册新的函数以用于替换提供接口的内核模块;
-
kpatch utility: 允许用户管理 hot patch 模块的命令行工具;
Kpatch运行时并不将内核调用重定向到老版本。相反,它会等待所有函数调用都停止时,再切换到新内核。Red Hat的工程师认为这种方法更为安全,且更容易维护,缺点就是在打补丁的过程中会带来更大的延迟。