Old Mac OS on Reform with QEMU

Hi all,
I’ve been experimenting with emulating PowerPC on Reform with QEMU, trying out both Classic Mac OS (9.2) as well as Mac OS X (10.3 Panther) and wanted to share my findings. First off, the emaculation forum/wiki have been extremely helpful in some regards, so it’s a good jumping-off point for troubleshooting. There’s a lot of documentation out there but not much info for ARM-based Linux machines.

Performance is very slow in either OS 9 or OS X. I’ve played around with some of the optional commands that I thought would help out but I’m unsure they’re doing anything (see below for my recommended config). In OS X, Activity Monitor shows the virtual processor basically fully utilized, while on the host, I barely get 115% CPU utilization for the QEMU process. I don’t think there’s a way to allocate more CPU resources, but I could be wrong. The guest thinks it’s a 900 MHz PPC G4, but I’ve never used a G4 that felt this slow before!

Mac OS 9 does not respond well to the Reform trackball, and that makes using it a terrible experience. There’s some info in the emaculation forum about installing a usb-tablet extension, but that didn’t work for me and instead leaves the cursor immobile.

Networking is configured automatically! I was able to browse using frogfind, which strips away elements from sites and loads a text-only version friendly to retro computers/defunct browsers.

Neither guest OS has working sound, but there’s some effort on the part of the community to fix this with the qemu-screamer fork but I figured I should try whatever QEMU version was native to arm64 before trying this one that seems to be focused on x86 Windows and Mac.

Installers are readily available out there gestures but I won’t link here just in case there are legal issues. The OS 9 install went extremely quickly thanks to an image called OS9Lives, which is set up to directly clone a known working disk with staple apps already installed to your bootable disk image.

For booting the OS X guest, I found the following works best:
qemu-system-ppc -accel tcg -L pc-bios -M mac99,via=pmu -cpu g4 -m 1024 -hda diskx.img -device VGA,edid=on,vgamem_mb=64,xres=1280,yres=720 -g 1280x720x32 -boot c -device usb-tablet

Translation:
QEMU PowerPC translation with acceleration, required bios: qemu-system-ppc -accel tcg -L pc-bios
USB-friendly Mac with G4 processor -M mac99,via=pmu -cpu g4
1 GB RAM -m 1024
Has hard drive a -hda diskx.img
Has a VGA graphics card with 64 MB vram -device VGA,edid=on,vgamem_mb=64,xres=1280,yres=720
Display res 720p @ 32-bit color -g 1280x720x32
Boot from HD image -boot c (swap for -boot d when booting from install media)
Has a USB tablet pointing device -device usb-tablet (this helps smooth out the mouse pointer capture, making so it doesn’t get caught on the edges of the host window/screen)
Add this to the list when mounting an image containing software/during installation:
-cdrom /path/to/diskimage.iso

For OS X, I waited hours and hours working off two install CD images. After the first disk completes installing, the guest will try to restart but boot from the CD again. You need shut it down, change the boot flag to point towards the HDD instead of CD, then “swap” cd images like this:

Go to the monitor interface (CTRL+ALT+2)
type info block
this gives you a list of mounted drives, identify the CD-ROM, prob ide1-cd0
eject ide1-cd0
change ide1-cd0 "/path/to/img2.iso"
The installer should see the new image and finish the installation.

4 Likes

The end result was highly amusing, despite the trial and error…

8 Likes

Very cool! Despite the performance, should you be able to get the trackball working, etc, would it be enough to simply use it?

Just being able to show it booted and fullscreen on the Reform is pretty cool already!!!

It does work but it’s so slow I wouldn’t recommend serious usage. I’m intrigued to see how it performs on a faster ARM chip or if there’s a way to give the guest more resources! If you want a video of it in use I can work on something to post :slight_smile:

2 Likes

Video would be great!

Here are two brief clips of OS X 10.3 in use. The second one is of Activity Monitor to show how saturated the emulator is with only Safari running!

I should note that boot takes a looooooong time, so I started filming after it had already “warmed up” :slight_smile:

3 Likes

I tried to compile Basilisk II without success. I didn’t spend too long on it. It has an Xcode project for M1 Macs so it should support aarch64 but the Linux Makefile does not. GitHub - kanjitalk755/macemu: Basilisk II and SheepShaver Macintosh emulators

I also have tried Basilisk II and Sheepshaver (which is the PPC counterpart to Basilisk) and can’t get either one to correctly launch or build depending on conditions. Basilisk II seems to get closer to launching but then doesn’t. It seems like it should work since folx report it working on Raspberry Pi.

@minute says he has gotten Basilisk to work but I have yet to ask exactly how he got it to build correctly :laughing:

I have successfully built and run BasiliskII on a Raspberry Pi. I’m currently attempting a build for Reform. If I encounter success I will post here.

2 Likes

I got Basilisk II built and running successfully

git clone https://github.com/cebix/macemu
cd macemu/BasiliskII/src/Unix/
NO_CONFIGURE=1 ./autogen.sh
./configure --enable-sdl-video --enable-sdl-audio --disable-vosf --disable-jit-compiler --with-x --with-gtk --with-mon --with-sdl2
make -j 4

Copy a ROM file named ROM to macemu/BasiliskII/src/Unix/ and launch

./BasiliskII

After launching for the first time, you can edit the configuration

vim ~/.basilisk_ii_prefs
4 Likes

I have it built!! Thanks for that. What’s your config file look like? I’m struggling to get it to boot from an install ISO or IMG file…usually get a smiley Mac and then it hangs :thinking:

I have no problems booting and running. After first boot, I needed to use Monitors Control Panel to change from monochrome to thousands of colors. My config is mostly defaults, I changed screen, extfs, disk, and modelid (for Quadra 900, to match my ROM).

I downloaded a HD disk image for 7.5.5 here MacOS 7.5.5 (English) (Clean Copy) - Macintosh Repository

I’m using Quadra 900 ROM MacROMan/1991-10 - 420DBFF3 - Quadra 700&900 & PB140&170.ROM at master · sentient06/MacROMan · GitHub

My complete config:

displaycolordepth 0
screen win/640/480
extfs /home/reform/Downloads
disk /home/reform/macos755.img
seriala /dev/ttyS0
serialb /dev/ttyS1
udptunnel false
udpport 6066
bootdrive 0
bootdriver 0
ramsize 8388608
frameskip 6
modelid 14
cpu 3
fpu false
nocdrom false
nosound false
noclipconversion false
nogui false
jit false
jitfpu false
jitdebug false
jitcachesize 0
jitlazyflush false
jitinline false
keyboardtype 5
keycodes false
mousewheelmode 1
mousewheellines 3
dsp /dev/dsp
mixer /dev/mixer
idlewait true
1 Like

In case it wasn’t clear, I am using the repo mentioned in the commands above GitHub - cebix/macemu: Basilisk II and SheepShaver Macintosh emulators

I could not get the newer fork to work. I deleted the default config created by the newer fork and generated a new one.

Fantastic thank you! This helped a lot. I was pretty close but I think some of my images were messed up, and I was missing some lines in the config as well. Cheers!

3 Likes