Linux內核開發者Dmitry Torokhov最近提交了一個補丁,目標不是最新的服務器芯片,也不是某款旗艦GPU,而是1998年上市的世嘉Dreamcast游戲機。他修的是這臺老主機在Linux下的輸入崩潰問題——一插鼠標,系統就可能掛掉。
這件事聽起來有點荒誕:一個現代操作系統內核,竟然還在給二十多年前的停產硬件修bug。但如果你翻過Linux的硬件兼容列表,就會發現這類“活化石”支持一直存在,甚至還在迭代。內核社區里有一群固執的維護者,只要他們還在意,再偏門的設備也會跟著新版本一起往前走。
![]()
Tom's Hardware發現,這個修復已經被合并到Linux 7.2的第三個發布候選版(RC3)。發布候選版是內核上線前的關鍵測試階段,公眾可以提前構建、跑測并提交缺陷報告,通常要迭代十輪左右才會推出正式版。在RC3這個節點合入Dreamcast相關改動,說明社區認為它值得在7.2周期內解決。
具體修了什么?補丁記錄了兩項改動。第一項是修復Dreamcast的Maple鼠標驅動在打開設備時崩潰的問題,原因在于驅動數據缺失。直白點說,當系統試圖把設備文件暴露給用戶態時,內核需要綁定的內部數據結構沒準備好,一旦訪問就觸發空指針或野指針,直接panic。
第二項涉及排序策略。鍵盤、鼠標、搖桿這三類Maple外設驅動,都要先設置好驅動私有數據,再觸發設備注冊。如果順序反了,注冊動作可能搶占執行,新創建的設備節點還沒來得及掛上驅動上下文,就暴露給了系統其他部分,引發競態條件。這種“先有雞還是先有蛋”的時序bug,在老舊驅動里很常見,因為當初的代碼往往假設單線程、慢速總線,沒考慮現代內核的高并發場景。
Maple是啥?它是Dreamcast用來連接外設的總線系統,鍵盤、鼠標、手柄、VMU記憶卡都走這條通道。Linux對Maple的支持早在多年前就寫進了主線,只不過大多數用戶是在模擬器或極客改裝項目里才會碰到。能有人在2026年的RC階段對著這個驅動測輸入,本身就是一個微妙的信號:哪怕是跑在實機上的Linux/Dreamcast用戶數量極少,但維護者的熱情還在。
把這件事放進更大的背景看,Linux社區對待遺留硬件的態度一直很明確:有人干活,就接著支持;沒人接手,就悄無聲息地移除。就在不久前的7.1版本里,i486處理器的支持被正式放棄。不是因為再也不會有486主板點亮Linux,而是維護那套代碼的工作量與實際使用規模嚴重不匹配,核心開發者們覺得繼續扛著不劃算。
Dreamcast能在這種淘汰邏輯里留下來,靠的是有一群逆向工程愛好者持續提供補丁。他們可能不會去Linux基金會的活動上發言,但會默默跟蹤每個RC的更新,在dmesg里發現紅字就立刻翻規格書和電路圖。Torokhov這次提交的修復,也許就是其中某位玩家先撞上的。
反過來看,這類補丁對主線內核的副作用幾乎為零。驅動本身很小,編譯開關默認不開啟,除了給維護者帶來一點郵件流量,不會拖累任何現代設備的性能。而它帶來的情緒價值卻很足:每次內核發布、每次新增硬件支持列表,總有人在論壇貼出截圖,證明自己的老家伙又活過了一個版本。
技術上,競爭條件修復的通用性還有額外收益。順序設置驅動數據與設備注冊的模式,不只是Maple驅動才有的坑,其他老總線的輸入子系統也容易踩。一個對Dreamcast代碼的清理,可能會變成范本,幫助那些同樣在USB、PS/2時代之前的邊緣設備獲得更穩定的驅動框架。
當然,這些改動不可能讓Dreamcast成為主流Linux平臺。打開設備依然要忍受難以啟齒的性能,也沒有瀏覽器能流暢跑現代網頁。但“能用”和“好用”之間,Linux社區永遠為前者留
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.