- 元発言: https://x.com/blk19_/status/2041917660582359226
- 元記事: Porting Mac OS X to the Nintendo Wii
- リポジトリ: wiiMac bootloader
Bryan Keller 氏による、2026年4月のプロジェクト報告のまとめ。2021年に「可能性はゼロ」と断言された Mac OS X の Wii への移植を、低レイヤーのエンジニアリングによって実現した。
移植にあたって、まずハードウェアとソフトウェアの両面から実現可能性を調査した。
- CPU: Wii の PowerPC 750CL は G3 Mac で採用されていた 750CXe の進化形であり、命令セットレベルで互換性がある。
- RAM: Wii のメモリは計 88MB (24MB MEM1 + 64MB MEM2) と特殊だが、Mac OS X Cheetah は公式要件 (128MB) 未満の 64MB でも QEMU 上で動作することが確認された。
- ソフトウェア: Mac OS X の基盤である Darwin (XNU カーネルおよび IOKit ドライバモデル) はオープンソースであり、これらを Wii 向けに調整できれば、クローズドソースの上位レイヤー (Quartz, Finder 等) も動作する可能性が高い。
実機の Mac が使用する Open Firmware や BootX を移植するのではなく、最小限のセットアップを行うカスタムブートローダーをスクラッチで作成する戦略をとった。
- 役割: ハードウェアの初期化、SD カードからの Mach-O 形式カーネルの読み込み、デバイスツリーの構築、カーネルへの制御移譲。
- デバッグ: 最初期は画面出力やシリアルデバッグが使えないため、Wii の前面パネル LED を点滅させるバイナリパッチをカーネルに適用して進捗を確認した。
カーネルが起動した後の互換性問題を解決するため、XNU のソースコードに修正を加えた。
- メモリレイアウト: Wii 特有のメモリ配置 (0x00... および 0x10...) に対応させるため、カーネルの BAT (Block Address Translation) 設定を修正した。
- デバイスツリー: Wii Linux プロジェクトを参考に、Wii のハードウェア構成を示すデバイスツリーを構築し、ブート引数としてカーネルに渡した。
- 開発環境: QEMU 上で動作する Cheetah ゲストから NFS 経由でホスト上のソースをビルドする環境を構築した。
Mac OS X のドライバモデルである IOKit を用い、Wii 固有のハードウェアに対応するドライバを実装した。
- Hollywood ドライバ: Wii の SoC である Hollywood を管理するドライバ。その配下に SD カードなどの各デバイス用の「nub (アタッチポイント)」を作成する。
- SD カードドライバ: Wii の Starlet コプロセッサ上で動作する MINI OS と IPC 通信を行うことで、SD カードの読み書きを実現した。PowerPC と ARM (MINI) 間のキャッシュコヒーレンシ問題を解決する必要があった。
- フレームバッファドライバ:
- Wii のビデオエンコーダは YUV 形式を期待するが、Mac OS X は RGB 形式を期待する。
- この不一致を解消するため、RGB 用と YUV 用の 2 つのフレームバッファを持ち、毎秒 60 回ソフトウェアで変換を行う「デュアルフレームバッファ」方式を採用した。
キーボードとマウスによる操作を可能にするため、USB (OHCI) ドライバの移植に取り組んだ。
- ソースコードの不在: Cheetah 時代の
IOUSBFamilyソースは Apple から公開されておらず、当初はバイナリパッチや Jaguar (10.2) 以降のソースでの解析を試みたが難航した。 - コミュニティの助け: IRC を通じて Cheetah 用のソースコードを入手することに成功し、Wii の「ハードウェアによるエンディアン・スワップ」という特殊な仕様に合わせてドライバを修正・ビルドした。
- ブートメニュー: Apple Partition Map (APM) を解析し、SD カード内の複数のパーティション (インストーラ用、システム用など) を選択して起動できるようにした。
- ドライバ注入: ブートローダーがカーネル拡張 (kext) をメモリ上にロードし、デバイスツリー経由でカーネルに渡す仕組みを構築した。これにより、OS のパーティションを無改造のまま使用することが可能になった。
10 年以上温めていたアイデアが、Wii 上での Windows NT 移植の成功に刺激されて結実した。低レイヤーの深い理解と、コミュニティの協力により、Wii は完全に動作する Mac OS X マシンへと変貌を遂げた。