“Ubuntu 内核”是什么意思?

lan*_*ana 44 system kernel

我的想法是所有 Linux 发行版都使用一种内核(由 Linus Torvalds 开发的内核)。

那么为什么所有的 Linux 发行版都有自己的内核呢?

Chr*_*ard 88

有一个由 Linus Torvalds 发起并领导的项目,该项目维护名为 Linux 内核的内核的源代码。这是在kernel.org 上发布的内容。请注意,这不是内核,而是源代码——就像蛋糕的食谱本身不是蛋糕一样。

要做蛋糕,你必须一步一步地按照食谱做,混合配料,然后烘烤。要制作内核,您必须为您的计算机配置源代码并编译它。根据您的目标架构和您选择的配置(并且有很多配置选项),您最终会使用不同的内核。不是完全不同,而是不同。

此外,Linux 内核项目是开源的。允许并鼓励每个人获取他们自己的源代码副本,修改它以供自己使用,并分发他们自己修改后的副本——就像你可能继承了你奶奶从一本旧食谱改编的蛋糕食谱一样,您可能有自己的个人差异。

虽然大多数人不会破解他们自己的内核源代码的个人版本,但 Ubuntu、Fedora、Slackware 等分发项目会分发他们自己的 Linux 内核修改版本。通常,修改很简单:从“上游”内核的较新版本向后移植错误修复,以及尚未进入上游内核的安全修复。但它们可以是分发项目认为会使他们的版本“更好”的任何东西,因为该项目对“更好”的定义。

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

最后,所有内核都基本相同,这就是我们将它们都称为 Linux 的原因。改变他们的内核以至于它非常不兼容,这不符合任何人的利益。分布差异很大的各种计划,他们经销连同他们的内核创建一个完整的操作系统更多。

  • “有很多配置选项”是轻描淡写。Windows 设备驱动程序通常是独立的实体,而在 Linux 中,它们经常被内置到内核中(尽管我认为现在不像十年前那样如此)。所以......你需要I2C支持吗?IDE 支持?CAN-BUS 支持?虚拟化支持?您的目标是什么 CPU 架构(即使在 amd64 中也有几种变体)?“[内核包含几乎 *** 两千个 *** 不同的配置选项](https://www.linuxtopia.org/online_books/linux_kernel/kernel_configuration/ch05.html)”(强调)。 (6认同)
  • 只是添加支持这一点的评论 - Docker 和其他容器化系统使用主机内核进行容器的所有内核级交互,这意味着您可以在 Redhat 上运行基于 *containers* 的 Debian、Ubuntu、Slack、Arch 等 *例如主机*。它们会起作用(您必须实际寻找的边缘情况最少)。因为内核本质上在特定级别兼容,这就是容器化工作的级别。如果不同的发行版内核不兼容,则不能在 Ubuntu 以外的任何设备上运行基于 Ubuntu 的容器。 (2认同)

use*_*733 12

有点过于简化:

有一个 Linux 内核,但仍在开发中。如果您隔几周拍摄快照,您会发现细微的差异。

不同的 Linux 发行版在不同的时间拍摄快照,每个发行版都可以选择添加自己的秘诀。更多细微差别。


Art*_*ild 7

当您访问kernel.org 时,您会看到有几个不同的内核版本。

简而言之,它们是:

  • Mainline: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 包列表中找到