Linux 核心

Linux 核心（Linux kernel）是一種開源的類 Unix 作業系統宏核心。整個 Linux 作業系統家族基於該核心部署在傳統計算機平臺（如個人計算機和伺服器，以 Linux 發行版的形式）和各種嵌入式平臺，如路由器、無線接入點、專用小交換機、機頂盒、、智慧電視、數字影片錄影機、網路附加儲存（NAS）等。工作於平板電腦、智慧手機及智慧手錶的 Android 作業系統同樣透過 Linux 核心提供的服務完成自身功能。儘管於桌面電腦的佔用率較低，基於 Linux 的作業系統統治了幾乎從移動裝置到主機的其他全部領域。截至 2017 年 11 月，世界前 500 臺最強的超級計算機全部使用 Linux。

Linux 核心最早是於 1991 年由芬蘭駭客林納斯・託瓦茲為自己的個人電腦開發的，他當時在 Usenet 新聞組 comp.os.minix 登載帖子，這份著名的帖子標誌著 Linux 核心計劃的正式開始。如今，該計劃已經拓展到支援大量的計算機體系架構，遠超其他作業系統和核心。它迅速吸引了一批開發者和使用者，利用它作為其他自由軟體專案的核心，如著名的 GNU 作業系統。而今天，Linux 核心已接受了超過 1200 家公司的近 12000 名程式設計師的貢獻，其中包括一些知名的軟硬體發行商。

從技術上說，Linux 只是一個符合 POSIX 標準的核心。它提供了一套應用程式介面（API），透過介面使用者程式能與核心及硬體互動。僅僅一個核心並不是一套完整的作業系統。有一套基於 Linux 核心的完整作業系統叫作 Linux 作業系統，或是 GNU/Linux（在該系統中包含了很多 GNU 計劃的系統元件）。

Linux 核心是在 GNU 通用公共許可證第 2 版之下發布的（加上一些非自由韌體、blob 與各種非自由許可證），是一個開源專案協作的突出例子。它的版本支援根據版本最長可達 6 年，貢獻者遍佈世界各地，日常開發相關的討論在上。

歷史

1991 年，林納斯・託瓦茲，一名 21 歲的就讀於芬蘭赫爾辛基大學的計算機科學專業學生，基於一些簡單的想法，打算編寫一個作業系統核心。他透過英特爾 80386 組合語言的任務切換器和一個終端驅動程式開始工作。8 月 25 號，他在 comp.os.minix 新聞組裡發了一封帖子：

之後，許多人為這個專案貢獻了程式碼。在早期，MINIX 社群向 Linux 核心貢獻了程式碼和想法。當時，GNU 專案已經建立了許多自由作業系統所需的元件，但是它自己的核心 GNU Hurd 尚不完整且無法使用；而 BSD 作業系統還沒有擺脫合法的阻礙。因此，儘管早期版本的 Linux 功能有限，但它迅速獲得了開發人員和使用者。

到 1991 年 9 月，Linux 核心版本 0.01 在芬蘭大學和研究網路（FUNET）的 FTP 伺服器（ftp.funet.fi）上釋出。它有 10,239 行程式碼。在 1991 年 10 月，0.02 版本的核心釋出了。

1991 年 12 月，0.11 版本的核心釋出。由於它可以由執行相同核心版本的計算機編譯，因此該版本是第一個的 Linux 核心。當託瓦茲於 1992 年 2 月釋出 0.12 版本時，他採用了 GNU 通用公共許可證（GPL），而不是以前的自行起草的許可證，原先的許可證不允許商業再分發。

1992 年 1 月 19 日，第一篇文章提交給新的新聞組 alt.os.linux 出現。1992 年 3 月 31 日，該新聞組更名為 comp.os.linux。

X Window 系統隨後被移植到 Linux 上，所以在 1992 年 3 月，Linux 0.95 是第一個能夠執行 X 的版本。從 0.1x 到 0.9x 的版本號大幅跨越是因為期望沒有大的缺失部分的版本 1.0 的即將出現。然而，這被證明是錯誤的。從 1993 年到 1994 年初，出現了 0.99 版本的 15 個開發版本。

1994 年 3 月 14 日，Linux 核心 1.0.0 釋出，共 176,250 行程式碼。隨後的 1995 年 3 月，有 310,950 行程式碼的 Linux 核心 1.2.0 釋出。

在 1996 年 6 月 9 日釋出的 Linux 核心 2.0 版本之後，以 2.0 為大版本的主要更新有如下這些：

