Running back to 2002 (the hard way)

PowerBook G4 Titanium running OS X 10.2 & Microsoft Office 2004

This honestly should have been much easier.

Or maybe I’ve just forgotten how absolutely hostile early OS X could be.

The mistake begins

It started, as these things always do, with someone mentioning the PowerBook G4 Titanium. One quick eBay search later and, well £30 later I owned one.

“They got me.”

It showed up absurdly fast (Sunday delivery? really?), in surprisingly good condition, and I already had a charger. So naturally, the sensible thing to do was…

Install Tiger.
Which worked. Immediately. Of course it did.

But that wasn’t good enough

Tiger is fine. Great, even.

But it’s not Jaguar.

10.2 was always my favorite early OS X, that weird in-between era where it still felt experimental but usable. And according to basically everything online, early Titanium PowerBooks should run it.

So I grabbed a cheap “reproduction” 10.2 CD set.

And this is where everything went wrong.

Kernel panic

Not a great start.

At first glance it looks like some kind of network address corruption, but in reality it’s just the kernel screaming because something is very wrong at a hardware level.

Time to go verbose.

Welcome back to Open Firmware

You can’t just hold C and Cmd+V like a normal person.

No, this is 2002.

So into Open Firmware we go:

boot cd:,\\:tbxi -v

Now we get actual output… and a much clearer failure.

Kernel panic in the FireWire driver

FireWire: the red herring

The panic traces back to:

com.apple.driver.AppleFWOHCI

Ah yes — FireWire.

Because of course it is.

So the obvious thing to do is disable it from Open Firmware:

dev /pci@f4000000/firewire
" disabled" encode-string " status" property

And… it works.

Kind of.

The system gets further. No panic. Progress!

The ‘stop sign’ meaning this OS isn’t supported on this Mac

And then: the stop sign

Instead of a crash, we now get a 🚫

The classic “this OS is not supported on this Mac” symbol.

Which is when it finally clicks:

This machine is a PowerBook3,5 (867MHz)
And 10.2.0 predates it

So no, this was never going to work.

The FireWire panic wasn’t the root problem; it was just the first thing new enough hardware broke.

At this point, a normal person would stop

I did not stop.

If Apple won’t build it, we will

If 10.2.0 won’t run, then clearly the answer is:

  • build a 10.2.8 install manually
  • using QEMU
  • on a completely different machine
  • then sneak it onto the laptop

Perfectly reasonable.

Building Jaguar in exile

QEMU can emulate a G4 well enough to:

  1. Install Tiger
  2. Install Jaguar
  3. Update Jaguar → 10.2.8

Something like:

qemu-system-ppc \
-M mac99 \
-cpu G4 \
-m 512 \
-drive file=macosx_6gb.vmdk \
-boot c

From there:

  • swap disks around
  • update Jaguar
  • boot back into Tiger
  • use Disk Utility to create a compressed image

Eventually producing:

osx-10.2.8.dmg

Of course it’s not that easy!

First off is to get ISO images. I actually started this process with the Tiger I already have in hand. To grab an ISO under macOS 26 it’s a simple command:

hdiutil convert /dev/disk4 -format UDTO -o OSX_Tiger_10.5.iso

And about 20 minutes of the DVD drive spinning around I got my ISO image.

 % file OSX_Tiger_10.5.iso 
OSX_Tiger_10.5.iso: Apple Driver Map, blocksize 512, blockcount 5531738, devtype 0, devid 0, driver count 1, contains[@0x200]: Apple Partition Map, map block count 4, start block 1, block count 63, name Apple, type Apple_partition_map, valid, allocated, contains[@0x400]: Apple Partition Map, map block count 4, start block 64, block count 8, name Macintosh, type Apple_Driver_ATAPI, boot arguments DMMY, valid, allocated, real driver, chain driver, contains[@0x600]: Apple Partition Map, map block count 4, start block 72, block count 5531656, name Mac_OS_X, type Apple_HFS, boot arguments goon, valid, allocated, readable, writable, mount at startup, contains[@0x800]: Apple Partition Map, map block count 4, start block 5531728, block count 10, type Apple_Free

