Linux Kernel Live Patching

❊ History of Linux Kernel Live Patching

安装最新的Linux内核用于表示重启,直到开发“无重启内核更新”,这是一种在不重新启动服务器的情况下修补服务器的方法。现在这项技术刚刚超过10年,本文简要介绍了它的起源和现状。

❊ 2001–2010: The Patent Trail(专利追溯)

如果您使用热修补或实时系统更新等关键字浏览专利档案,您将挖掘许多应用程序和拒绝,表明更新计算机系统而不停止它的想法并不是什么新鲜事。追踪从一般到具体的重要日期如下:

  • 2001年:惠普公司申请了一种动态更新软件以避免丢失硬件功能的方法。
  • 2002年:微软加入游戏的方法是在不中断系统的情况下更新系统(Windows)。(他们的初始申请因HP的“现有技术”而被驳回。)
  • 2008年:Jeff Arnold 宣布推出 Ksplice软件,用于更新(修补)Linux内核而不会中断(即无需重启1)。
  • 2010年:微软的专利最终获准上诉。

关于这些的有趣之处在于,他们共同希望通过软件更新来纠正系统核心软件或硬件中的故障,而不会影响系统的持续运行并且不会改变硬件。听起来很熟悉?(线索:熔化,幽灵。)

❊ 2009年:重新启动的诞生

杰夫阿诺德是一名麻省理工学院的学生,正在照看他们的一台服务器2。它需要一个安全补丁,但他推迟了它,因为重新启动会给他的用户带来不便。在系统更新之前,它被黑了。耻辱和(具有讽刺意味的)不便使杰夫在没有延迟而不重新启动系统更新的问题上找到了他的硕士论文的主题。这个故事可能是杜撰的,但它提醒我们,现场补丁技术的出现不仅仅是为了方便而是为了安全,它应该受到赞赏。

Jeff Arnold与三名学生同事一起研究了如何更新Linux服务器内核的问题,没有延迟,也没有中断系统的进程。该解决方案采用名为Ksplice的软件形式,其技术基础在2009年的学术论文中提出。该文章的标题包括“重新启动”这个词,现在熟悉的“不间断更新”的Linux简写,但是2005年首次由微软创造,用于Windows驱动程序更新。

image.png

(补丁和不打补丁进行了二进制的比较,找出不同的函数,源代码patch守护程序提取出不同的函数。内核源码优化这些不同的单元)
毕业后,杰夫和他的麻省理工学院同事创办了Ksplice Inc.,并于2009年5月获得麻省理工学院10万美元创业大赛奖。该公司于2010年推出了商业服务; 事情进展顺利。

❊ 2011-2016:Oracle和新浪潮

2011年7月21日,甲骨文收购了Ksplice,Inc。,将该软件整合到他们自己的Linux品牌中,Linux本身就是Red Hat 3的衍生产品。尽管有这种传统,甲骨文仍然停止支持红帽。甲骨文对Ksplice的收购引发了其他关键Linux供应商的激增。

在2011年和2014年之间,SUSE和Red Hat 分开工作(并且不了解彼此的目标)来发布他们自己的实时内核更新解决方案,他们分别在Kgraft和Kpatch中进行了这些解决方案。(尽管他们略微先行,但SUSE的Kgraft在2016年才成为GA(即适用于生产系统)。)

image.png

Red Hat与社区分享了他们的Kpatch代码,并将其集成为Red Hat Enterprise Linux的支持功能。

image.png

两个版本之间的区别可以从开源版本的项目页面上印上的消息中推断出来:

警告:请谨慎使用!可能会发生
内核崩溃,自发重启
和数据丢失!

在整个同一时期,与SUSE和Red Hat的努力并行,支持实时修补的基本ABI基础被集成到Linux内核版本4.0源代码中。我们的想法是从Kpatch和Kgraft中获取最佳创意,然后将其修补并将其移植到主线的通用方法中。这被称为livepatch,并在2016年10月,Canonical宣布他们正在推出他们自己的基于它的商业内核更新服务,可以预见称为Canonical Livepatch服务。首先只适用于Ubuntu 16.04 LTS,后来扩展了也包括14.04 LTS。在Ubuntu 18.04中,LTS Livepatch是一个安装选项,可以通过内置的软件管理工具进行配置,这标志着它在标准软件分发中日益重要。

❊ 2014年:街区新生儿

由于主要供应商争相成为第一个推出可行的实时补丁解决方案,CloudLinux是基于Linux的网络托管操作系统的主要参与者,在3月成功测试后,于2014年5月推出了KernelCare

他们通过在大多数Linux平台上提供最广泛的功能集来为市场感到惊讶,并在Linux内核开发和客户支持方面享有盛誉。另一个令人震惊的是负担能力,吸引了网站托管商,他们发现KernelCare的每服务器成本比主要竞争对手的每站点成本更易于管理和扩展。

最近,将KernelCare与Imunify360捆绑在一起,让它显示出一个新的高飞,安全的系统管理员中队。

❊ 结论:2019年的核心问题

随着世界向自动化安全方向发展,您将看到自动实时内核补丁管理软件更加紧密地集成到流行的Linux发行版中。目前市场上只有五家不同的供应商。功能比较表列出了它们的主要卖点。在进一步阅读部分,您将找到文档来源和背景文章

修改活动内核可能会很麻烦。这不是企业或运行服务器的任何人想要信任未经测试和不受支持的软件。当以安全性的名义完成时,它是Linux中值得付费的众多应用程序之一,绝对必须做的少数几个应用程序之一。

1由于微软2002年的专利申请,当时的讨论揭示了对该技术长期可行性的担忧。请参阅lkml.org 2008年4月lwn.net 2011 7月

2条 麻省理工学院的新闻:“把世界重新启动无更新”(2014)。

3自2016年1月起,Ksplice仅作为Oracle的UEK和Oracle Linux 6&7产品的一部分提供。同年11月,他们删除了Red Hat的上游Kpatch代码。

附录

Linux内核实时更新服务:功能比较表

image.png

有关详情,请参阅比较注释

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.描述计算机的组成及其功能 (一)计算机的组成 1.CPU 2.CPU风扇 3.BIOS 4.内存 5.硬盘 6...
    whamai阅读 5,393评论 0 1
  • 如果您运行Linux服务器,软件修补是一项必须定期执行的任务。虽然大多数程序可以使用needrestart等工具自...
    jpyin阅读 22,814评论 0 0
  • [日期:2007-09-09]来源:Linux公社作者:Linuxidc[字体:大中小] Linux系统各发行版镜...
    狂奔的蜗牛_wxc阅读 12,301评论 0 4
  • 发行版为许多不同的目的而制作, 包括对不同计算机结构的支持, 对一个具体区域或语言的本地化,实时应用,和嵌入式系统...
    Hi_One阅读 4,260评论 1 4
  • 原文 这是关于这个话题的全部,最终的文件。 它包含有关如何成为Linux内核开发人员以及如何学习如何与Linux内...
    御浅永夜阅读 4,145评论 0 3