Nintendo WiiでMac OS Xをエンジニアリングなしに起動させるプロジェクトが公開された。実機上で直接動作させた点が特徴で、マウスとキーボードの入力にも対応したという。
米オンラインメディアのGigazineによると、エンジニアのブライアン・ケラー氏は9日、2001年に公開されたMac OS X「Cheetah」をWii上でネイティブ起動する実装を披露した。従来のように、まずWiiでLinuxを動かし、その上でMac OSを立ち上げる手法ではなく、Wiiの実機上でOSを直接起動させたとしている。
WiiではこれまでにもLinuxやNetBSD、Windows NTなどの移植例があるが、Mac OS Xをネイティブ動作させた事例は珍しい。ユーチューバーのマイケル・MJDがWiiでMac OS 9.2を動かした例はあるものの、こちらも仮想化ベースのアプローチだった。
ケラー氏がまず着目したのは、Wiiのハードウェア構成だ。CPUにはPowerPC 750CLが採用されており、AppleのG3 iBookに搭載されたPowerPC 750系の発展型に当たる。このため、Mac OS Xの動作に必要な基本アーキテクチャ要件を満たせると判断したという。
一方で、メモリ容量は大きな課題だった。Wiiのメモリは88MBで、Mac OS X「Cheetah」の最小要件とされる128MBには届かない。ただ、実際の起動に必要なメモリ量を検証した結果、64MB未満でも起動できるとの結論に至ったとしている。
ソフトウェア面では、Mac OS Xの中核コンポーネントであるDarwinがオープンソースで提供されている点を活用した。Darwinを改修してシステム起動の見通しを立てた後は、ブートローダーとドライバの開発に注力したという。
ブートローダーはppcskelをベースに新たに作成した。電源投入後の初期化とOSの読み込みを担うが、既存のMacとWiiではハードウェア構成が大きく異なることが障壁になった。従来のMacがPCIベースなのに対し、Wiiは「Hollywood」と呼ばれる独自SoCを中心に設計されているため、既存ドライバの流用は難しく、多くを新規に書き起こす必要があった。
映像出力の処理も課題だった。Wiiのビデオエンコーダはアナログテレビ信号の出力向けに最適化されており、フレームバッファには16ビットのYUVピクセルデータを必要とする。一方、Mac OS XはRGBピクセルデータを出力するため、ケラー氏は2つのフレームバッファを使い、毎秒60回の変換を行う構成で対応した。
その結果、システムはマウスとキーボードの入力にも対応する段階に達した。単に起動するだけのデモではなく、実際にMac OS Xとして操作できる状態だという。ケラー氏は「当初は本当に可能かどうかも分からなかったが、やり遂げたときの満足感は格別だった」とコメントしている。
今回の事例は、旧世代のゲーム機であるWiiでも、PowerPC系の基盤とオープンソースのカーネル資産を生かすことで、想定外のOS移植が可能であることを示した。同時に、エミュレーションに頼らない移植では、ブート処理やドライバ実装、映像出力の変換といった低レイヤーの調整が成否を左右することも改めて浮き彫りになった。