隨著科技發展,舊款遊戲機往往只能塵封於儲物櫃中,但對於「自製軟件」愛好者仍有無限可能。近日有開發者成功將 Apple 於 2000 年前發布的初代作業系統,移植至 2006年Nintendo Wii 主機上運行,並將完整方法上載至 GitHub 開源分享。

記憶體不足仍可運行
這次達成技術突破的開發者為 Bryan Keller。移植成功的關鍵在於硬件架構的共通性,Nintendo Wii 採用的 PowerPC 750CL 處理器,本質上是 PowerPC 750CXe 的升級版本,而後者正是當年 Apple G3 系列電腦,如 iBook 及部分 iMac 所使用的核心晶片。Bryan Keller 正是看準這種架構傳承關係,加上目睹有人成功將 Windows NT 移植至 Wii,才萌生將 Mac OS X 10.0(代號 Cheetah)帶到這台遊戲主機的念頭。

在移植過程中,最直觀的障礙是記憶體容量不足。Mac OS X 10.0 的官方最低要求為 128MB 記憶體,但 Nintendo Wii 的總記憶體僅有 88MB,且被分割為 24MB 的高速 1T-SRAM(MEM1)及 64MB 的低速 GDDR3 SDRAM(MEM2)。為了驗證可行性,Bryan Keller 事先利用 QEMU 模擬器在 64MB 記憶體環境下進行壓力測試,確認系統在極限環境下仍能運作,才正式展開實機開發工作。

自製啟動程式突破技術難關
為了突破技術難關,Bryan Keller 展現了深厚的底層開發功力。他不但自行編寫了自訂啟動程式(Bootloader,負責初始化硬件並引導系統運行的關鍵程式),還對 Apple 系統的核心「XNU」進行大量修改並重新編譯。同時,他亦為 Wii 的「Hollywood」系統單晶片(SoC)、SD 卡槽及 USB 1.1 介面撰寫專屬驅動程式,甚至在 IRC 聊天室中找回擁有 10 多年歷史的 USB 原始碼,才成功讓鍵盤與滑鼠正常運作。由於 Mac OS X 的底層核心 Darwin 是開源的,他只需修改開放源碼部分,而系統上層的閉源組件如 Quartz 圖像引擎、Dock 及 Finder,均無需修補即可直接運行。
10 多年計劃終告落實
Bryan Keller 早在 2013 年大學 2 年級時已有這個想法,但項目被擱置多年,直至去年見到 Windows NT 成功移植 Nintendo Wii 後才決定重啟。他投入程度極高,甚至在夏威夷度假期間仍帶着 Nintendo Wii 繼續開發。Mac OS X 10.0 Cheetah 首發距今已有 25 年,這台老舊主機能夠運行 Apple 作業系統,堪稱經典 Homebrew 成就。
技術愛好者可瀏覽 Bryan Keller 網誌閱讀詳細移植原理,或前往 GitHub 的 WiiMac 開源項目取得安裝檔案。
GitHub 連結:https://github.com/bryankeller/wiiMac
資料來源:Bryan Keller’s Dev Blog、MacRumors
