![如何在不重启的情况下更新内核? (ksplice 替代方案)](https://linux22.com/image/21138/%E5%A6%82%E4%BD%95%E5%9C%A8%E4%B8%8D%E9%87%8D%E5%90%AF%E7%9A%84%E6%83%85%E5%86%B5%E4%B8%8B%E6%9B%B4%E6%96%B0%E5%86%85%E6%A0%B8%EF%BC%9F%20%EF%BC%88ksplice%20%E6%9B%BF%E4%BB%A3%E6%96%B9%E6%A1%88%EF%BC%89.png)
如何在不重新启动的情况下更新正在运行的内核?我知道关于Oracle KSplice但它不是免费的,并且仅支持我不使用的发行版。有 ksplice 的替代品吗?
答案1
底层技术免费,并且是主线内核的一部分; Oracle 仅提供预构建映像。您可以构建自己的 ksplice 补丁来动态加载到您自己的内核中。
答案2
这是一个老问题,但它出现在谷歌的顶部,从那时起很多事情都发生了变化。目前,以下是 ksplice 的替代方案:
Livepatch是主流内核中的技术。 Canonical 为 Ubuntu 16.04 及更高版本提供内核实时补丁服务。如果您是公认的 Ubuntu 社区成员,则最多可免费供 3 台个人使用的计算机使用,或者最多可免费使用 50 台计算机。如果您两者都不是 - 您可以在 Ubuntu Advantage 支持中付费使用它订阅(物理服务器为 225-1,500 美元/机器/年,虚拟机为 75-500 美元/机器/年),这仍然比 ksplice 选项便宜。与列表中的其他解决方案不同,它允许管理员创建自己的补丁,但这可能是一项困难且耗时的工作。亚马逊 Linux 最近宣布实时补丁支持(测试版)也适用于 Amazon Linux 2。没有其他发行版提供实时修补服务(即使技术已集成到内核中)。
Kpatch 是 Red Hat 自己的基于 livepatch 的免重启内核实时修补工具。它于 2014 年发布。它适用于 RHEL 及其衍生产品,并作为高级支持的一部分提供订阅(每年 1,299 美元)。
SUSE 的 Kgraft 实时修补解决方案仅支持 SUSE 自己的 Linux Enterprise Server 12。价格从每 2 个插槽 699 美元/年或每 2 个插槽 1,890 美元/三年起。他们拥有最长的审判期限 - 60 天,但从架构角度来看有一些限制。
KernelCare - 自动实时修补解决方案,涵盖大多数流行的发行版,包括 CentOS、RHEL、Oracle Linux、Debian、Ubuntu、Amazon Linux 等。 KernelCare 还支持 Glibc 和 OpenSSL 修补,无需重新启动。它还提供定制和固定日期补丁以满足特定需求。一个30天的审判可用,订阅选项起价为 2.25 美元/服务器/月(仅适用于内核修补),以及 5.45 美元/服务器/月(适用于内核和 Glibc/OpenSSL 软件包)。
答案3
一种替代方法ksplice
是kexec()
。该命令不是在运行时修补 Linux 内核,而是本质上用新内核替换当前内核,而无需重新启动系统。
为了使其可用,需要将其作为发行版内核中的编译器选项打开 - 也就是说,您可以编译没有此功能的内核,因此您需要检查它是否可用和/或自行启用它。