Ubuntu 发布的内核和上游内核有什么区别?

And*_*ern 35 kernel upstream

主要 Linux 内核和 Ubuntu 使用的内核在功能集上有什么区别?为什么Ubuntu从主内核分支出来而不是直接使用主内核?

Jer*_*hee 21

上游内核(当我们提供它们时称为主线内核)只是指定版本的上游内核,添加了很少的细微配置更改,以便在 Ubuntu 安装上使用它们的问题最小。

这些内核与为 Ubuntu 版本发布的内核之间的区别在于许多其他配置更改、源补丁*,并且在某些情况下,在模块和硬件支持中编译。

除了上面提到的之外,底层代码与上游几乎没有什么不同。

*:在大多数情况下,源补丁是对内核默认行为的更改。这些不限于:黑名单、视频怪癖表、内置模块、尚未在 Linus 树中的源更改或尚未稳定的队列等。

源补丁是团队用来引入支持特定版本 Ubuntu 的大量已发布软件所需的配置选项的工具。在许多情况下,它们是这些应用程序正常工作所必需的。这与上游内核之间的根本区别在于,纯上游内核不是特定于发行版的。

因此,这些配置并非旨在确保某些应用程序按预期工作。这些配置的存在是为了为内核提供特定级别的可变性。此外,使用 quirks 允许我们从内核中识别需要特定事物的硬件,一旦我们检测到它们,我们就可以设置这些事物。

这是 Linux 的主要特性之一,也是我们多年来能够在如此众多不同平台上运行的原因之一。有时,怪癖和源补丁会导致彼此之间出现问题。在这些时间里,我们致力于通过更改底层内核行为来缓解问题。在许多情况下,这些更改直到发布之后才会在上游进行,这在很大程度上是因为需要正确编码修复程序、记录所做的工作、测试更改并进行各种其他测试和压力测试。

在这些情况下,前往上游的补丁作为源补丁携带,方式与稳定前补丁和尚未出现在 Linus 树中的补丁非常相似。delta review 规范的链接应该作为 Ubuntu 内核当前 Natty 版本的审查内容的参考。