2024年,有人把2024年的操作系統(tǒng)裝進(jìn)了1987年的CPU。不是懷舊,不是收藏,是正經(jīng)的移植工程。OpenBSD開發(fā)者在摩托羅拉88000處理器上跑通了完整系統(tǒng),這顆芯片比Linux誕生還早4年。
這事聽起來像極客圈的行為藝術(shù),但代碼提交記錄寫得清清楚楚:支持MVME187單板計算機,修復(fù)中斷處理,解決虛擬內(nèi)存映射。沒有發(fā)布會,沒有通稿,只有郵件列表里幾行冷靜的提交說明。
一顆"死透"的芯片,為什么還有人碰
摩托羅拉88000系列1988年量產(chǎn),定位是跟英特爾80386、MIPS R3000掰手腕的精簡指令集處理器。蘋果曾考慮用它替代68000,摩托羅拉自己拿它做電信基站,Data General造過服務(wù)器。然后就沒有然后了——1990年代中期停產(chǎn),2000年前后徹底退出歷史舞臺。
現(xiàn)在能見到的88000機器,基本是博物館藏品或廢品站的電子垃圾。MVME187是摩托羅拉VME總線單板機,當(dāng)年賣幾千美元,如今eBay上掛兩百刀沒人問。
OpenBSD開發(fā)者M(jìn)ark Kettenis在郵件列表里解釋過動機:「這些板子還在運行關(guān)鍵基礎(chǔ)設(shè)施,比如某些電信設(shè)備和工業(yè)控制系統(tǒng)。」換句話說,有人還在用,而且指望不上原廠支持。
開源社區(qū)有個不成文的規(guī)矩:只要還有人用,代碼就不該爛掉。88000的OpenBSD移植不是從零開始——NetBSD十年前就有支持,但維護(hù)者流失,代碼腐爛。Kettenis做的是搶救性考古,把能用的撿起來,不能用的重寫。
移植一個操作系統(tǒng),到底要改多少
現(xiàn)代操作系統(tǒng)假設(shè)硬件至少提供這些:內(nèi)存管理單元(MMU,Memory Management Unit)、可編程中斷控制器、原子操作指令。88000都有,但實現(xiàn)方式像來自平行宇宙。
舉個例子:88000的頁表遍歷用硬件完成,這聽起來是好事,直到你發(fā)現(xiàn)它不支持某些現(xiàn)代虛擬內(nèi)存特性。OpenBSD的頁錯誤處理代碼需要大改,不是修bug,是重新理解1980年代的內(nèi)存設(shè)計理念。
中斷處理更麻煩。88000沒有統(tǒng)一的中斷架構(gòu),不同板子用的中斷控制器五花八門。MVME187用的是Motorola自己的芯片,文檔要么缺失,要么寫在軟盤里。Kettenis的解決方法是:讀NetBSD的老代碼,對比硬件手冊的PDF掃描件,再用示波器驗證。
工具鏈?zhǔn)橇硪粋€深坑。GCC早就刪掉了88000后端,OpenBSD的移植團隊得維護(hù)一套復(fù)古編譯器。他們用的是GCC 3.3.6,最后一個支持m88k的版本,發(fā)布于2006年。新代碼用老編譯器編譯,在老硬件上跑,調(diào)試靠串口打印——沒有JTAG,沒有仿真器,printf就是全部。
最諷刺的是性能優(yōu)化部分。88000的指令流水線設(shè)計超前于時代,但分支預(yù)測基本靠猜。現(xiàn)代編譯器的優(yōu)化策略反而會讓它更慢,開發(fā)者得手動調(diào)整,用更"笨"的代碼生成換取更確定的執(zhí)行時間。
誰在真正使用這些老機器
電信行業(yè)是最大存量。某些SS7信令網(wǎng)關(guān)、基站控制器還在跑88000,運營商的替換周期以十年計。工業(yè)控制領(lǐng)域也有,比如某些電廠的SCADA系統(tǒng)、制造廠的PLC(可編程邏輯控制器,Programmable Logic Controller)背板。
這些系統(tǒng)的共同特點:停機成本極高,遷移風(fēng)險未知,原廠商要么倒閉要么拒絕維護(hù)。OpenBSD的移植給了運維團隊一個選項——不換硬件,換軟件,把閉源的VxWorks或?qū)S械哪ν辛_拉系統(tǒng)換成開源的、可審計的、社區(qū)維護(hù)的。
安全是核心驅(qū)動力。2024年的漏洞掃描工具不認(rèn)識1980年代的實時操作系統(tǒng),但認(rèn)識OpenBSD。統(tǒng)一的代碼庫意味著安全補丁可以同步推送,而不是等原廠商的傳真通知。
郵件列表里有個細(xì)節(jié):某位開發(fā)者提到他管理的88000設(shè)備還有17臺,分布在3個州的變電站。原系統(tǒng)最后一次更新是2004年。他現(xiàn)在用OpenBSD的snapshot鏡像做測試,計劃明年批量遷移。
復(fù)古計算的另一面:不是懷舊,是務(wù)實
開源社區(qū)里做復(fù)古移植的人不少,動機分幾種。有的是收藏玩家,想讓老機器跑現(xiàn)代軟件;有的是學(xué)術(shù)目的,研究計算機歷史;OpenBSD的88000項目屬于第三種:基礎(chǔ)設(shè)施維護(hù)者的自救。
這種務(wù)實風(fēng)格很OpenBSD。這個操作系統(tǒng)以安全著稱,但也以"只支持有人維護(hù)的硬件"著稱。他們刪掉過對很多老架構(gòu)的支持,包括某些1990年代的RISC處理器。88000能留下,是因為真的有人在用,而且愿意投入開發(fā)時間。
項目的技術(shù)債務(wù)也很真實。88000的代碼量在OpenBSD內(nèi)核里占比不到0.5%,但維護(hù)它需要專門的知識結(jié)構(gòu):既要懂現(xiàn)代操作系統(tǒng)的內(nèi)存管理,又要讀得懂1980年代的微架構(gòu)手冊。培養(yǎng)一個這樣的開發(fā)者,時間成本以年計。
Kettenis在提交記錄里寫過:「希望這能讓這些板子再多撐幾年。」沒有豪言壯語,沒有技術(shù)愿景,就是一個運維工程師的樸素愿望——讓已經(jīng)存在的東西繼續(xù)工作。
2024年12月的最新提交顯示,88000的OpenBSD已經(jīng)能穩(wěn)定運行X Window系統(tǒng),支持網(wǎng)絡(luò)棧,可以當(dāng)作一臺功能完整的Unix工作站使用。開發(fā)者還在調(diào)試SMP(對稱多處理,Symmetric Multi-Processing)支持,讓多處理器版本的MVME187能用上全部算力。
37年前的芯片,2024年的系統(tǒng),中間隔著整個互聯(lián)網(wǎng)革命。這種組合不會成為主流,但它證明了一件事:軟件維護(hù)可以比硬件壽命更長,只要有人愿意接手。
最后留個問號:你所在的公司,有沒有還在跑的老系統(tǒng)?它們還能找到維護(hù)者嗎,還是已經(jīng)變成無人敢碰的黑箱?
特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺“網(wǎng)易號”用戶上傳并發(fā)布,本平臺僅提供信息存儲服務(wù)。
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.