Now to run it under qemu:

qemu-system-ppc \
-L pc-bios \
-M mac99,via=pmu \
-cpu G4 \
-m 512 \
-prom-env 'auto-boot?=true' \
-prom-env 'boot-args=-v' \
-drive file=tiger.iso,media=cdrom,format=raw \
-drive file=macosx_6gb.vmdk,format=vmdk,cache=unsafe \
-boot d \
-net none \
-no-reboot
Tiger on QEMU / OS X Tahoe 26.4

And in a minute or so on my mac mini running “QEMU emulator version 10.1.2” from homebrew I was up and running. yay. I don’t need or care about audio/networking as this is just to get a PowerPC OS up and running, using the media I have in hand. Bring up the disk util, partition the VMDK, the install the OS. You’ve probably seen/done it a dozen times so nothing to really see here.

Once my 10.2 reproduction media arrive, I went through the hardware boot to only find out that 10.2.0 just won’t run on my PowerBook G4. This is where we use the emulation route. Could I simply grab an ISO using hdiutil?

NO

Of course not. Why would it work? It comes down to the older versions of OS X being very MacOS 9 style disks, which hdiutil simply will not grab. You end up with meaningless data. What about ‘dd’ on /dev/disk4? /dev/rdisk4? did you set bs=2048? YES YES YES… none worked.

So back in homebrew I got the cdrutils from Joerg Schilling which gives me the readcd command, which finally let me grab the ISO’s

% file OSX_Jaguar_10.2-disc1.iso
OSX_Jaguar_10.2-disc1.iso: Apple Driver Map, blocksize 2048, blockcount 331264, devtype 1, devid 1, driver count 4, contains[@0x200]: Apple Partition Map, map block count 10, start block 1, block count 63, name Apple, type Apple_partition_map, valid, allocated, in use, readable, contains[@0x400]: Apple Partition Map, map block count 10, start block 64, block count 56, name Macintosh, type Apple_Driver43, boot arguments ptDR, valid, allocated, in use, has boot info, readable, writable, pic boot code, real driver, chain driver, contains[@0x600]: Apple Partition Map, map block count 10, start block 120, block count 140, name Macintosh, type Apple_Driver43_CD, boot arguments CDrv, valid, allocated, in use, has boot info, readable, writable, pic boot code, real driver, chain driver, contains[@0x800]: Apple Partition Map, map block count 10, start block 0, block count 0, type Apple_Void, contains[@0xA00]: Apple Partition Map, map block count 10, start block 260, block count 56, name Macintosh, type Apple_Driver_ATAPI, boot arguments ptDR, valid, allocated, in use, has boot info, readable, writable, pic boot code, real driver, chain driver, contains[@0xC00]: Apple Partition Map, map block count 10, start block 316, block count 140, name Macintosh, type Apple_Driver_ATAPI, boot arguments ATPI, valid, allocated, in use, has boot info, readable, writable, pic boot code, real driver, chain driver, contains[@0xE00]: Apple Partition Map, map block count 10, start block 456, block count 512, name Patch Partition, type Apple_Patches, valid, contains[@0x1000]: Apple Partition Map, map block count 10, start block 0, block count 0, type Apple_Void

As you can see it’s a lot of partitions, and various bits that it’s expecting. Kind of annoying that the system utils cannot grab these kinds of images, but in the end we got there.

Naturally, Jaguar has to be run differently as it’s just more tied to older hardware:

