蘋果系统在遊戲主機上運行,這聽起來像天方夜譚,但開源開發者 Bryan Keller 做到了。近期他成功將蘋果早在 2001 年發布的經典作業系統 Mac OS X 10.0「Cheetah」移植到任天堂 Wii 主機上,讓這台 2006 年推出的老遊戲機搖身一變成為可正常運作的 Mac 系統,整個專案細節更在 Hacker News 上引發熱烈討論。

靈感來自前人 鎖定 PowerPC 架構
這項移植計畫的起點,源自 Keller 在網路上看到有人成功將 Windows NT 移植到 Wii 的新聞。身為開發者的他隨即產生一個念頭:既然 Wii 採用的是 IBM PowerPC 架構處理器,而蘋果當年的 Mac 系統同樣使用 PowerPC 架構,那麼把 Mac OS X 移植過去在理論上並非不可能。
支撐 Keller 這個大膽假設的硬體基礎,在於 Wii 使用的 PowerPC 750CL 處理器,與蘋果當年在 G3 iBook 與 iMac 中採用的 PowerPC 750CXe 處理器有著血緣關係。兩款處理器皆基於同一家族架構,這讓 Keller 預感這項挑戰「有望成功」。
核心移植:修改 Darwin 核心與編譯自訂內核
根據 Keller 在個人部落格上的詳細分享,整個移植過程涉及多個艱鉅的技術關卡。他首先對 OS X 核心原始碼進行了必要的修補,並編譯出一個經過客製化的核心二進位檔案。這是整個專案最關鍵、也是難度最高的步驟。
Keller 在部落格中提到:「理論上,如果我能夠修改足夠多的開源部分讓 Darwin 核心運行起來,那麼封閉原始碼的部分應該不需要額外修補就能直接運行。」然而現實並非如此順利,在成功讓核心啟動之後,他還需要應對大量手動處理的工作。
驅動程式難題:SD 卡、顯示與 USB 全面客製化
核心問題解決後,Keller 必須為 Wii 編寫一系列自訂驅動程式,才能讓 OS X 真正在這台遊戲主機上運作。首先是 SD 卡驅動:他撰寫了專屬驅動程式,讓核心能夠透過 Wii 的 SD 卡插槽讀取資料,進而完成檔案系統的啟動程序。
顯示輸出則是另一大挑戰。Wii 的影片硬體與 OS X 圖形程式碼在色彩處理上存在不相容性:Wii 預期的是類比視訊訊號,而 Mac 則輸出標準 RGB 數位訊號,導致 OS X 最初啟動時畫面呈現色彩失真。對此 Keller 必須同時處理兩組 framebuffer:一組供 Mac OS X 內部使用的 RGB framebuffer,以及另一組專為 Wii 視訊輸出設計的 YUV framebuffer,兩者之間還需要手動進行色彩格式轉換。
最後則是 USB 支援。Keller 需要讓外接鍵盤與滑鼠能夠正常運作,這涉及修改蘋果的 AppleUSBOHCI 驅動程式來支援 Wii 的 USB 1.1 控制晶片。然而,由於 OS X 早已結束支援,原始驅動程式碼早已無處可尋。最終 Keller 靠著在 IRC 聊天室四處詢問,找到了年代久遠的 OS X Cheetah USBFamily 原始碼,才順利完成這塊拼圖。
硬體限制超乎預期:RAM 不足仍是最大瓶頸
即使軟體層面一一突破,Wii 的硬體規格仍是無法迴避的先天限制。Wii 僅配備 88 MB 的記憶體,而 Mac OS X 10.0 Cheetah 官方規定的最低需求為 128 MB,兩者相差達 40 MB。這意味著 Keller 必須想方設法最佳化記憶體使用,才能讓系統勉強運作。對此,Keller 前期開發幾乎全程依靠另一台 MacBook 筆記型電腦進行,直到後期才逐步除錯出能在 Wii 本機上正常運作的環境。
度假也要帶著 Wii 跑程式 毅力與熱情完成不可能任務
移植過程漫長且挫折不斷,但 Keller 的投入程度絲毫未減。據報導,他甚至在前往夏威夷度假時也隨身攜帶 Wii 主機,利用假期時間繼續進行調試與完善工作。經歷多重技術關卡之後,Mac OS X Cheetah 的安裝程式終於成功在 Wii 上運行,鍵盤與滑鼠均可正常使用。Wii 就這樣從一台純遊戲主機,變身為可實際操作的蘋果作業系統裝置。
完整開源 有興趣的開發者也可自行嘗試
Keller 將整個專案的完整原始碼公開在 GitHub 上,有興趣的開發者可直接取用嘗試在 Wii 上安裝 OS X。同時,他在個人網站上也詳細記錄了每一個技術難關的解決過程,是理解這項移植工程的重要參考資源。在此之前,Linux、NetBSD、Windows NT 都曾被移植到 Wii 上,如今再加上 Mac OS X 10.0 Cheetah,代表 Wii 已可說是運行最多作業系統的單一遊戲主機硬體平台。一個專為客廳娛樂打造的遊戲機,如今成為了開源移植愛好者眼中的「終極測試平台」,或許這正是 Wii 當年問世時未曾預見的另類遺產。


