隨著科技發展,舊款遊戲機往往只能塵封於儲物櫃中,但對於「自製軟件」愛好者仍有無限可能。近日有開發者成功將 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 連結:
資料來源: 、