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

主Linux内核与Ubuntu使用的内核之间的function集有何不同? 为什么Ubuntu从主内核分支而不是直接使用主内核?

上游内核(在我们提供它们时称为主线内核 )只是指定版本的上游内核,添加了很少的次要配置更改,因此在Ubuntu安装上使用它们的问题很少。

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

除了上面提到的以外,很少有底层代码与上游代码不同。

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

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

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

这是Linux的主要function之一,这也是我们多年来在这么多不同平台上运行的原因之一。 有时候怪癖和源补丁会导致彼此之间出现问题。 在这些时候,我们致力于缓解底层内核行为的变化问题。 在许多情况下,这些更改直到发布之后才会进入上游,这在很大程度上是由于需要正确编写修复程序,记录所执行的操作,测试更改以及执行各种其他测试和压力测试。

在这些情况下,前往上游的补丁作为源补丁以非稳定的方式和尚未在Linus树中的补丁进行。 指向delta审核规范的链接应该作为对Ubuntu内核当前Natty版本的审核内容的参考。

Linux内核正在不断发展。 在打包他们的下一个版本时,Ubuntu团队必须在某个时间点说,“好吧,我们将采用现在的内核”。有时你可能会在repos中获得一个新的内核用于目前的分布。

这个地方可以做一些有趣的阅读,但它可以是高度技术性的。 你或许可以找出上游烹饪的内容以及你目前所缺少的东西(但最终会得到)。

应该注意的是,与任何软件一样,内核容易出错,并且通常会发生回归(添加新内容会破坏旧function)。 这些天的内核恕我直言,在新function方面并没有让我感到兴奋。 我很高兴运行一个两年前的内核。

您可以下载Ubuntu的git树,并使用图形查看器来查看git树。 这将显示Ubuntu的所有补丁。 https://wiki.ubuntu.com/Kernel/Dev/KernelGitGuide

另一个可能的选择,订阅ubuntu-kernel邮件列表。 他们所有的工作都发布在那里,你可以了解他们的工作。 但是,这是高流量,恕我直言,很烦人。 (但是,嘿,这是他们的名单)