I'd like to introduce you to my iBook. It was from a school, and needed a lot of attention. I rebuilt it last year. It's a nice little machine, and I have often thought about using it as a distraction free machine for my writing. It's a first generation iBook G4 (PowerBook6,3) with an 800MHz G4 processor.
Say Hello, iBook.
However, I always thought about how it would be rather nice to write in Mac OS 9, simply because of its simplicity. I have a Pismo that runs OS 9 rather well, but it's a heavy machine and is nowhere near as small and nimble as the iBook. The problem is that the iBook G4 doesn't run OS 9. I know the most obvious solution would be to find an iBook G3, but I have only come across one iBook G3 in my time, and it had a bad GPU. They're simply not as common as the iBook G4 - at least not in my neck of the woods.
I started hacking away at OS 9 to find out just what prevents it from booting.
OS 9 Hard Disk Drivers
Apple disabled the ability to format a partition and install OS 9 Drivers on newer hardware. Thankfully, this one is easy to overcome. I connected the iBook in FireWire Target Disk Mode to my PowerBook G3 and formatted the iBook's drive from within Panther on the PowerBook, making sure to check "Install OS 9 Disk Drivers".
Once that was done, I connected the iBook G4 in Target Disk Mode to my MacBook Pro running OS X Mavericks and transferred the contents of the OS9General.dmg image (for Power Mac G4 Mirrored Drive Doors machines) to the iBook's hard disk.
As always with Classic operating systems, don't forget to make sure the System Folder is blessed.
Mac OS ROM
Here's where we start to get our hands dirty. With the iBook still connected to the MacBook Pro, I opened the Mac OS ROM from the OS 9 system folder in Hex Fiend.
Be aware that this is written based on the ROM taken from the OS9General.dmg (Mirrored Drive Doors) version. Other versions of the ROM may be different or have different values.
First thing - and this is important - is to write the byte count down somewhere. If this changes, you will have problems. Of course it will inevitably change since we are adding some data to the ROM, but I'll show you how to correct this further down.
In the very first line, you will see the "COMPATIBLE" tags. In the case of the Mac OS ROM included with the OS9General.dmg system, there is only one value - MacRISC. In order to make this ROM detectable as a valid bootable system to the iBook (which is a MacRISC3 system), we need to add those as compatible systems. For good measure, I added both MacRISC3 (DDR-based G4s?) and MacRISC4 (G5-based).
Next, you need to scroll down to the tag. You're looking for a line that looks like:
Immediately after the $gt;r, I added the following (and spaces are important):
The idea here is to add those same additional models MacRISC3 and MacRISC4 as we added between the COMPATIBLE tags above, only here they're included in the "2dup" strings.
With these changes, the modified ROM will fail with a Checksum Error. To avoid this, you need to change the abort after checksum error to clear. It's possible another 5-letter command will work here too, but I used clear simply because it works.
Finally, after making the above modifications, the byte count of the ROM will have changed. Scroll down to the closing tag. After this tag is a large number of spaces (represented in hex as zeroes) for unused space in the ROM. Now, remember in the first step that you wrote down the byte count? What I did was delete some of these until the byte count matched exactly what I initially started with. Don't delete large blocks as pictured, delete them one by one. I only highlighted it to show the empty space.
Save the ROM and close Hex Fiend. If you're working in Target Disk Mode like I am, make sure you eject the OS 9 drive properly! Failing to do so will likely damage or fail to write the changes to the ROM file you just edited. I did this at least 5 or 6 times before I remembered to eject properly every single time.
The Result?
After making the modifications to the Mac OS ROM above, I restarted the machine with the Option key held down to enter the Startup Manager. Unlike before, the OS 9 drive and system folder is detectable as a valid boot device.
Attempting to boot from it, we get the familiar Happy Mac and the Mac OS 9.2 welcome screen.
However, a few seconds later, almost exactly as it would switch to "Starting Up..." and display the progress bar as it loads extensions, the system crashes with an Error Type 102. Disabling Extensions has no effect.
This is as far as I have come in my research and endeavour to make OS 9 boot on the iBook G4. I haven't investigated further yet, and so I'm not sure where to proceed from here. It looks like this overcomes the hurdle of actually making a newer Mac identify OS 9 as a valid operating system, but doesn't address the incompatibilities associated with booting up on the unsupported hardware.
On some machines, like the iMac G4 (15-inch Early 2003) that shipped with OS X but contain the same or very similar hardware (including SDRAM memory and USB 1.1) as the previous generation OS 9 compatible iMac G4s, this may be all that's needed to push them over the line, but I can't be sure since I don't have the hardware to test it myself.
Perhaps someone is willing to take this information and run with it. I'd be very curious to see what the community can do with it, if anything.
Cheers,
~ Mic.
Say Hello, iBook.
However, I always thought about how it would be rather nice to write in Mac OS 9, simply because of its simplicity. I have a Pismo that runs OS 9 rather well, but it's a heavy machine and is nowhere near as small and nimble as the iBook. The problem is that the iBook G4 doesn't run OS 9. I know the most obvious solution would be to find an iBook G3, but I have only come across one iBook G3 in my time, and it had a bad GPU. They're simply not as common as the iBook G4 - at least not in my neck of the woods.
I started hacking away at OS 9 to find out just what prevents it from booting.
OS 9 Hard Disk Drivers
Apple disabled the ability to format a partition and install OS 9 Drivers on newer hardware. Thankfully, this one is easy to overcome. I connected the iBook in FireWire Target Disk Mode to my PowerBook G3 and formatted the iBook's drive from within Panther on the PowerBook, making sure to check "Install OS 9 Disk Drivers".
Once that was done, I connected the iBook G4 in Target Disk Mode to my MacBook Pro running OS X Mavericks and transferred the contents of the OS9General.dmg image (for Power Mac G4 Mirrored Drive Doors machines) to the iBook's hard disk.
As always with Classic operating systems, don't forget to make sure the System Folder is blessed.
Mac OS ROM
Here's where we start to get our hands dirty. With the iBook still connected to the MacBook Pro, I opened the Mac OS ROM from the OS 9 system folder in Hex Fiend.
Be aware that this is written based on the ROM taken from the OS9General.dmg (Mirrored Drive Doors) version. Other versions of the ROM may be different or have different values.
First thing - and this is important - is to write the byte count down somewhere. If this changes, you will have problems. Of course it will inevitably change since we are adding some data to the ROM, but I'll show you how to correct this further down.
In the very first line, you will see the "COMPATIBLE" tags. In the case of the Mac OS ROM included with the OS9General.dmg system, there is only one value - MacRISC. In order to make this ROM detectable as a valid bootable system to the iBook (which is a MacRISC3 system), we need to add those as compatible systems. For good measure, I added both MacRISC3 (DDR-based G4s?) and MacRISC4 (G5-based).
Next, you need to scroll down to the tag. You're looking for a line that looks like:
Code:
2dup " macrisc" $= r> or >r
Code:
2dup " macrisc3" $= r> or >r 2dup " macrisc4" $= r> or >r
With these changes, the modified ROM will fail with a Checksum Error. To avoid this, you need to change the abort after checksum error to clear. It's possible another 5-letter command will work here too, but I used clear simply because it works.
Finally, after making the above modifications, the byte count of the ROM will have changed. Scroll down to the closing tag. After this tag is a large number of spaces (represented in hex as zeroes) for unused space in the ROM. Now, remember in the first step that you wrote down the byte count? What I did was delete some of these until the byte count matched exactly what I initially started with. Don't delete large blocks as pictured, delete them one by one. I only highlighted it to show the empty space.
Save the ROM and close Hex Fiend. If you're working in Target Disk Mode like I am, make sure you eject the OS 9 drive properly! Failing to do so will likely damage or fail to write the changes to the ROM file you just edited. I did this at least 5 or 6 times before I remembered to eject properly every single time.
The Result?
After making the modifications to the Mac OS ROM above, I restarted the machine with the Option key held down to enter the Startup Manager. Unlike before, the OS 9 drive and system folder is detectable as a valid boot device.
Attempting to boot from it, we get the familiar Happy Mac and the Mac OS 9.2 welcome screen.
However, a few seconds later, almost exactly as it would switch to "Starting Up..." and display the progress bar as it loads extensions, the system crashes with an Error Type 102. Disabling Extensions has no effect.
This is as far as I have come in my research and endeavour to make OS 9 boot on the iBook G4. I haven't investigated further yet, and so I'm not sure where to proceed from here. It looks like this overcomes the hurdle of actually making a newer Mac identify OS 9 as a valid operating system, but doesn't address the incompatibilities associated with booting up on the unsupported hardware.
On some machines, like the iMac G4 (15-inch Early 2003) that shipped with OS X but contain the same or very similar hardware (including SDRAM memory and USB 1.1) as the previous generation OS 9 compatible iMac G4s, this may be all that's needed to push them over the line, but I can't be sure since I don't have the hardware to test it myself.
Perhaps someone is willing to take this information and run with it. I'd be very curious to see what the community can do with it, if anything.
Cheers,
~ Mic.