32 位元在 Linux 核心中的未來支援走向 (★
102 分)
Arnd Bergmann 在 2025 年歐洲開源峰會的演講中明確指出,32 位元系統已經不再適合用於任何新產品,目前維持其存在的唯一理由是支援仍在使用的舊硬體與軟體。Linux 桌面版大約在 20 年前已經全面轉向 64 位元,而行動裝置也早已跟進;若只考量桌面與伺服器領域,32 位元支援早就可以被移除。然而在嵌入式世界,仍有許多裝置依賴 32 位元的 Armv7 平台,因此短期內難完全捨棄。即便如此,新的 64 位元開發板的支援數量已經遠遠超過 32 位元板子,顯示趨勢已不可逆。
隨著越來越多非 Arm 架構的 32 位元處理器(如 arc、nios2、sparc/leon、xtensa 等)逐漸被 RISC-V 取代,32 位元在新產品中的角色正逐步式微。在維護面上,32 位元系統最大的痛點來自於「高階記憶體」(high memory)的支援,由於 32 位元位址空間不足,需要額外的技術與複雜性來管理超過 800MB 記憶體的系統。雖然 Linux 核心當前仍能支援高達 16GB 記憶體的 32 位元系統,但這些硬體極其罕見,因此預計未來將逐步放棄支援。研究中的替代方案包括「4G/4G」位址隔離模式與「densemem」模型,但成效仍未確定,另一種可能性則是將額外記憶體作為 zram 交換區使用。
除了記憶體問題,年 2038 問題(32 位元系統由於時間格式限制,將在 2038 年產生無法表示的日期錯誤)也是一大隱憂。雖然 Linux 核心端在 2020 年完成了修正,相關 C 函式庫如 musl 與 glibc 也已更新,但許多軟體套件與語言綁定仍存在漏洞,代表這場危機在軟體生態中尚未完全解決。另外,32 位元大端序(big-endian)支援也因 IBM 的大型機需求而延後移除。至於 i486、armv4 與早期 armv6 的支援,則被認為即將淘汰;Cortex-M 等 nommu(無記憶體管理單元)架構預計在 2028 年左右被清理出主線。
Hacker News 討論中,許多開發者認為對使用者端而言,最大需求來自舊 32 位元遊戲和部分無法重編譯的應用程式,這些程式可透過 Wine 或二進位翻譯在 64 位元上繼續執行。有開發者提到 Windows 早已用系統呼叫包裝層(syscall thunking)處理 32→64 的轉換,Linux 也許未來能採取相似機制。對嵌入式設備而言,也有人認為完全放棄 nommu 不甚合理,因為它象徵著能在最小資源硬體上跑 Linux 的可能性。然而,多數留言指出,維護這些古老架構的代價是增加核心開發難度,特別是與新功能(如記憶體管理)整合時往往需付出高額工程成本。
另一些觀點則偏向哲學層面,有人認為移除支援讓 Linux 聽起來像蘋果模式,基於產品路線而棄用硬體,而非真正技術上不可行。支持保留者主張「開源應該讓舊硬體能活得比商業利益更久」,甚至希望維持一個能涵蓋各種舊硬體的「萬用核心」。但也有人反對,認為對志願維護者來說,不該強迫社群背負開發者不願承擔的負擔;若使用者重視,可自行維護分支或使用舊版核心。整體而言,討論顯示社群在「保存兼容」與「降低維護負擔」之間存在拉扯,而隨著新硬體普及與舊裝置使用者逐漸減少,32 位元支援終將一步步淡出主線核心。
👥
88 則討論、評論 💬
https://news.ycombinator.com/item?id=45095475