“Ubuntu内核”是指什么?

我的想法是所有的Linux发行版都使用一个内核(由Linus Torvalds开发的那个)。
那么为什么所有的Linux发行版都有自己的内核呢?
3个回答

有一个项目,由Linus Torvalds发起和领导,负责维护名为Linux内核的源代码。这就是在kernel.org上分发的内容。请注意,这不是一个内核,而是源代码——就像蛋糕的食谱本身并不是蛋糕一样。
要做一个蛋糕,你必须按照步骤来,混合材料,然后烘烤。要制作一个内核,你必须为你的计算机配置源代码并进行编译。根据你的目标架构和所选择的配置(有很多配置选项),你会得到不同的内核。虽然不会有太大的差异,但还是会有些许不同。
此外,Linux内核项目是开源的。每个人都可以获取自己的源代码副本,并对其进行修改以满足自己的需求,并分发自己修改过的副本,就像你可能从你的祖母那里继承了她从一本旧食谱改编的蛋糕食谱一样,你也可能有自己的个人变化。
尽管大多数人没有在自己的内核源代码上进行修改,像Ubuntu、Fedora、Slackware等发行项目会分发他们自己修改过的Linux内核版本。通常这些修改很简单:从“上游”内核中移植了最新版本的错误修复和尚未合并到上游内核的安全修复。但这些修改可以是任何发行项目认为能够让他们的版本更好的东西,根据该项目对“更好”定义的理解。

所以这就是为什么我们将“Ubuntu内核”视为与“Linux内核”不同的东西 — 因为它确实是不同的。 Ubuntu内核由Canonical维护。它建立在Debian内核之上,而Debian内核本身是Linux内核的一个发行版。我不知道Ubuntu内核和Linux内核之间的所有区别(不是因为它是秘密,而只是因为我不了解)。我想这个页面列出了很多区别,而这里是Debian内核的补丁

最后,所有内核基本上都是相同的,这就是为什么我们将它们都称为Linux的原因。没有人有兴趣改变他们的内核,使之与其他内核不兼容。发行版之间的差异更多地体现在分发的各种程序上,这些程序与内核一起构成了整个操作系统。


6“有很多配置选项”这个说法实在是轻描淡写了。Windows设备驱动通常是独立的实体,而在Linux中它们经常内置于内核中(尽管我认为现在比十年前少了一些)。所以...你需要I2C支持吗?IDE支持?CAN-BUS支持?虚拟化支持?你的目标CPU架构是什么(即使在amd64中也有几种变体)?"内核包含近两千个不同的配置选项"(强调添加)。 - Matthew
1简而言之:Ubuntu内核=纯净Linux内核+Canonical的一系列补丁。 - val is still with Monica
2只是补充一下支持这个观点的评论 - Docker和其他容器化系统使用主机内核来处理容器的所有内核级交互,这意味着你可以在Redhat主机上运行基于Debian、Ubuntu、Slack、Arch等的容器。它们将正常工作(只有极少数边缘情况需要你实际去寻找)。因为内核在特定层面上基本上是兼容的,而容器化就是在这个层面上工作的。如果不同发行版的内核不兼容,你就不能在除了Ubuntu之外的任何系统上运行基于Ubuntu的容器。 - Moo
1@Chris Bouchard 非常小而有些苛刻的纠正:Slackware所附带的内核完全未被修改。它是一个完全“原汁原味”的内核... - andrew.46

有点过于简化:
有一个Linux内核,但开发仍在进行中。如果你隔几个星期拍摄快照,你会发现细微的差异。
不同的Linux发行版在不同的时间拍摄快照,并且每个发行版都可以添加自己的特殊处理。更多微小的差异。

当你访问kernel.org时,你会发现有几个不同的内核版本。
简而言之,它们包括:
- 主线版:由Linus维护的开发内核。 - 稳定版:最新的稳定分支。 - 长期支持版:旧版本内核,带有反向移植的安全修复补丁。
Ubuntu内核通常遵循相同的原则。当一个版本的Ubuntu发布时,它通常会使用发布时的“稳定”内核版本(然后成为该版本Ubuntu的“长期支持”)。
例如,18.04版本(Bionic)使用的是4.15内核分支,而20.04版本(Focal)使用的是5.4内核分支。
在发布周期的后期,可能会提供“HWE”(硬件支持)内核,它基于更新的分支(例如Focal HWE基于5.8分支)。这是Ubuntu内核生态系统的一部分,为用户提供更多选择。
此外,不同平台(云和裸机)还有不同的内核构建版本,例如Azure、AWS、KVM、Raspi、RiscV等。
这个(相当书呆子的)映射表显示了哪些Ubuntu内核对应于主线内核版本。不同的内核包也可以在Ubuntu软件包列表中找到。