
作者 | Artem S. Tashkinov 責編 | 蘇宓 出品 | CSDN(ID:CSDNnews)

流量監測機構 StatCounter 的最新資料表明,截至 2024 年 12 月,Linux 在全球桌面作業系統市場份額僅為 4.13%。這相較其在伺服器市場的廣泛應用,桌面端的表現可謂差強人意。那麼,是什麼原因導致了這一現狀?
近日,開源運動和開源專案的忠實支持者 Artem S. Tashkinov 釋出長文進行了解析,試圖解開其中的真相。

原文連結:https://itvision.altervista.org/why.linux.is.not.ready.for.the.desktop.final.html
以下為譯文:
多年前,我寫過一篇關於這個主題的文章(https://itvision.altervista.org/why.linux.is.not.ready.for.the.desktop.current.html),相較而言,那篇文章過於技術化、篇幅過長,還包含許多有爭議的觀點,因此我思考了很久,決定將其完全重寫,使其更易於非技術人士理解,並揭示出那些使 Linux 仍然難以匹配現代桌面 PC 的深層核心問題。
十多年前寫的初版文章曾頗受歡迎,但如今這個網站的訪問量非常少,因為 PC 已經或多或少地被淘汰了:世界上的大多數人都依賴智慧手機完成一切。而 PC 主要被企業、專業人士、硬核 PC 遊戲玩家以及 PC 發燒友所使用。
再次宣告,與舊文章一樣,我想明確一點:Linux 完全可以滿足你的某些需求,尤其是當這些需求主要集中在將電腦用作 Web 客戶端時。只需啟動 Firefox 或 Chrome 就可以搞定(當然,前提是你足夠幸運,系統上的硬體影片加速功能能夠正常執行。然而即使到了 2024 年,硬體加速仍然是個問題,而 Windows 早在近二十年前就幾乎完美解決了影片編碼和解碼加速問題)。
需要強調的是,這篇文章討論的是 Linux 發行版,而非特指 Linux 核心。單獨的 Linux 核心本身在沒有應用程式執行時是毫無用處的。
Linux 適合 IT 專業人士。這篇文章關注的是普通使用者的使用體驗,即那些不願接觸終端或學習 Shell 命令的使用者。
接下來,讓我們逐一討論以下核心問題。這些問題如果沒有人投入十億美元以上的資金,幾乎不可能得到解決:

Linux 並不是一個作業系統
當人們談論作業系統時,通常想到的是一個核心作業系統,配備大量的軟體,這些軟體可以在不同版本的作業系統上執行。例如,Windows 上的許多軟體即便是 20 年前開發的(沒錯,20 年!),在 Windows 11 或其當前版本中依然能正常執行。Android 15(截至 2024 年的最新版本)支援自 Android 7.0 起釋出的所有 Android 軟體,確保了超過 8 年的相容性。
實際上,你甚至可以安裝和使用更老的應用程式。而在 Windows 上,軟體相容性更是出色:許多 32 位的 Windows 95 軟體在接近 30 年後依然可以完美運行於 64 位的 Windows 11。Linux 上卻完全不存在這樣的情況。

這正是 Linux 發行版的問題所在。對 Linux 發行版來說,軟體的首選分發方式是為每個作業系統版本單獨編譯。而這種方式並不保證相容性,大多數時候,過去版本的軟體根本無法在你當前的 Linux 發行版上執行。
更糟糕的是,為當前版本的 Linux X 編譯的軟體,不一定能在當前版本的 Linux Y 上執行。Linux 發行版普遍要求所有軟體必須為其當前版本編譯,或者以原始碼形式提供。
然而,原始碼的難題在於:普通使用者不會願意自己編譯軟體,其次,即使有興趣,也不一定能成功編譯,因為軟體可能依賴於特定的編譯器或依賴庫,而你的發行版可能不提供這些資源。此外,各個發行版還需要維護者來支援這些軟體,如果沒有人願意承擔維護工作,你在該發行版中根本找不到所需的軟體。
當然,熟悉 Linux 的讀者可能會提到 Linux 提供了 Flatpak、Snap 和 AppImage。這些技術試圖解決軟體相容性問題,但我不會深入探討它們的不足(https://ludocode.com/blog/flatpak-is-not-the-future)。簡單來說,它們實際上是輕量級的虛擬機器。這些工具的核心原理並非真正解決相容性問題,而是透過讓使用者分配並執行大量的二進位制程式碼來規避問題,結果卻不必要地消耗儲存空間、CPU 和記憶體資源。更令人無語的是,你可以輕鬆地在 Windows 的 WSL(Windows Subsystem for Linux)中執行它們。那麼,最初為何要在電腦上安裝 Linux 呢?
此外,這些工具還有另一個主要問題:軟體必須被某人以輕量級虛擬機器的形式打包。只有最流行的軟體才會得到這樣的處理,因此那些曾經用過的冷門應用可能永遠無法使用。在 64 位 Windows 11 上,與此形成鮮明對比的是,過去 30 年中釋出的大多數軟體幾乎都能完美執行。我這裡並不是在討論遊戲(許多遊戲確實不相容),但這並非因為 Win32 的相容性差,而是因為當時的遊戲開發者沒有為未來做好準備。
換句話說,每個 Linux 發行版都是一個獨立的作業系統。至於普通使用者該選擇哪一個?沒有人能給出明確的答案,而且關於哪個發行版“更好”或“更合適”的爭論永無止境。
有人可能會反駁說:“這些問題根本不存在!”那麼,Linus Torvalds 這個名字你應該聽說過吧?他在 2014 年時幾乎和我說了同樣的話(https://youtu.be/5PmHRSeA2c8)!然而,從那時起情況有任何改變嗎?絕對沒有。
Linux 發行版之間唯一真正的相容性體現在它們使用相同的 Linux 系統呼叫(這部分內容具有一定技術性)。理論上,這意味著靜態連結的應用程式應該可以在所有發行版中通用。然而,現實中往往並非如此。例如,最近許多 Linux 使用者已經遷移到 Wayland,有些人甚至完全移除了 XWayland。結果是,靜態連結的 X11 應用程式無法再為這些使用者提供服務。類似地,隨著 Linux 的發展,許多技術已經被淘汰。
例如,基於 ESound 或 OSS 的應用程式如今無法使用,因為現代 Linux 發行版完全不再包含 ESound 或 OSS,無論是以模擬還是相容層的形式。再如,舊版系統中的 devfs、libc5 和 a.out 二進位制檔案也早已被淘汰,且沒有任何現代替代方案或向後相容支援。

QA/QC、Bug 和迴歸問題
你無需理解上述所有術語,但核心問題是:Linux 始終處於持續變化的狀態。
迴歸(問題重現)經常發生,因為 Linux 開發者很少甚至完全不花時間檢查他們的程式碼更改是否會引入迴歸或破壞原本正常的功能。他們通常只關注修復他們試圖解決的問題或實現的新功能。
不僅如此,Linux 核心開發者通常無法接觸到他們正在支援的所有硬體裝置。因此,對一個裝置的更改可能會影響到另一個開發者未能測試的裝置。例如,在 AMD GPU 的 Bug 追蹤器中,你會看到 AMD 開發者的宣告:“抱歉,我們沒有那種硬體,能否幫忙測試這個補丁?”
這種問題影響了多個 Linux 元件,從 Linux 核心到 MESA(圖形卡與作業系統之間的介面),甚至包括桌面環境。

軟體和遊戲的缺乏
絕大多數應用程式僅為 Windows 開發。至於遊戲,Linux 多年來幾乎沒有原生的 AAA 大作,使用者基數太小是主要原因。即便是 CS2(反恐精英2),雖然有 Vulkan 的 Linux 版本,但其效能遠不如原生 Windows 版本。此外,儘管 CS2 擁有數百萬玩家,但它很難被視為 AAA 大作,因為它基於已超過十年的 Direct3D 11,缺乏光線追蹤等現代光影技術。
的確,許多 Windows 遊戲可以透過 Wine + DXVK(Linux 上的 Win32 API 模擬)執行,但既然如此,直接用 Windows 不是更好嗎?
此外,很多遊戲永遠無法執行,尤其是那些擁有數百萬玩家的線上多人遊戲,因為它們需要核心級別的反作弊系統。典型的 Linux 使用者可能會說:“我不玩這些遊戲,你也不需要!去買個索尼 PlayStation 吧!”
但對於 Windows 使用者來說,幾乎所有的 Linux 應用程式都可以輕鬆執行。
更糟糕的是,Linux 缺乏某些非常基礎的應用程式,甚至連檢查系統性能是否正常的工具都沒有。

本地網路上的檔案和資料夾共享問題
Linux 沒有類似於 Windows 檔案共享的原生技術,既易於配置,又支援自動發現、加密和密碼保護。目前 Linux 使用的 Samba 技術在設定共享資料夾時非常麻煩,尤其是在使用 SE Linux(高階安全機制)的發行版中。使用者需要建立賬戶、分配和更改密碼,同時還要處理資料夾許可權問題。
一些極客聲稱 SSHFS 和 NFS 是很好的替代方案,但這些工具非常不友好,功能受限,設定過程需要大量精力並閱讀冗長的手冊。某些功能,比如使用者/組的細粒度控制,幾乎無法實現。
即使是 Samba,如果需要多個使用者和組的細粒度許可權控制,配置過程也非常複雜。更別提使用圖形介面了,這一切幾乎都要透過命令列完成。

資金不足
Linux 上的許多軟體都有大量 Bug 和功能缺失。這是因為 Linux 在桌面領域資 金嚴重不足。雖然 Linux 在伺服器領域無可匹敵,連續二十多年成為全球最流行的作業系統,但桌面領域的情況卻相當慘淡。
Linux 在伺服器上執行良好,主要是因為絕大多數資金都流向了伺服器領域。但桌面使用者需要面對顯示器工作,還要處理音訊輸入和輸出問題。
影響伺服器提供商(如 Google、Facebook 和 Netflix 等)的 Bug 通常會被立即修復,優先順序非常高。但影響 Linux 音影片子系統的 Bug 可能會持續數年。例如,Linux 音訊子系統的活躍維護者可能不超過兩人。

硬體支援與相容性
對於全新硬體,你可能會發現筆記本的 Wi-Fi 網絡卡、攝像頭、音訊甚至鍵盤無法正常工作。這是因為在 Windows 中有穩定的驅動 API(應用程式介面)和 ABI(應用程式二進位制介面),OEM 廠商可以從一開始就釋出驅動並確保正常執行。而在 Linux 中,硬體支援取決於你執行的核心版本。有時需要幾個月甚至幾年時間,Linux 才能支援你的硬體。
其次,OEM 廠商為 Linux 驅動工作的開發者數量通常比 Windows 少 10 到 100 倍。這意味著某些 Bug 可能會持續數月、數年,甚至永遠不會被修復,因為開發人員有更高優先順序的任務。
第三個問題是,Linux 程式設計師的數量不足以確保程式碼庫的更改完全無 Bug。
最後,由於 Linux 的驅動通常是核心的一部分(NVIDIA 等少數例外),你無法隨意升級到最新版本或降級到之前能用的版本。必須切換到另一個核心版本,這既麻煩又不總是可行。

偶然遇到的 Linux 安全性
Linux 在桌面上的安全性幾乎是“偶然的”或者“純靠運氣”。伺服器的情況稍微好些,但也需要由高水平專業人士來管理。以下是一些典型問題:
1. 大多數 Linux 使用者隨意使用 sudo 命令(授予系統完全訪問許可權),並不理解其必要性和用途。
2. Linux 缺乏完善的原生防毒軟體,無法透過沙盒或模擬等方式掃描惡意軟體。
3. 許多使用者從網上下載並執行軟體,但未驗證其是否安全。
4. 大多數 Linux 使用者會直接執行來自網上的命令,而不會確保這些命令的功能和安全性。
5.從內部來看,Linux 的安全機制非常複雜,或者用 AI 的話來說就是:“Linux 並不總是提供一個使用者友好的介面來即時處理許可權問題。”
6. 當你需要在使用者組之間正確共享資源時,祝你好運,試著設定好目錄和檔案的許可權吧。
7. 許多 Linux 使用者停用了 Secure Boot,原因如下:
– 第三方軟體需要 Linux 核心驅動,而使用這些軟體的複雜性極高。
– 無法寫入 MSR CPU 暫存器。
我把上面列出的內容交給了一款 AI 工具來作答,AI 的回答是:“這些問題部分屬實,責任主要在缺乏經驗的使用者,使用者需要使用他們的軟體儲存庫。” 好吧,那我們來看看:
-
你的發行版中經常沒有你需要的所有軟體。有時你需要的軟體版本也不可用,那該怎麼辦?多個 NPM、Python 和 Ruby 倉庫中已經出現了成百上千的惡意軟體。
-
在 Windows 中,你有使用者賬戶控制(UAC)。而在 Linux 中,你必須對系統的工作原理有深入瞭解,才能避免意外用 sudo 執行“惡意”命令。這大幅提 高了使用 Linux 的門檻,對非技術使用者來說非常不友好。
-
支援 Secure Boot 的 Linux 發行版通常拒絕使用自己的證書對第三方驅動簽名。使用者只有兩個選擇:要麼安裝自己的 MOK 證書(一個複雜且容易出錯的過程),要麼直接在 BIOS 中停用 Secure Boot。這算不算 Linux 的問題?有時候算。而啟用 Secure Boot 時限制對 MSR 暫存器的訪問?這就更沒意義了,因為在 Windows 中仍然可以使用這些功能。
“歸根結底,這些問題是真實存在的,但並非不可解決。它們反映了 Linux 在易用性和相容性上的改進空間,同時也突出了使用者教育的重要性。”
然而,我奇怪的是,Windows、iOS、macOS 或 Android 似乎並不需要太多“教育”。也許,這只是因為某些東西的設計本身存在缺陷?

Linux 社群
可以肯定的是,你在使用 Linux 時一定會遇到問題。而當你試圖尋求幫助時,就會見識到 Linux 社群的“真面目”。根據我在過去 25 年網際網路經歷中的觀察,Linux 社群有時會顯得格外具有挑戰性,甚至是令人不悅的。
以下是你在提問時最有可能收到的“回答”:
-
你使用了錯誤的 Linux 發行版。
-
你使用了錯誤的 Linux 核心版本。
-
你的硬體不合適。
-
你使用 Linux 的方式不對。
-
你的需求太多了,或者你不需要它(比如想玩帶核心級反作弊的 Windows 線上遊戲)。
-
自己除錯或修復吧,“你是免費用的,還想怎樣?”

總結
或許你會說:“Linux 絕對適合我,對我來說完全沒問題。”當然,這種情況對於很多個人而言也普遍存在。但是,每個人的需求可能不同。例如,有人可能希望在 Linux 上執行舊軟體。
而且,你是否認為自己是極客?很有可能是的。那麼,對於那些普通使用者來說呢?他們可能既不想接觸終端,也不想研究 Linux 的複雜性。他們只想安裝、執行,而不需要多想。
好吧,那麼該如何解決這些問題?早期的文章對此問題有過專門的討論:https://itvision.altervista.org/why.linux.is.not.ready.for.the.desktop.current.html#Solving_Linux。
如果需要更技術性的解讀,可以參考以下文章:《2023 年 Linux 桌面端的主要問題》(https://itvision.altervista.org/why.linux.is.not.ready.for.the.desktop.current.html)。
作者:Artem S. Tashkinov 是開源運動和開源專案的忠實支持者。他參與了多個開源專案(如 Linux 核心、KDE、Wine、GCC、Midnight Commander 和 X.org 等)的 Bug 修復。他自 1999 年起開始專用 Linux 發行版。
官方站點:www.linuxprobe.com
Linux命令大全:www.linuxcool.com

劉遄老師QQ:5604215
Linux技術交流群:2636170
(新群,火熱加群中……)
想要學習Linux系統的讀者可以點選"閱讀原文"按鈕來了解書籍《Linux就該這麼學》,同時也非常適合專業的運維人員閱讀,成為輔助您工作的高價值工具書!