如何在不重启的情况下升级服务器的内核?

如何在不重启的情况下升级服务器的内核?

这是一个很有针对性的问题,因为我已经知道,并且非常感兴趣拼接。问题是,自从被 Oracle 收购后,他们被迫从产品中撤下了大量服务器发行版。答案并不像以前那么简单。

我注意到关于 Unix.SE 的一个问题其中指出:

您可以构建自己的 ksplice 补丁,以动态加载到您自己的内核中

太棒了!但是怎么做呢?

ksplice我已经在桌面上的 repo 中安装了免费软件包(ksplice-uptrack不是付费软件包),现在想要生成并应用更新。流程是怎样的?是否有任何脚本可以自动执行该流程?

此外,如果无需重启升级所需的所有机制都位于内核(和ksplice软件包)中,那么我们为什么不默认利用它呢?


最近kGraft 已宣布。结果似乎大致相同,所以如果你有与之相关的答案,我会很高兴。不过目前距离发布还有几个月的时间。


注1:我很高兴除了 ksplice 之外还有一个解决方案,但它必须提供同样的东西:无需重新启动服务器即可应用内核的滚动更新。

笔记2:我再说一遍;主要的 ksplice“服务”不支持 Ubuntu Server。它以前支持,但现在不再支持了。当我说想使用 ksplice 时,我指的是软件包中的开源工具ksplice。任何谈论的答案ksplice-uptrack可能都不是我想要的,因为这是与上述“服务”直接集成的部分。

答案1

这里的所有其他答案都很棒,但具体到 Ubuntu,Canonical 现在在 16.04 上提供此服务。

它使用了自 4.0 发布以来上游 Linux 内核中的实时修补技术。

答案2

我不太了解 ksplice,但我想提一下 - 你听说过吗kexec?这可能就是你需要的。

至于为什么我们没有将其作为默认机制?好吧,在当前内核仍在运行时覆盖其内存可能会导致潜在问题。它还要求硬件设备处于明确定义的状态,但这并不总是可能的。

你可以看看IBM 开发人员工作有关它的文章来决定它是否适合您的需要。

答案3

ksplice 将允许内核交换而无需重启。Uptrack 在 ksplice 中工作,并在 /etc/uptrack/uptrack.conf 中有一个可编辑的配置文件

答案4

Arch Linux wiki 有说明:https://wiki.archlinux.org/index.php/ksplice

唯一似乎与发行版相关的部分是如何安装 ksplice 本身。既然您似乎已经弄清楚了,我想这应该可以帮助您。

相关内容