Imaging a Bootable Mac OS 9 CD the Hard Way

I was recently contacted by a friend who was trying to get an old PowerMac 7300 up and running. They were looking for a disk image they could use to burn a bootable Mac OS 9.1 installer CD. Take note of that word: “bootable”, because that’s the really important part. These old computers can’t just boot into “Internet Recovery” or a USB stick. For computers of this vintage you need physical CD media to boot and install from.

My immediate response was to send him to the Mac OS9 page of the Macintosh Garden to download an image of the installer. Sure, “the Garden” is slow, and the search engine is clunky as hell, but it’s easily the most complete archive of vintage Mac abandonware out there.

The reply I received was clearly from a very frustrated individual:
“…I used that web site and wasted all afternoon (Extremely SLOW Download Speed) on a 396MB zip (supposed to be ‘Mac OS 9.0 International version’), which I thought was an iso, but was a toast file. What can I do with a toast file in Windows?”

And that got me thinking: what about all of these poor Windows users who want to dabble in vintage Mac technology? All of the archived files are very Mac-centric. Well as it turns out, there is a really simple solution, but where’s the fun in that? Let’s go through all of the complicated stuff first.

Always wanting to help out a fellow vintage Mac enthusiast, I told him I would create an .iso disk image that he could use on his Windows machine to burn a bootable Mac OS 9.1 CD. I had the original disk, so I could ensure everything was done right, giving him the best chance of success.

I decided I would do everything on a PowerPC Mac. I have a 2.5GHz quad core G5 tower under my desk that I can fire up any time I need to work with an older OS. My plan was to boot into OSX Leopard, insert the original CD, image it and then send it off to my friend to use with the 7300.

At first I tried Disk Utility, Apple’s own drive formatting software. I inserted the original disc, selected it in Disk Utility and chose “New Image.” I selected “DVD/CD Master,” which produced a .cdr file, Apple’s preferred extension for a raw optical disc image. To (hopefully) make the file more compatible with Windows burning software, I used the command-line utility hdiutil to convert it into a plain .iso file.

I burned a copy to a blank CD, grabbed my trusty Wallstreet G3 PowerBook and attempted to boot to the CD by holding the “c” key on startup.

No luck. It booted straight into the OS on the internal hard drive and completely ignored the CD. The CD still mounted and all the data was there, it just wasn’t bootable. So what next? If the Mac’s own Disk Utility can‘t make a bootable CD, what will?

For my next attempt I would try the command line utility dd, which should allow me to do a raw sector-by-sector copy of the disk and make an exact replica of the original disk. I burned the disk image created by dd to a blank CD and once again, all the data was there, but I couldn’t boot from it. But then it occurred to me that dd uses a default byte size of 512 and CD-ROM data sectors are 2048 bytes, not 512. So specifying a 2048 byte size would surely be the key to success? No, it wasn’t. Still not bootable.

At this point I looked into some alternatives, specifically readcd, a command-line utility designed to read optical media at a lower level and create disc images directly from the drive. I installed readcd on my G5 as part of the Schilytools repository. After a few technical challenges I finally got it running, and my hope was that direct communication with the optical drive would give me a true, raw image of the original disc; including the Apple Partition Map and boot driver partitions.

On my first attempt, I was greeted with the following error:
Warning, ‘diskarbitrationd’ is running and does not allow us to send SCSI commands to the drive.

This was the turning point; the realisation that explained why every previous attempt had failed.

Disk Arbitration is a background service in macOS responsible for detecting removable media and publishing it to the BSD disk layer. When a disc is inserted, it creates device nodes such as /dev/disk2 and allows the volume to be mounted and accessed in Finder. However, in doing so, it also mediates access to the drive. Tools that rely on the BSD block layer (including dd) are therefore limited to what the operating system chooses to expose.

readcd, on the other hand, communicates directly with the optical drive using SCSI/MMC commands. For that to work, it needs exclusive access. With Disk Arbitration running, that exclusive access is denied.

So perhaps the solution was simple: disable Disk Arbitration and then use dd to create the image? It sounds plausible — but without Disk Arbitration running, the disc never gets published to the BSD device list. No /dev/disk2. And without those device nodes, dd has nothing to read from.

A perfect Catch-22.

Thankfully readcd could still give me what I wanted, so I disabled Disk Arbitration, used readcd to extract a raw ISO from the CD – including the boot partition – and the re-enabled Disk Arbitration to restore the system back to its original state. And with the help of ChatGPT, I also created a shell script to automate this process for any time I wanted to image one of my vintage bootable CDs.

It worked. I had devised a repeatable process for any time I want to archive any of my original, bootable optical media into a raw .iso file.

At this point I could spend the next few paragraphs providing intricate details of exactly how to replicate this process, but that’s where it all gets a bit silly. Remember at the start I said there was a really simple solution? After a very brief moment of satisfaction from my accomplishment, I came to the realisation that it had all been for nothing. As it turns out, all that is required to get a Toast disk image to work with Windows disk burning software like ImgBurn is to rename the file with an .iso file extension instead of .toast.

Oh well, it was a fun discovery process.