Linux 内核有成功的分支或重构吗?

Linux 内核有成功的分支或重构吗?

谷歌搜索显示这个斜线故事屈服这个 github 存储库自 2016 年以来就没有提交过。有github.com 上列出了 22,602 个分叉但这些将大部分(如果不是几乎全部)只是开发分支托瓦尔兹/Linux

我之前读到过,Linux 已经变得相当糟糕。在我看来,至少在用户体验方面,Linux 比我记忆中十多年前要精致得多(显然这不是对内核的准确评估;我现在只是在阅读 K&R,从未深入研究过)内核源代码,除了粗略地浏览一下,产生了“哇,我无法理解这一行”,但我知道内核中有关笔记本电脑上的 Linux 功能的大量开发,例如) 。不管怎样,我知道我见过 BSD 用户抱怨 Linux 的缺陷。考虑到基于 vim 的缺陷的 vim 的 neovim 分支,我认为类似的努力对于内核来说是有回报的。

引发这个问题的原因是LWN 上的这篇文章讨论使用 clang 编译 Linux 的尝试。我读到过内核使用许多 gcc 特有的怪癖/特殊功能进行优化(尽管与我的记忆相比,链接的文章似乎淡化了它们),我开始怀疑是否有人尝试过重构/分叉内核以使其更具可移植性,或者至少可以在 gnu 环境之外进行编译。我也知道 gcc 本身很笨拙,Linus 本人也批评过它。

我知道我并不是唯一一个厌恶 RMS 和 GNU 而对缺乏 GNU 的 Linux 感兴趣的人。我知道阿尔卑斯Linux虽然不需要 gnu 工具,但内核仍然是用 gcc 编译的,不是吗?有很多关于替代工具链和用户层软件的参考,但我特别想知道内核以及是否有消除 gcc/gnu 依赖性的分支——考虑到标题的一个附属问题——在我看来,这将是一个浪费单独去问。

答案1

我特别想知道内核以及是否有消除 gcc/gnu 依赖性的分支 -

没有人能够完成 clang 和 Linux 的同步工作然后将其保留为长期分叉。尤其是当主线有如此大的兴趣和意愿时。 除非它只是一个大型可见项目的一小部分,你会发现的。 (正如你所做的那样......)。

将此视为标题的一个附属问题——在我看来,单独提出这个问题是一种浪费。

安卓,正如第一个答案所提到的。

有些部分被合并了,所以也许没有原来那么糟糕。我对此不太了解。 Mainline 当然可以处理一些 ARM CPU 相关的东西,例如 BIG.little。 Android 不断地基于主线版本进行变基;谷歌不会落后太多。

但这是一个长期运行的分叉。它不遵循“上游优先”规则。他们携带了大量的硬件支持。

在我看来,“Android”和“Google”是很好的指标,可以指出您需要的资源水平,从而证明它是 Linux 的分支。

Android 也存在一个问题,因为运行它的设备附带的内核包含大量(通常是数百万行)树外代码。 --https://lwn.net/Articles/738225/


还有 RHEL 内核,有可怕的名字例如 2018 年的 2.6.32-754。这些不仅仅是安全更新;它们将包括对一些新硬件的支持,同时旨在提供与基本内核版本(例如 2.6.32)更接近的行为。我相信 fork 是一个恰当的词来形容 RH 维护它所需的资源。

在各种最新硬件上良好运行的成本很高,因此很有价值。这就是 Linux 内核项目的主要内容,我想说这是理解这两个分支的最重要的因素。

您可能会在 openhub.net 上比较 vim 和 Linux 的代码大小,然后想,哦,Linux“仅”大约是 20 倍大小。然而,提交数量的差异明显更大;流失率相当猛烈。

另外,这不仅是内核代码更难正确……尽管确实如此……而且还有硬件支持。当您看似无害的重构最终破坏了一些设备时,您需要访问这些特定设备来调试和修复问题。


硬件支持让我想到 https://en.wikipedia.org/wiki/Embeddable_Linux_Kernel_Subset:-P。

在这个服务器虚拟化的世界中,您可能还会认为会有针对它优化的分支,因为它们不需要跟上这么多不同的硬件。但我想不出任何好的例子。你可以查找“unikernels”;似乎有几个不是基于Linux的。


linux-rt / PREEMPT_RT也被认为是树外补丁集。这是一个基于连续主线版本重新构建的补丁集。 200 KB(压缩)的专业代码是一个值得尊敬的补丁集。它的一些大块至少在某一点上已经被合并了。

答案2

Android 是 Linux 的一个分支。根据莱纳斯的说法。 https://www.youtube.com/watch?v=duDC_u4ydVo 我确信不是很有帮助,您可能正在寻找一款适合桌面使用的.. android 不是

相关内容