Linux-Kernel

Linux 核心是否有任何成功的分叉或重構?

  • August 14, 2018

Google搜尋顯示這個 slashdot 故事產生了這個自 2016 年以來沒有送出過的 github 儲存庫。github.com上列出了 22,602 個分支,但這些將大部分(如果不是幾乎全部)只是用於torvalds/linux的開發分支。

我之前讀過 Linux 已經變得相當笨拙。在我看來,至少在使用者體驗方面,Linux 比我記憶中的 10 多年前要精緻得多(顯然這不是對核心的準確評估;我現在才讀 K&R,從未涉足核心原始碼,除了粗略的一瞥,產生了“哇,我無法理解這一行”,但我知道核心中有關 linux-on-the-laptop 功能的大量開發,例如) . 無論如何,我知道我見過 BSD 人抱怨 Linux 垃圾。考慮到基於 vim 的 vim 的 neovim 分支,我認為類似的努力會對核心有所回報。

引發這個問題的是這篇關於 LWN的文章,該文章討論了使用 clang 編譯 Linux 的嘗試。我讀到核心使用了許多特定於 gcc 的怪癖/特殊功能進行優化(儘管與我的記憶相比,連結的文章似乎淡化了它們),我開始懷疑是否有人試圖重構/分叉核心來製作它更便攜,或者至少可以在 gnu 環境之外編譯。我也明白 gcc 本身很粗魯,Linus 自己也批評過。

我知道我個人對 RMS 和 GNU 的厭惡以及對沒有 GNU 的 Linux 的興趣並不孤單。我知道Alpine Linux沒有 gnu 工具,但核心仍然是用 gcc 編譯的,不是嗎?有很多關於替代工具鍊和使用者區軟體的參考,但我特別想知道核心以及是否有消除 gcc/gnu 依賴項的分叉 - 考慮這是標題的附屬問題 - 在我看來這將是一個浪費單獨問。

我特別想知道核心以及是否存在消除 gcc/gnu 依賴項的分叉——

沒有人會完成同步 clang 和 Linux 的工作*,然後將其作為一個長期的 fork 來維護*。尤其是當主線有這樣的興趣和意願時。 除非它是您會發現的大型可見項目的一小部分。(正如你所做的……)。

認為這是標題的附屬問題——在我看來,單獨提出它是一種浪費。

Android,如第一個答案所述。

有些部分被合併了,所以也許它沒有以前那麼糟糕。我真的不是最新的。Mainline 肯定適用於一些與 ARM CPU 相關的東西,例如 BIG.little。並且 Android 在主線版本上反複變基;Google不會落後太多。

但這是一個長期執行的叉子。它不按照“上游優先”規則執行。他們提供了大量的硬體支持。

IMO 的“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(壓縮)的專業程式碼是一個可觀的更新檔集。它的一些大塊已經被合併了,至少有一點。

引用自:https://unix.stackexchange.com/questions/462364