2001年发布的Mac OS X 10.0 Cheetah,在2024年被人装进了2006年发售的Wii游戏机。完成这件事的Bryan Keller,把整套设备塞进了去夏威夷的行李箱。
一台Wii的"基因突变"实验
Keller的灵感来自Windows NT移植Wii的先例。他盯上了Wii的PowerPC 750CL处理器——这恰是苹果G3 iBook/iMac所用PowerPC 750CXe的升级版。同源架构意味着理论可行性,但"能跑"和"能用"隔着一整座驱动开发的坟场。
他从头写了一个自定义引导加载程序(bootloader),这是系统启动的第一道关卡。内核层面,Keller必须给OS X的源代码打补丁,重新编译出能在Wii硬件上运行的修改版内核。
存储是第一个硬骨头。Wii的SD卡槽没有原生驱动支持,Keller写了自定义驱动让内核能识别并挂载文件系统。显示更麻烦:Wii的视频硬件与OS X图形代码存在色彩格式不兼容,他得在中间搭一座"翻译桥"——framebuffer驱动负责把OS X的界面输出到Wii的显示输出上。
USB外设的支持几乎让他翻遍互联网考古。最终在IRC频道里挖到了 decade-old 的OS X Cheetah USBFamily源代码,键盘鼠标才得以正常工作。
夏威夷的"移动开发环境"
项目推进到关键阶段时,Keller的假期到了。他没有选择暂停,而是把Wii整机打包带去夏威夷。海滩与调试终端的反差,大概是开发者版本的"带着工作旅行"。
成果是一台能完整运行Mac OS X Cheetah安装程序、支持键鼠操作的Wii。从引导加载到图形界面,从存储驱动到外设支持,每个环节都是手工缝合。
Keller把完整的技术文档和踩坑记录放在个人网站,项目源代码已上传GitHub。任何想复现的人都能按图索骥——当然,得先准备好面对PowerPC架构的古老脾气。
为什么是现在?
移植老系统到新(旧)硬件,从来不是实用主义驱动的项目。Windows NT移植Wii在先,Keller的OS X实验在后,这类项目的乐趣在于证明"封闭生态的边界是可以被重新定义的"。
Wii早已停产,Cheetah也早已停止维护。但PowerPC架构的遗产——从苹果2005年转向英特尔前的整个时代,到任天堂这款销量破亿的游戏机——在这种跨界实验中获得了奇怪的新生命。
Keller没有解释为什么选择夏威夷作为冲刺地点。或许只是日程巧合,或许调试内核崩溃时,窗外能看见海会让他少摔几次鼠标。他在博客里留下的技术细节足够完整,却对个人动机保持沉默。
GitHub仓库的README最后更新于项目完成后一周。有用户在issue区询问能否移植更新的OS X版本,Keller没有回复。Wii的硬件上限卡在那里,Cheetah之后的系统对内存和处理器的要求,这台积灰的白色方盒已经够不到了。
如果你手里还有一台Wii,会愿意花一个周末让它变成2001年的Mac吗?
热门跟贴