1999 年 1 月 25 日 - 釋出 Linux 核心 2.2.0（1,800,847 行程式碼）
1999 年 12 月 18 日 - 針對 2.2.13 的 IBM 大型機補丁釋出，允許 Linux 核心用於企業級機器
2001 年 1 月 4 日 - 釋出 Linux 核心 2.4.0（3,377,902 行程式碼）
2003 年 12 月 17 日 - 釋出 Linux 核心 2.6.0（5,929,913 行程式碼）

從 2004 年開始，釋出過程發生了變化，新的核心每隔 2-3 個月定期釋出，編號為 2.6.0、2.6.1，直到 2.6.39。

2011 年 7 月 21 日，Torvalds 宣佈釋出 Linux 核心 3.0：“2.6. 的日子過去了”。與 Linux 2.6.39 相比，大的技術變化同版本躍升沒有關係；它標誌著核心的 20 週年紀念。基於時間的釋出過程保持不變。

2013 年 6 月釋出的 Linux 核心版本 3.10 包含 15,803,499 行程式碼，而 2015 年 6 月釋出的 4.1 版本已發展到超過 1950 萬行程式碼，由近 14000 名程式設計師貢獻。

1.1 塔能鮑姆 - 林納斯辯論

Linux 不是微核心架構的事實曾經引起了林納斯・託瓦茲與安德魯・斯圖爾特・塔能鮑姆之間一場著名的爭論。1992 年在 Usenet 討論群組 comp.os.minix 開始了一場網路論戰，討論的主題在於作業系統架構的選擇。稍後一些著名的駭客也加入討論，如大衛・米勒、曹子德。這場辯論影響了 Linux 核心的設計走向。塔能鮑姆認為 Linux 核心採用的宏核心已經過時了，應該採取比較先進的微核心架構，引起了林納斯的反擊。

在 2006 年 5 月 9 日，這個主題被重新審視，並且在 2006 年 5 月 12 日塔能鮑姆寫了一份立場宣告。

架構

Linux 是一個單體核心，支援真正的搶佔式多工處理（於使用者態，和版本 2.6 系列之後的核心態）、虛擬記憶體、共享庫、、共享寫時複製可執行體（透過）、記憶體管理、Internet 協議族和執行緒等功能。

裝置驅動程式和核心擴充套件運行於核心空間（在很多 CPU 架構中是 ring 0），可以完全訪問硬體，但也有運行於使用者空間的一些例外，例如基於 FUSE/CUSE 的檔案系統，和部分 UIO。多數人與 Linux 一起使用的圖形系統不執行在核心中。與標準單體核心不同，Linux 的裝置驅動程式可以輕易的配置為核心模組，並在系統執行期間可直接裝載或解除安裝。也不同於標準單體核心，裝置驅動程式可以在特定條件下被搶佔；增加這個特徵用於正確處理硬體中斷並更好的支援對稱多處理。出於自願選擇，Linux 核心沒有二進位制核心介面。

硬體也被整合入檔案層級中。使用者應用到裝置驅動的介面是在或目錄下的入口檔案。程序資訊也透過目錄對映到檔案系統。

2.1 程式語言

Linux 是用 C 語言中的 GCC 版（這種 C 語言有對標準 C 進行擴充套件）寫的，還有幾個用組合語言（用的是 GCC 的 "AT&T 風格"）寫的目標架構短段。因為要支援擴充套件的 C 語言，GCC 在很長的時間裡是唯一一個能正確編譯 Linux 的編譯器。有許多其他的語言用在一些方面上，主要集中在核心構建過程中（這裡指從原始碼建立可啟動映象）。包括 Perl、Python 和多種指令碼語言。有一些驅動可能是用 C++、Fortran 或其他語言寫的，但是這樣是強烈不建議的。

2.2 編譯器相容性

GCC 是 Linux 核心原始碼的預設編譯器。在 2004 年，Intel 主張透過修改核心，以便 Intel C++ 編譯器能正確編譯核心。在 2009 年，有透過修改核心 2.6.22 版而成功編譯的報告（並帶來平均 8-9% 效能增長）。

自從 2010 年，已經開始進行使用 Clang 建造 Linux 核心的努力，Clang 是一個可作為替代的 C 語言編譯器；截止 2014 年 4 月 12 日，官方核心幾乎可以完全用 Clang 編譯。致力於這個目標的計劃叫做 “LLVMLinux”，得名於 Clang 所基於的 LLVM 編譯器下部構造。LLVMLinux 不意圖複製 Linux 核心或 LLVM，因此它是由最終提交給上游計劃的補丁構成的一個元計劃。使 Linux 核心可以用 Clang 編譯最大的好處是比 GCC 有更快的編譯速度，核心開發者可以得益於由此而來的更快的工作流程。

