Emulating Mac OS X Server 1.2
Before Mac OS X 10.0 and it’s Developer Preview, the first public appearance of Mac OS X was Server 1.0, codename Rhapsody, which was released in March 1999.
This is the first time we can see the descendent of the NeXTSTEP operating system dressed up in a Mac-like theme. I was able to get Server 1.2 running in QEMU.
Instead of the logo and progress bar, our boot screen is a text console.
I suppose this would be the first piece of software that allows you to log in to your Mac as root.
Instead of Finder we have Workspace Manager.
The Server 1.x releases didn’t yet have the Carbon framework, so only newly written apps using Yellow Box (which became Cocoa) were supported. OmniWeb was one of the few apps that could run in this environment.
The Apache web server is included out of the box.
Check out how this was marketed on Apple’s website in 1999. Some of the notable features are the Mach BSD kernel, POSIX compatible APIs, and 100% pure Java. Technologies to enable web serving were also emphasized, such as Apache, QuickTime Streaming, and WebObjects.
Let’s not forget, a virtualized copy of Mac OS 8 is present.
There you have it, Mac OS X Server 1.2! The 1.0 release debuted at a price of $499 and was met with a poor reception. Even in 1999, I can’t imagine that there was much of a market willing to pay this price to host websites and run Unix network applications on Apple hardware. Despite how impractical it might have been in its time, it is an interesting piece of history showing a critical step of the evolution of NeXTSTEP into the Mac OS X we are familiar with today.
Emulating Mac OS X Developer Preview
After getting the first consumer release of Mac OS X 10.0 running in an emulator, I was curious if I could get one of the earlier, pre-Aqua UI, builds running.
From my own trials and what I could find online, it seems the first Developer Preview can’t boot on QEMU, but people reported success with DP2 and newer…
Success! DP2 works in QEMU.
It’s easy to see right off the bat how this operating system is a bunch of different technologies duct taped together…
It’s very surreal to see Mac OS X without a dock and a UI that’s really NeXTSTEP with a Mac OS 8 like coat of paint on it. As John Siracusa says in his article on DP2, “Actually using DP2 is akin to logging into a demented Xterm running a poorly designed window manager theme meant to look something like Mac OS.”
The “File Viewer” is especially rough. I’m not sure if it was an issue with the install on my emulator or if this was how it behaved on real hardware at the time, but I had a hard time even browsing to and launch applications. Instead, I was happy to find that I could use the ‘open’ terminal command I’m familiar with from modern releases of Mac OS X to launch applications and open the “File Viewer” in a particular folder.
I’m curious if Mac developers were actually productive in this environment considering how limited everything was. I suspect it involved heavy use of the embedded Classic Mac environment to get anything done.
Nerdy note: here I’m running a virtualized Mac OS 9 in a virtualized on Mac OS X which is itself running in an virtual G3 PowerPC computer in an emulator that’s compiled for x86 which is being translated on the fly via Rosetta 2 to my MacBook’s native M1 Apple Silicon instructions. Whew. Can’t believe it works.
Emulating Mac OS X 10.0
In honor of the 20th anniversary of Mac OS X 10.0, I wanted to boot it up in an emulator. I became a Mac user much after 10.0 launched, so I never experienced the first release for myself.
After some trial and error, I got it running in QEMU. Here’s a few screenshots of what the system looked like then. It’s interesting to see what’s the same and what has changed…
What’s amusing here is I’m running this on a M1 Mac. At this point, OS X only supports PowerPC, so I need QEMU to emulate that. QEMU does have a native Apple Silicon build, but I found PPC emulation to be buggy (basically crashes at launch). So, I had to use the x86 compiled QEMU. What I ended up with is QEMU emulating PowerPC in x86, and Rosetta 2 translating x86 to Apple Silicon’s ARM variant. So many layers, it is incredible that it works at all, yet alone with reasonable performance.
Even from the first release, Mac OS X had the terminal and it’s UNIX core under the hood. Java on OS X was, uh, a thing at the time.
vi included out of the box!
If you want to try this for yourself, here’s some links I found useful: