这是一个很有针对性的问题,因为我已经知道,并且非常感兴趣拼接。问题是,自从被 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 上提供此服务。
- http://blog.dustinkirkland.com/2016/10/canonical-livepatch.html
- https://www.ubuntu.com/server/livepatch
它使用了自 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 本身。既然您似乎已经弄清楚了,我想这应该可以帮助您。