qemu-system-ppc \
-machine mac99 \
-cpu G4 -m 1G \
-name "Mac OS X 10.2" \
-hda "macosx_6gb.vmdk" \
-cdrom "OSX_Jaguar_10.2-disc1.iso" \
-device pci-ohci,id=usb1 \
-device usb-mouse,bus=usb1.0 \
-device usb-kbd,bus=usb-bus.0 \
-device usb-audio,bus=usb1.0,audiodev=audio \
-audiodev id=audio,driver=coreaudio \
-device sungem,netdev=network \
-netdev id=network,type=user \
-no-reboot \
-accel tcg \
-boot d
Jaguar installer

The next catch is that the diskutil just hangs partitioning the hard disk. I’ve no idea why.

It just currently hangs forever on 10.2

So, the solution is to boot back into Tiger, add a second disk, partition it there, and then use that disk in the Jaguar boot. After that it installs just fine. I enabled the sound and network just to setup NTP so at least my image isn’t too stuck in 2002.

Oh, one trick I found out decades too late, is that you can cloverQ the named registration, so you don’t have to make up bogus phone numbers and a semi valid mailing address. I didn’t know is that, it’ll just kick you to the account creation screen, and you are good to go!

OS X 10.2.0 installed into QEMU

After that it’s just a matter of running the 10.2.8 combination patch, to bring the VM up to 10.2.8

10.2.8 Combo update

From there the final hurdel is to create a RAW disk image to transfer the Tiger diskutil ‘disk image’ to. This way you can easily mount the RAW image by renaming the extension to .dmg and OS X (thankfully) still supprots HFS+ so you can simply use finder or ‘cp’ to copy off the compressed disk image onto a USB drive, and now we are ready to image the PowerBook using our updated OS X Jaguar!

The USB betrayal

Naturally, the Tiger installer refused to mount USB.

Because of course it did.

The final workaround

So instead:

  1. Repartition internal disk
    • small staging partition (~4GB)
    • main target partition (remainder of the disk)
  2. Install Tiger (again)
  3. Copy 10.2.8.dmg to staging partition
  4. Boot Tiger installer
  5. Use Disk Utility → Restore image onto main partition

And finally…

10.2.8 running on the PowerBook G4

Success

Jaguar 10.2.8.

On a machine that absolutely refused to run 10.2.0.

With Office 2004, because why not.


Lessons learned

  • Early OS X is tightly hardware-bound, not just “older”
  • Kernel panics are often symptoms, not causes
  • FireWire was innocent (this time)
  • USB support in installers was… optimistic

And most importantly:

Just because you can reconstruct a historically accurate install pipeline via emulation and disk imaging…
doesn’t mean you should.

The obvious solution (that I ignored)

A single FireWire cable.

Target Disk Mode.

Done in 20 minutes, by using my B&W G3 PowerMac that is currently running Windows NT, but it wouldn’t matter as I could just hold option and select the FireWire target disk to boot to/from as it’ll happily boot/install 10.2.0 without a hitch. It being a G3 makes no difference as the same kernel works on G3/G4 processors.

But where’s the fun in that?

For those brave enough to get to the end of the post, I uploaded all my Jaguar images onto archive.org. I’m sure it’s been preserved before, but since I was in the mood, I also uploaded Office 2004.

2 thoughts on “Running back to 2002 (the hard way)

  1. Your post inspired me to dig out my old Titanium G4 and check it still works (of course it does). It’s also running OS X 10.2.8 (and Classic 9.2.2) and has Office 2004 (and Office 98) installed… I’m sure when I set it up it wasn’t so difficult; if I remember correctly, I used a copy of the apple “restore disc”, although mine’s the 1GHz model, so maybe that helps? It’s still a “Powerbook3,5” though.

    • Yeah in the era it would have come appropriate media in the box! The launch G5’s had that special 64bit Jaguar as well.

      New macs can install some base image from Apple over the Internet.

      I think the arm ones DFU like a cellphone? I’ve not tried messing up my m4, since it’s my daily machine.

      Although much like the g4 cube it’s already got external drives, a SSD, spinning HD and an optical disc so it’s also a mess!

Leave a Reply