Using QEMU to explore the Mac OS Nanokernel

The beauty of the internet: there’s always someone else who is also interested in the things you’re interested in. It turns out, even people who are working on trying to bring Mac OS 9 to the PowerPC G5 can find each other online. Now, it’s important to note that even the people themselves acknowledge that this project is a very, very long shot and unlikely to succeed – but that doesn’t mean it isn’t worth trying and learning something along the way.

This project (we call it “CountDown G5”) is ambitious, sure, and unlikely to succeed. But a few things make it worthwhile:

  • I am learning a lot about low-level kernel programming, which I find fascinating as a hobby.
  • We are crafting a build system in MPW, inspired by that source leak, for very low-level assembly and linking of a NewWorld ROM. This will be useful to other hackers in the future.
  • We have an intermediate goal of increasing the usable logical address space on OS 9 to near the 2 GB hardware limit.
  • The G5 isn’t all that different. It has facilities for running 32-bit OSes, and early G5s thankfully left the Block Allocation Table mechanism intact.

Be sure to follow the thread on the forum if you’re interested in this type of exotic hacking.

Meanwhile, also definitely 100% be sure to follow Steven Troughton-Smith, who, over the past few days, has been doing an absolutely crazy amount of work on things that go far beyond my comfort zone (he pointed the above thread out to me just now). He’s been investigating all the work the Qemu people have been doing on PowerPC emulation, and he’s trying to get all the early and often exotic Mac OS X builds to boot on Qemu. This includes things like altering and recompiling BootX, diving deep into Open Firmware to remove a number of ‘fixes’ put in place that prevented early OS X versions from booting, and tons of other things.


  1. 2017-01-11 1:09 am
    • 2017-01-11 5:53 am
    • 2017-01-11 6:07 am
    • 2017-01-11 3:01 pm
      • 2017-01-11 6:50 pm
        • 2017-01-12 10:20 am
      • 2017-01-11 9:03 pm
        • 2017-01-12 10:24 am
    • 2017-01-12 8:36 am
      • 2017-01-12 3:34 pm
  2. 2017-01-12 2:40 pm
    • 2017-01-13 1:28 pm
  3. 2017-01-12 9:20 pm