I Ported Mac OS X to the Nintendo Wii

https://news.ycombinator.com/rss Hits: 49
Summary

Porting Mac OS X to the Nintendo Wii Mac OS X 10.0 (Cheetah) running natively on the Nintendo Wii Since its launch in 2007, the Wii has seen several operating systems ported to it: Linux, NetBSD, and most-recently, Windows NT. Today, Mac OS X joins that list. In this post, I’ll share how I ported the first version of Mac OS X, 10.0 Cheetah, to the Nintendo Wii. If you’re not an operating systems expert or low-level engineer, you’re in good company; this project was all about learning and navigating countless “unknown unknowns”. Join me as we explore the Wii’s hardware, bootloader development, kernel patching, and writing drivers - and give the PowerPC versions of Mac OS X a new life on the Nintendo Wii. Visit the wiiMac bootloader repository for instructions on how to try this project yourself. Feasibility Investigation Before figuring out how to tackle this project, I needed to know whether it would even be possible. According to a 2021 Reddit comment: There is a zero percent chance of this ever happening. Feeling encouraged, I started with the basics: what hardware is in the Wii, and how does it compare to the hardware used in real Macs from the era. Hardware Compatibility The Wii uses a PowerPC 750CL processor - an evolution of the PowerPC 750CXe that was used in G3 iBooks and some G3 iMacs. Given this close lineage, I felt confident that the CPU wouldn’t be a blocker. As for RAM, the Wii has a unique configuration: 88 MB total, split across 24 MB of 1T-SRAM (MEM1) and 64 MB of slower GDDR3 SDRAM (MEM2); unconventional, but technically enough for Mac OS X Cheetah, which officially calls for 128 MB of RAM but will unofficially boot with less. To be safe, I used QEMU to boot Cheetah with 64 MB of RAM and verified that there were no issues. Other hardware I’d eventually need to support included: Serial debug output via a USB Gecko The SD card for booting the rest of the system once the kernel was running Interrupt controllers Video output via a framebuffer that live...

First seen: 2026-04-08 16:25

Last seen: 2026-04-09 17:42