2.3 介面

}}

符合標準是 Linux 核心內部的普遍策略。另一個規則是 Linux 核心主線不接受只由專有使用者空間軟體使用的核心模組。

2.3.1 核心至使用者空間 API

原始碼可移植性確保符合標準的 C 程式可以在符合同樣標準的任何系統上編譯和執行。Linux 核心開發、GNU C 函式庫和相關的實用工具致力於追隨 POSIX 和單一 UNIX 規範。是核心的系統呼叫介面。

2.3.2 核心至使用者空間 ABI

二進位制可移植性將保證任何程式在符合標準的給定硬體平臺上一旦編譯透過，可以在符合同樣標準的任何其他硬體平臺上以編譯後的形式執行。二進位制可移植性是在基於 Linux 核心的作業系統上建造獨立軟體供應商（ISV）應用有商業可行性的本質要求。現有唯一的二進位制相容標準是 Linux 標準規範（LSB）。

2.3.3 核心內 API

在不同子系統間使用了數個核心內部 API。其中一些是跨越多個發行版保持穩定的，另一些則不然。對於核心內 API 不作擔保。維護者和貢獻者可以在任何時候增加或變更它們。

核心內 API 的例子包括針對下列類別裝置驅動程式的軟體框架 / API：

Video4Linux 用於影片捕捉硬體。
高階 Linux 聲音體系（ALSA）用於音效卡。
用於網路介面控制器。
直接渲染管理器用於圖形加速器。
用於。
mac80211 用於無線網路介面控制器。

2.3.4 核心內 ABI

Linux 核心開發者選擇不維護穩定的核心內 ABI。

2.4 技術特性

2.4.1 搶佔式排程系統

在 Linux 核心儲存棧各層內的位置。

Linux 核心提供在特定條件下的搶先式排程。直到核心版本 2.4，只有使用者程序是搶先式的，就是說除了時間片用盡，在使用者模式下執行的當前程序，如果有更高態優先順序的程序進入 TASK_RUNNING 狀態，它就會被中斷。自從 2.6 系列 Linux 核心，增加了中斷執行核心程式碼的任務的能力，但不是對於核心程式碼的所有段落。

Linux 核心含有不同的排程器類。核心預設使用的排程機制叫做完全公平排程器，它介入於核心版本 2.6.23。這個預設排程器類在內部也叫做 SCHEDOTHER，而核心還含有兩個遵循 POSIX 的即時排程類，分別叫做 SCHEDFIFO（即時先進先出）和 SCHED_RR（即時輪流式），二者都優先於預設類。

透過使用即時 Linux 核心補丁 PREEMPT_RT，可以支援對關鍵段落、中斷處理器和 “中斷停用” 程式碼序列的完全搶先。 即時 Linux 核心補丁部分地整合入主線核心已經帶給它一些功能。搶先機制改善延遲、增進響應性，並使得 Linux 更加適合桌面和即時應用。老版本核心有所謂的，用於鎖定粒度為整個核心的同步，它最終由 Arnd Bergmann 在 2011 年移除了。

還有叫做的排程策略，實現了（EDF）演算法，它增加於 2014 年 3 月 30 日發行的核心版本 3.14。

2.4.2 可移植性

儘管林納斯・託瓦茲的初衷不是使 Linux 成為一個可移植的作業系統，今天的 Linux 卻是全球被最廣泛移植的作業系統核心。從行動電話到超級電腦，甚至於有人成功的將 Linux 核心在索尼出品的遊戲機 PS2 及 PS3 和微軟出品的遊戲機 Xbox 上使用。Linux 也是 IBM 超級計算機 Blue Gene 的作業系統。直至 2011 年 11 月，全球前五百大超級電腦（TOP500）有高達 91.4% 的比例採用 Linux 為它們的作業系統。一些為手機開發的作業系統，使用 Linux 核心的修改後的版本，其中包括谷歌 Android、Firefox OS、HP WebOS 和諾基亞 Maemo。

2.4.3 核心錯誤和 oops

