Linux為什么還沒準備好成為桌面操作系統?
當前位置:點晴教程→知識管理交流
→『 技術文檔交流 』
作者 | Artem S. Tashkinov 責編 | 蘇宓 出品 | CSDN(ID:CSDNnews) 以下為譯文: 多年前,我寫過一篇關于這個主題的文章(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 年的兼容性。
這正是 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 的回答是:“這些問題部分屬實,責任主要在缺乏經驗的用戶,用戶需要使用他們的軟件存儲庫。” 好吧,那我們來看看:
“歸根結底,這些問題是真實存在的,但并非不可解決。它們反映了 Linux 在易用性和兼容性上的改進空間,同時也突出了用戶教育的重要性。” 然而,我奇怪的是,Windows、iOS、macOS 或 Android 似乎并不需要太多“教育”。也許,這只是因為某些東西的設計本身存在缺陷?
Linux 社區 可以肯定的是,你在使用 Linux 時一定會遇到問題。而當你試圖尋求幫助時,就會見識到 Linux 社區的“真面目”。根據我在過去 25 年互聯網經歷中的觀察,Linux 社區有時會顯得格外具有挑戰性,甚至是令人不悅的。 以下是你在提問時最有可能收到的“回答”:
總結 或許你會說:“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)。 該文章在 2025/1/8 11:04:39 編輯過 |
關鍵字查詢
相關文章
正在查詢... |