I've already written a slap-dash guide on how to use QEMU on Apple Silicon prior to there being an Apple Silicon native version. Now there is one and that makes things easier. As always emulation is a legally grey area. This guide has an additional video if you'd like to follow along and see the relative performance.

Easy Mode!

  1. Download latest UTM release from github (grab the DMG)
  2. Install it and launch it
  3. Click the UTM gallery and find Mac OS 9 and click "Open in UTM", you may need to locate the app on your computer. It'll automatically download and launch when done
  4. You'll need to manually engage the mouse/keyboard by clicking the icon. To release your mouse and keyboard, click the command+control option



Hard mode!


You'll need the following on your Mac to get started:

Xcode is Apple's IDE for developing software for macOS and iOS/tvOS/iPadOS and it includes a lot of software that is beneficial to power users. Homebrew is a package manager for installing open-source software on the Mac. Think of it as the App Store but for mostly command-line utilities.

You can check if you homebrew installed on your mac by running brew and seeing if it gives an error or additional instructions

    brew

Installing QEMU via Homebrew

    brew install qemu 

That's it!

Setting up QEMU and installing Mac OS 9

First, we need to make a hard drive disk image. Anyone familiar with virtualization will understand this concept. It's just a file that contains a virtual hard drive. Once it's done installing we can create our virtual hard drive. The utility is called qemu-img

The comand

    qemu-img create -f qcow2 myos9.img 2G 

Let's break down this down.

  • qemu-imgis the name of the utility application that qemu comes with to create disk images.
  • create -f is format and qcow2 is QEMU's file format of choice for disk images.
  • -f qcow -M is the model, and our model is a mac99 which is a G4 Mac. The other option QEMU supports is a Beige G3.
  • myos9.img is the name of the disk image and you can give this any name you want with a .img suffix. You can specify the path of this image but I'm going to leave at the default, which is in the root of your user directory.
  • 2G stands for 2GB. Notably, this file will not eat up 2 GBs of space. Rather it's just capped at 2GB. You can make it whatever you like, but 2 GB is plenty for my needs. .

Hit enter to run this command and application. It'll happen very fast as this utility is very quick.

I want to be very clear that terminal commands aren't magic. Anyone can look up with *nix utilities manuals by using the man command or searching in a search engine, qemu-img man and get detailed explinations like this page that explain the various flag options. No one is born knowing esoteric flags like this, and this is how users such as myself figure out comamnd line utilities. If you're already a terminal user who knows about man, awesome.

Step 2: Download Mac OS 9

I recently discovered the Mac OS 9 lives version of macOS 9.2 installer, which is tailored for emulators like QEMU, as it launches to the disk utility and is a stream lined install It's about 500 MB. Download it.

Step 3: Running QEMU

The command:

qemu-system-ppc -L pc-bios -boot d -M mac99 -m 512 -hda myos9.img  -cdrom path/to/disk/image  

Now we're going run the qemu-system-PPC, app which is exactly what it sounds like. It's emulating a PowerPC processor. Here's a quick break down of the flags.

  • -L pc-bios -L is bios. I'm still not sure if this is necessary or there's a more correct way but this works perfectly fine. We are telling the emulator to use PC bios.
  • -boot d -boot is self explainatory. This is the boot drive for the computer, like old PCs used to use. Macs never had this, it's strange but this what we have to do. The D drive is the CD-Rom and C drive would the Hard Drive.
  • -M mac99 -M is the model, and our model is a mac99 which is a G4 Mac. The other option QEMU supports is a Beige G3.
  • -m 512 -m is memory, and this expressed in megabytes. I'm using 512 MB which is a lot for the Mac OS 9 era. It should be plenty.
  • -hda myos9.img -hda is our hard drive and this is the disk image we created. This can be a path to the disk image.
  • -cdrom path/to/disk/image -cdrom should be self explainatory as well. This is the path to the CD ROm's dsik iamge. Replace the path/to/disk/image with the path to the disk image. The easiest way to get this is to find the disk image you downloaded and drag it into the terminal.

Hit return to launch the emulator. It'll take a minute or so to boot, usually with a strange yellow screen then it'll change to the Mac boot sequence. Once you ahve booted, you'll need to use the disk format utility. If you're using the Mac OS 9 Lives installer, this will be open on boot. Format the drive and close the utility.

Then within your virtual environment, run Apple Software Restore or the Mac OS installer if you're using a different Mac OS 9 installer. This will go fast with the Mac OS 9 Lives installer.

Now we need to shut down. You can use ctrl-alt-g so you can move your mouse and just close the window or if you go the terminal hit control-c, you'll immediately shut down that application.

Now it's time to boot our Mac. We'll use the same command, but we don't need the cdrom and we need to remember to swap our boot drive letter as we aren't booting off the CD Rom drive to the c drive.

qemu-system-ppc -L pc-bios -boot c -M mac99 -m 512 -hda myos9.img  

Congrats, you should be able to boot Mac OS 9!




Installing Software

What's an OS without software? Websites like macintoshgarden.org and archive.org have old software to download. There's plenty more and you can find them with search engines. In my video I downlaoded Sim Ant and Unreal but the software doesn't need to be a game. Download a disk image and then you'll need to attach the downloaded disk image to the command string when booting:

qemu-system-ppc -L pc-bios -boot c -M mac99 -m 512 -hda myos9.img  -cdrom path/to/disk/image  

The only difference between the Mac OS installer and this, is that we are booting of the Hard drive's disk image. QEMU doesn't come prebaked with sound but we can build our own from the source code.




QEMU screamer.

In my video I followed this guide. You'll only need the first four commands int the section and it takes a bit. You can go to it or follow the commands below.

Step 1

Clone the repository.

git clone --recursive -b screamer https://github.com/mcayland/qemu.git qemu-screamer

Once finished:

cd qemu-screamer/

Step 2

Install the dependencies via homebrew (if you followed the first part, much of these will be already installed).

brew install libffi gettext glib pkg-config autoconf automake pixman ninja meson gnutls jpeg libpng libslirp libssh libusb lzo ncurses nettle snappy vde

Step 3

Configure the build.

PKG_CONFIG_PATH="$(brew --prefix)/opt/ncurses/lib/pkgconfig" ./configure --target-list="ppc-softmmu"

Step 4

Go into the build folder and now build the app.

cd build/
make -j$(sysctl -n hw.ncpu)

From here you can now run your disk images using this copy of QEMU screamer from the build folder (or wherever you place it). You'll need the correct path to your disk iamge. You do not need to use the Homebrew installed version of QEMU to set up Mac OS 9, all of it can be done with this version.

./qemu-system-ppc -L pc-bios -boot c -M mac99 -m 512 -hda path/to/myos9.img 

It'll most likely be two directories outside of this project so it'd be:

./qemu-system-ppc -L pc-bios -boot c -M mac99 -m 512 -hda ../../myos9.img 

And that's it for installing and running QEMU with sound. QEMU works great for games that do not require 3D hardware on the Mac as RAVE or Glide would take a lot to reverse engineer. You can play 3D games in software rendering modes in QEMU. Of course, QEMU isn't limited to gaming but this is probably one of the more popular uses for PowerPC emulation, and it's very fast.

In my previous article, I demostrated how to boot Mac OS X 10.0 - 10.4. I suggest checking it out if you'd like to try your hand at emulating Mac OS X. There's a few more flags that need to go into it as later Mac OS Xs require USB and some enviroment flags that I had to figure out through trial and error.