在 Linux 中，核心錯誤（Kernel panic）是指作業系統在監測到核心系統內部無法恢復的錯誤，相對於在使用者空間程式碼類似的錯誤。作業系統試圖讀寫無效或不允許的記憶體地址是導致核心錯誤的一個常見原因。核心錯誤也有可能在遇到硬體錯誤或作業系統 BUG 時發生。在許多情況中，作業系統可以在記憶體訪問違例發生時繼續執行。然而，系統處於不穩定狀態時，作業系統通常會停止工作以避免造成破壞安全和資料損壞的風險，並提供錯誤的診斷資訊。

在 Linux 上，oops 即 Linux 核心的行為不正確，併產生了一份相關的錯誤日誌。許多型別的 oops 會導致核心錯誤，即令系統立即停止工作，但部分 oops 也允許繼續操作，作為與穩定性的妥協。這個概念只代表一個簡單的錯誤。當核心檢測到問題時，它會列印一個 oops 資訊然後殺死全部相關程序。oops 資訊可以幫助 Linux 核心工程師除錯，檢測 oops 出現的條件，並修復導致 oops 的程式錯誤。

2.5 安全

計算機安全是一個非常公眾化的主題，關係到 Linux 核心，因為大量在核心中的錯誤可能成為潛在的安全漏洞，是否允許提升許可權漏洞或拒絕服務攻擊源漏洞。在過去的幾年中，許多這樣的缺陷被發現，並在 Linux 核心中被修補好。新的安全功能被繼續實現，以解決在 Linux 核心中的電腦不安全問題。

批評者指責核心開發人員，稱他們掩蓋（至少並未公佈）安全漏洞。2008 年，作為回應，Torvalds 稱：「個人認為，安全漏洞只是『正常的漏洞』。這些漏洞我並不去掩蓋，不過我不認為應當把它們特殊化，更不認為應該追蹤並公示它們…… 我不理會整個安全團隊，原因之一就是，我認為這些漏洞不僅美化還鼓勵了錯誤的行為。這令安全人員成了『英雄』，就猶如不修補正常漏洞的人就不值一提似的。而事實上，所有無聊的正常漏洞極為重要，僅僅因為它們實在太多了。我不認為該美化和關心那些嚴重的安全漏洞 —— 它們並不及那些由死鎖造成的隨機嚴重崩潰來得更特殊。」

如 2012 年五月，SYSRET 指令被發現在 AMD 和英特爾處理器間在實現方面有差異，這個差異在 Windows、FreeBSD、XenServer 和 Solaris 這些主流作業系統會導致漏洞。2012 年六月，Linux 核心中該問題已被修復。

2021 年，來自明尼蘇達大學的研究人員，曾藉由貢獻修補程式至 Linux 核心的名義，利用修補程式匯入 Bug 和漏洞，以觀察 Linux 核心社群的反應，再度故技重施時被發現，之後維護人員封鎖了所有來自該大學的貢獻，與移除過去該大學曾經貢獻的程式碼。

開發

3.1 開發者社群

截止 2007 年，核心開發已經從 20 位最活躍開發者寫 80% 的程式碼轉變為頂端 30 人寫 30% 的程式碼，而頂端開發者花費更多的時間稽核變更。 開發者還可以按從屬關係來歸類；在 2007 年，頂端類屬是 “不知名” 而頂端公司是 Red Hat，它佔有 12% 的貢獻，而知名業餘愛好者佔 3.9%。 在 2007 年中所做核心變更已經由超過 1900 位開發者提交。一般假定 Linux 核心開發者社群由 5000 或 6000 名成員組成。

Linux 基金會發表的 2016 年 Linux 核心開發報告的更新表明，從版本 3.18（2014 年 12 月）至 4.7（2016 年 7 月）期間：平均每次發行有來自 200-250 個公司的大約 1500 位開發者作出貢獻。頂端 30 位開發者貢獻了稍大於 16% 的程式碼。在公司中，頂端貢獻者是 Intel（12.9%）和 Red Hat（8.0%），第三和第四位為 “none”（7.7%）和 “unknown”（6.8%）類屬。

3.2 開發過程與模式

一個想要對 Linux 核心進行修改的開發者一般就從對那個修改的開發和測試開始著手。接下來的過程取決於變化的重要程度，及修改該變更的子系統數量是由單個還是多個修補程式組成。如果僅僅是修改了由單個維護人員維護的單個子系統，那麼這些修改的補丁程式碼就直接透過 Cc 中某個郵件列表傳送給相關的維護人員。郵件列表的閱讀者和子系統的維護人員將檢查補丁程式碼並提供反饋。一旦審查過程完成，維護者接受他核心程式碼樹中的補丁。如果這些更改被認為是夠重要的錯誤修復，那麼包含這些修補程式的拉取請求（pull request）將在幾天內傳送給 Linus。否則，將在下一個合併視窗時向 Linus 傳送拉取請求。合併視窗通常會持續兩週，並在之前的核心版本釋出後立即啟動。

Linus Torvalds 擁有對 Linux 核心能夠接受哪些更改和誰可以成為維護者的最終決定權。核心維護者在他們自願放棄之前將維持他們的角色。目前，沒有任何已知的核心維護者被要求退出。此外，還沒有一個核心維護者因與其他維護者的互動風格的因素而受到 Linus 批評的例子。這為維護者提供了寬鬆的社群空間。雖然核心開發社群的文化多年來有所改善，但曾有一段時間它的聲譽很糟糕。認為自己遭受了不公正對待的開發者可以向 Linux 基金會的技術專家委員會報告。儘管如此，一些社群成員仍然不認同現在的討論氛圍。

3.2.1 同 Linux 發行版的關係

大多數 Linux 使用者執行一個由他們 Linux 發行版提供的核心。一些發行版搭載的是 Linux 的通用核心（也就是 “vanilla” 或 “stable”）版本。不過，一些 Linux 核心發行商（如 Red Hat 和 SUSE）會維護他們自己的核心分支。這些發行商分支的核心版本通常相對於穩定版本（vanilla）而言更新的速度更慢一些，但是同樣會包括所有相關的穩定版本分支的補丁。此外，他們同時也會增添一些新特性和對新硬體的支援，而這些支援是這些發行商分支基於的穩定分支所不包括的。

3.3 主線 Linux

包含 Linux 核心的 Linus Torvalds 的 Git 樹被稱為主線 Linux。每個穩定的核心釋出都源自主線樹，並經常在 kernel.org 上釋出。主線 Linux 只對執行 Linux 的眾多裝置中的一小部分裝置提供堅實的支援。非主線支援由獨立專案（如 Yocto 或 Linaro）提供，但在許多情況下需要裝置供應商的核心。使用供應商核心可能需要一個板級支援包。

在主線 Linux 之外維護一個核心樹已被證明是困難的。

主線化（Mainlining）是指將對裝置的支援新增到主線核心中的努力，而以前只有在分支中支援或根本沒有支援。這通常包括新增驅動程式或檔案。完成後，該功能或安全修復被視為 mainlined。

3.4 重新開發的估價

按照傳統商業軟體開發的方式，重新開發 Linux 2.6.0 核心的估計代價將是 6.12 億美元（4.67 億歐元、3.94 億英鎊），以 2004 年的 COCOMO 人月估計模型。在 2006 年，歐盟資助的一項研究表明，重新開發 Linux 2.6.8 以後的核心，代價是 8.82 億歐元（11.4 億美元、7.44 億英鎊）。

截至 2011 年 1 月 4 日，使用當前的程式碼行（LOC）和大衛・惠勒的計算工資數，這將花費約 30 億美元（約 22 億歐元），才能夠重新開發 Linux 的核心。

3.5 版本命名

Linux 核心有三個不同的命名方案。早期版本：第一個版本的核心是 0.01，其次是 0.02,0.03,0.10,0.11,0.12（第一 GPL 版本),0.95,0.96,0.97,0.98,0.99 及 1.0。，從 0.95 版有許多的補丁釋出於主要版本版本之間。

舊計劃（1.0 和 2.6 版之間)，版本的格式為 A.B.C，其中 A,B,C 代表：A 大幅度轉變的核心，這是很少發生變化，只有當發生重大變化的程式碼和核心發生才會發生，在歷史上曾改變兩次的核心：1994 年的 1.0 及 1996 年的 2.0； B 是指一些重大修改的核心，核心使用了傳統的奇數次要版本號碼的軟體號碼系統（用偶數的次要版本號碼來表示穩定版本）；C 是指輕微修訂的核心，這個數字當有安全補丁，bug 修復，新的功能或驅動程式，核心便會有變化。自 2.6.0（2003 年 12 月）釋出後，人們認識到，更短的釋出週期將是有益的。自那時起，版本的格式為 A.B.C.D，其中 A,B,C,D 代表：A 和 B 是無關緊要的，C 是核心的版本，D 是安全補丁。

自 3.0（2011 年 7 月）釋出後，版本的格式為 3.A.B，其中 A,B 代表：A 是核心的版本，B 是安全補丁。而 4.0（2015 年 4 月）釋出後，則延續 3.A.B 的命名格式，只是將主版號變更為 4。

法律層面

4.1 許可證

原先託瓦茲將 Linux 置於一個禁止任何商業行為的條例之下，但 0.12 版本之後改用 GNU 通用公共許可證第二版。 該協議允許任何人對軟體進行修改或發行，包括商業行為，只要其遵守該協議，所有基於 Linux 的軟體也必須以該協議的形式發表，並提供原始碼。

託瓦茲曾經公開聲稱將 Linux 置於 GNU 通用公共許可證之下是他一生中所做的 “最好的決定”。

4.1.1 GPL 第三版

Linux 核心明確地僅發表在 GNU 通用公共許可證（GPL）第二版下，而不向被許可方提供選擇 “任何更高版本” 的選項（這是常見的 GPL 擴充套件）。關於如何輕鬆地改變許可證以使用後來的 GPL 版本（包括第 3 版）以及這種更改是否合乎需要，存在著相當多的爭論。 託瓦茲本人在版本 2.4.0 的釋出中明確指出，他自己的程式碼僅在版本 2 下發布。然而，GPL 的條款規定，如果沒有指定版本，那麼可以使用任何版本；並且艾倫・考克斯指出，很少有其他 Linux 貢獻者指定了特定版本的 GPL。

2006 年 9 月，對 29 位關鍵核心程式設計師的調查顯示其中的 28 位更傾向於使用 GPL 第二版（GPLv2）而非當時的 GPL 第三版（GPLv3）草案。 託瓦茲評論說：“我認為一些外界人士...... 相信我才是那個古怪不合群的人，因為我這麼大張旗鼓地不做 GPLv3 的忠實粉絲。” 這些高水平的核心開發者就大眾媒體對 GPLv3 的反對發表了評論，其中包括林納斯・託瓦茲本人、葛雷格・克羅哈曼和安德魯・莫頓。他們提到有關 DRM/、專利及 “附加限制” 的條款，並警告 GPLv3 對 “開源宇宙” 的巴爾幹化。決定不採用 GPLv3 作為 Linux 核心許可證的託瓦茲在幾年後重申了他的批評。

4.1.2 韌體爭議

許可證爭議的一個重點是 Linux 使用韌體二進位包以支援某些硬體裝置。理察・馬修・斯托曼認為這些東西讓 Linux 某部份成為非自由軟體，甚至以此散佈 Linux 更會破壞 GPL，因為 GPL 需要完全可獲取的原始碼。

林納斯・託瓦茲及 Linux 社群中的領導者，支援較寬鬆的許可證，不支援理察・馬修・斯托曼的立場。社群中的 Linux-libre 提供完整的自由軟體韌體。

4.1.3 載入式核心模組許可證

另一個爭論點，就是載入式核心模組是否算是智慧財產權下的衍生創作，意即 LKM 是否也受 GPL 約束？託瓦茲本人相信 LKM 僅用一部分「公開」的核心介面，因此不算衍生創作，因此允許一些僅有二進位包裹的驅動程式或不以 GPL 宣告的驅動程式用於核心。但也不是每個人都如此同意，且託瓦茲也同意很多 LKM 的確是純粹的衍生創作，也寫下「基本上，核心模組是衍生創作」這樣的句子。另一方面託瓦茲也說過：

}}

特別像繪圖卡驅動程式就有非常大的爭議，也許到最後得由立法機關給個答案。

4.2 SCO 爭議

在 2003 年 3 月，SCO Group 對 IBM 提告，聲稱 IBM 將一些在 SCO 智慧財產權許可證保護下的 Unix 原始碼植入 Linux 中，破壞了 SCO 給予 IBM 的原始碼使用許可權。另外 SCO 也發出一大堆存證函給許多公司，警告他們在沒有 SCO 許可權的情況下使用了 Linux，此舉可能導致侵犯智慧財產權，並且以起訴為手段對個別使用者施壓。SCO 也同時對 Novell、戴姆勒克萊斯勒（DaimlerChrysler，在 2004 年 7 月被部份駁回）以及 AutoZone 提出告訴，且被 Red Hat 與其他反對 SCO 論點的公司反告。2007 年 8 月 24 日，聯邦法院審理 SCO 對 Novell 案（SCO v. Novell），法院認定 Novell 才是 Unix 商標的合法擁有者，而不是 SCO。2010 年 3 月 20 日，美國聯邦第十巡迴上訴法院宣判，Novell 才是 UNIX 與 UnixWare 商標的合法擁有者。此項判決宣佈後，已進入破產保護程式的 SCO 公司，決定停止繼續提出訴訟。