en de

Mac OS X 10.4 "Tiger" and a PowerMac 7600

About this Mac

This is the description of my attempts to install Tiger on my trusty PowerMac 7600. That's right, this computer is over 9 years old now, runs a Motorola 604e processor at a boring 132 MHz, has 96 MB of RAM only, ... did I mention the box isn't supported by Mac OS X at all?

But since it doesn't want to die, runs 10.2.8 so well and makes a reasonable backup box, I decided to give Mac OS X 10.4 "Tiger" a kick.

The name of my 7600 is "wright".

Disclaimer

While I succeeded with the main goal, to run Mac OS X 10.4 on my old PowerMac 7600, this page is incomplete as it is a work in progress.

This page is published in the intent to be helpful, but without any sort of guarantee. Use it at your own risk.

The stuff described here can easily destroy all the data on any of the Macs you use. Especially, if you don't know what you are doing and/or adapt the procedure to your local setup wrongly.

Contents of this page

Special Thanks

This page contains a lot of knowledge collected over the years in the Internet. Usually, they exist as a text snippet in my mailbox, so hopefully nobody asks where I have some specific information exactly from.

Special thanks to Ryan Rempel, Peter Caday, Mike Bombich, Kevin van Vechten, Shantonu Sen and others.

Why such lenghty descriptions?

Well, Apple has decided to drop support for 603/604 based PowerMacs as early as with Mac OS X 10.0, already. There's no public Mac OS X which runs out of the box, there.

Some Mac fans found workarounds to get it work regardless. Thanks to Darwin, the core of Mac OS X being open source. Thanks to Ryan Rempel, Peter Caday and others. Most of the knowledge is collected in a package named "XPostFacto", maintained by Ryan Rempel. Such a patched Mac OS X runs surprisingly well on unsupported hardware: it's completely usable.

The real reason is, at the time of this writing, on 603/604 equipped machines, there's neither a known working 10.4 kernel, nor does XPostFacto support Mac OS X versions later than 10.2.8. This could change in the future, but for now, additional workarounds are needed.

The procedure described here is likely to work on similar Macs as well. Depends on _how_ similar they are. Good luck.

Part I: Upgrading from Mac OS X 10.2.8 "Jaguar" to 10.4 "Tiger"

Prerequisites

Do an ordinary Tiger installation.

You probably want to do this even when the entire system of your helper Mac would fit onto the 7600's Tiger partition. Copying a running system is a bit tricky ...

  1. Prepare a clean HFS+ partition on your supported helper Mac. If you don't have a physical partition set aside, use an external disk.
  2. As of Tiger, it's not possible (*sigh*) to install the OS without rebooting off the Installer disk. Do so.
  3. Do an installation onto the prepared partition/disk. You can get away with less than 2 GB, if you are tight with your 7600's disk space (You probably _are_ tight, remember the 8 GB limit).

Do some preparations.

  1. Reboot into the freshly installed OS.
  2. Set up the computer to roughly what you want later on your 7600. Add users, install system upgrades and do other adjustments the way you like it.
  3. In the network control panel, allow remote login (ssh). This is a failure recovery measure.
  4. Save the sparse available processing power and switch off Spotlight:

    sudo mv /etc/hostconfig /tmp/ sudo awk '/SPOTLIGHT/ { sub("-YES-", "-NO-"); print; next }; { print }' \ </tmp/hostconfig >/etc/hostconfig

  5. Reboot back into your ordinary, all day Mac OS X "Tiger".
  6. Do some cleanup:

    sudo rm -r /Volumes/TigerTemp/.Spotlight-V100 sudo rm -r /Volumes/TigerTemp/.hotfiles.btree sudo rm -r /Volumes/TigerTemp/.TemporaryItems sudo rm -r /Volumes/TigerTemp/.Trashes sudo rm -r /Volumes/TigerTemp/private/tmp/* sudo rm -r /Volumes/TigerTemp/private/var/tmp/* sudo rm -r /Volumes/TigerTemp/private/var/vm/* sudo rm -r /Volumes/TigerTemp/private/var/db/BootCache.playlist sudo rm -r /Volumes/TigerTemp/private/var/db/volinfo.database sudo rm -r /Volumes/TigerTemp/Library/Logs/* sudo rm -r /Volumes/TigerTemp/Library/Caches/* sudo rm -r /Volumes/TigerTemp/Users/*/Library/Caches/*

Did you really set a partition on the 7600 aside? If so, you can continue.

Get this installation onto your 7600 (variant 1)

  1. Fire up Disk Utility on the helper Mac.
  2. Click on the partition you prepared just before to select it.
  3. In the Menu, choose File -> New -> Image from <your device>.
  4. Choose to create a compressed disk image.
  5. Wait.
  6. Still in Disk Utility, select the freshly created disk image. In the Menu, choose Images -> Prepare For Recovery (or similar, it's the last item in this menu).
  7. Wait.
  8. Boot the 7600 into Mac OS X 10.2.8.
  9. Copy the disk image containing your installation from the helper Mac to the 7600.
  10. "Restore" the disk image to the other bootable partition on the 7600:

    sudo asr -source MyInstallDiskImage.dmg -target /Volumes/TigerWannabe -erase

Now you have a Tiger installation on your 7600, but you are not done, yet. Hop over variant 2, then read on ...

Get this installation onto your 7600 (variant 2)

Since you might run out of disk space with variant 1, I'll show you another option.

Note: There are even more options, like netbooting the 7600. "Restoring" the partition using asr and a remote disk image doesn't work in 10.2.8, however.

  1. Boot the 7600 into Mac OS X 10.2.8.
  2. Make sure the "Ignore ownership on this volume" is unchecked in the Finder's Get Info panel for the volume you want to install on. This should be the default.
  3. Copy the entire contents of the freshly installed partition onto the waiting partition on the 7600. If you have set up remote access via ssh, you are in luck:

    ssh wright sudo ls # unlock sudo on the remote side sudo gnutar -C /Volumes/TigerTemp -cf- . | \ ssh wright sudo gnutar -C /Volumes/TigerWannabe -xvf-

  4. Since 10.2.8's tar isn't resource fork or Finder Info aware, you have to fix this manually. Luckily, 10.4 tar's method to write up this stuff is compatible with what 10.2.8 already used. On the 7600, still running 10.2.8, simply do:

    sudo /System/Library/CoreServices/FixupResourceForks /Volumes/TigerWannabe

Whatever variant you've choosen to copy the installation over, if we'd have Apple-supported hardware, we'd already be able to boot off this partition. But we haven't and there's more to do.

Add a PPC 603/604 aware kernel

To make the story short, you can download a 604-enabled kernel for 10.4, a kernel for 10.4.2, or a kernel for 10.4.3 here. On how to create such a kernel, see below.

  1. Make sure you are booted into Mac OS X, still 10.2.8.
  2. Download the kernel, uncompress it using you favourite expander app and move it into the top of the TigerWannabe volume.
  3. Set the ownership of the kernel to root:wheel, permissions to 644 (-rw-r--r--).
  4. Normally, you'd have to remove the extensions cache now, but this is a side effect of the next step. So, go ahead.

Add support for the 7600's hardware (drivers)

About everything we need to support the 7600's hardware, except the 604 processor, can be found in the current version of XPostFacto.

  1. Download the current version of XPostFacto. As of this writing, this is version 4.
  2. Double-click the downloaded disk image or expand the StuffIt archive, depending on what you downloaded.

    "Opening" the disk image on Mac OS X 10.2.8 fools you by not opening the image but storing the contents in the current file system, instead. After doing so, the image destroys it's self, so be sure to have another copy around if you want to keep it. This doesn't apply on Mac OS X 10.4.x

  3. Sometimes, you have to rename the folder next to the XPostFacto.html file from "XPostFacto" to "XPostFacto.app". This makes Mac OS X recognise the application as a such. If the icon next to XPostFacto.html doesn't look like a folder, you don't have to.
  4. Double-click the app to launch it.
  5. Once you are in XPostFacto's main window, click on the TigerWannabe partition to select it. All other options should be fine.
  6. From XPostFacto's menu, select Install -> BootX, then Install -> Extensions to get all the XPostFacto extensions into the new installation.
  7. Click the "Restart Now ..." button, the "Cancel" button at the next dialog and XPostFacto will do the rest for you.
  8. Watch the reboot.
  9. Enjoy!

Huh?

Wait! GUI stuff doesn't work yet. You'll see a lot of texts showing you the booting process' details, but you'll wait forever to get a login prompt (I've waited once 3 hours to check).

The somewhat odd, but very simple solution is to hard reboot the Mac. Wait some 10 minutes after the boot chime, then press command-control-power. The Mac will boot again, repair it's disks as needed and give you finally a login window (or more).

I have no idea why it works that way, but you've to do it only once, all successive Tiger boots will be succesful at the first attempt.

So, again:

Part II: Build your own patched kernel (Experts only)

The easiest way to build a kernel is to set up darwinbuild. Once installed, do:

  1. Fetch sources:

    sudo -s mkdir Build; cd Build darwinbuild -init 8C46od1 darwinbuild -fetch xnu (some output)

  2. Next, patch the public sources. Download the patch, it was made from modified xnu-792.2.4 sources. Since the patch changes just a single line, it should apply to earlier and even future Tiger kernel sources as well. Apply it:

    cd Sources tar -xzf xnu-792.2.4.tar.gz patch . </path/to/the/downloaded/xnu-792.2.4.patch cd ..

  3. Build:

    darwinbuild xnu (again, lots of output)

  4. You'll find single platform kernels in

    BuildRoot/private/var/tmp/xnu/xnu-792.2.4.obj/RELEASE_PPC/mach_kernel BuildRoot/private/var/tmp/xnu/xnu-792.2.4.obj/RELEASE_I386/mach_kernel

    The kernels provided above are ppc-only kernels.

Part III: Make a Tiger Install CD bootable (Experts required, again)

Prerequisites

  1. Have a machine with Tiger installed and 650 MB free disk handy. All the commands in the following were typed on this machine.
  2. Have the four CD set for installing Tiger handy.

Create and fill a new file system

  1. Insert the first CD of the set. It should mount and appear on the desktop or at least in Finder windows.
  2. Go to the Finder, open the Info panel for the Install CD and make sure "Ignore ownership on this volume" is _not_ checked.
  3. Create and mount a disk image for the to-be Install CD:

    hdiutil create -size 650m -fs HFS+ -layout "UNIVERSAL CD" \ -volname "Tiger on OldWorld Install" -o tigerow hdiutil mount -owners on tigerow.dmg

  4. Now copy over the system, but leave other stuff for later (Note: Since Tiger, resource forks and Finder Info will be copied as well):

    sudo rsync -avHE /Volumes/Mac\ OS\ X\ Install\ Disc\ 1/System \ /Volumes/Tiger\ on\ OldWorld\ Install/

  5. Since there are almost no kernel extensions coming with the Install CD, install them from your running system:

    sudo rsync -avHE /System/Library/Extensions/ \ /Volumes/Tiger\ on\ OldWorld\ Install/System/Library/Extensions/

Get our extra files in

  1. Now you should fire up XPostFacto 4 to install BootX and kernel extensions onto yet another available volume. You'd have to make sure this volume has "Ignore ownership on this volume" unchecked as well. You'd remove the stuff right in the next step.

    To make this step easier for you, I've done this and prepared a package you can download. Install this package:

    sudo tar -C /Volumes/Tiger\ on\ OldWorld\ Install/ \ -xvzf /path/to/downloaded/xpostfacto4-essentials.tar.gz

  2. Move the kernel used above onto this Volume, too:

    cp mach_kernel-917-604.gz mach_kernel.gz gzip -d mach_kernel.gz sudo mv mach_kernel /Volumes/Tiger\ on\ OldWorld\ Install/ sudo chown root:wheel /Volumes/Tiger\ on\ OldWorld\ Install/mach_kernel sudo chmod 644 /Volumes/Tiger\ on\ OldWorld\ Install/mach_kernel

  3. Time to rebuild the kernel cache:

    sudo mkdir /Volumes/Tiger\ on\ OldWorld\ Install/tmp export TMPDIR=/Volumes/Tiger\ on\ OldWorld\ Install/tmp sudo kextcache -l -K /Volumes/Tiger\ on\ OldWorld\ Install/mach_kernel \ -m /Volumes/Tiger\ on\ OldWorld\ Install/System/Library/Extensions.mkext \ /Volumes/Tiger\ on\ OldWorld\ Install/System/Library/Extensions unset TMPDIR sudo rm -r /Volumes/Tiger\ on\ OldWorld\ Install/tmp

  4. Since everything is in the kernel cache now, we can remove all those extensions yet again:

    sudo rm -r /Volumes/Tiger\ on\ OldWorld\ Install/System/Library/Extensions/*

  5. Ooops, little too much. On the original Tiger CD, there are two extensions; copy them again:

    sudo rsync -avHE \ /Volumes/Mac\ OS\ X\ Install\ Disc\ 1/System/Library/Extensions/AppleNDRV \ /Volumes/Mac\ OS\ X\ Install\ Disc\ 1/System/Library/Extensions/IOATAFamily.kext \ /Volumes/Tiger\ on\ OldWorld\ Install/System/Library/Extensions/

Do finishing touches

  1. Well, all merging of different pieces is done now, copy the remaining parts of the original CD. Leave out non-essential stuff:

    sudo rsync -avHE \ /Volumes/Mac\ OS\ X\ Install\ Disc\ 1/Applications \ /Volumes/Mac\ OS\ X\ Install\ Disc\ 1/Install\ Mac\ OS\ X \ /Volumes/Mac\ OS\ X\ Install\ Disc\ 1/Library \ /Volumes/Mac\ OS\ X\ Install\ Disc\ 1/bin \ /Volumes/Mac\ OS\ X\ Install\ Disc\ 1/sbin \ /Volumes/Mac\ OS\ X\ Install\ Disc\ 1/private \ /Volumes/Mac\ OS\ X\ Install\ Disc\ 1/usr \ /Volumes/Tiger\ on\ OldWorld\ Install/

  2. Create needed directories manually:

    sudo mkdir /Volumes/Tiger\ on\ OldWorld\ Install/dev sudo mkdir /Volumes/Tiger\ on\ OldWorld\ Install/Volumes sudo mkdir /Volumes/Tiger\ on\ OldWorld\ Install/Network

  3. Create the usual bunch of system-level links:

    sudo ln -s private/tmp /Volumes/Tiger\ on\ OldWorld\ Install/tmp sudo ln -s private/var /Volumes/Tiger\ on\ OldWorld\ Install/var sudo ln -s private/etc /Volumes/Tiger\ on\ OldWorld\ Install/etc

  4. Mac OS X comes with no less than 3 bootloader files and XPostFacto adds yet another one. They are all essentially the same, but differ in location and wether they have an XML header. Make sure all of these are the XPostFacto provided ones:

    sudo cp -p /Volumes/Tiger\ on\ OldWorld\ Install/System/Library/CoreServices/BootX \ /Volumes/Tiger\ on\ OldWorld\ Install/usr/standalone/ppc/bootx.bootinfo sudo cp -p /Volumes/Tiger\ on\ OldWorld\ Install/BootX.image \ /Volumes/Tiger\ on\ OldWorld\ Install/usr/standalone/ppc/bootx.xcoff

  5. Finally, bless the just created boot disk:

    sudo bless --folder /Volumes/Tiger\ on\ OldWorld\ Install/System/Library/CoreServices \ --bootinfo /Volumes/Tiger\ on\ OldWorld\ Install/usr/standalone/ppc/bootx.bootinfo \ --label "Tiger OW"

Enjoy your work

Now you can unmount you freshly created Boot-CD image and actually burn it onto a shiny silver disk.

hdiutil eject /Volumes/Tiger\ on\ OldWorld\ Install hdiutil burn tigerow.dmg

Put the disk into your PowerMac and reboot off it ... heck, wait, there's still a piece missing ...

Currently, I'm out of ideas, so if one knows something ... don't hesitate to drop me a line

Part IV: Make a Jaguar Install CD bootable (Experts required, again)

After being disappointed by all the fruitless efforts with the Tiger Install CD, I did some investigations.

First result of these investigations is, while the Panther and Tiger Install CDs come with a total of two partitions (as reported by the CLI "pdisk" tool), all Install CDs before this (I found quite a bunch), have some 9 partition setup. Jaguar was the last Mac OS X supporting an OldWorld Mac, the beige G3.

While you can create such a 9 partition layout with hdiutil's -layout "UNIVERSAL CD" parameter, hdiutil on Tiger seems to create some slightly different contents in these nine partitions.

In a side note in one of the hundreds of discussions about bootable Mac CD's I've read so far, they told about an important role of the "Desktop DB" and the "Desktop DF" file.

All togehter, I decided this time not to build up a CD from scratch, but to modify an existing one.

Prepare an image of the CD

  1. Insert a Mac OS X 10.2 Install CD into the drive of your computer running Tiger.
  2. Fire up Tiger's Disk Utility.
  3. Click on "Session 1" of this CD in the left pane to select it.
  4. In the Menu, select "File" -> "New" -> "Image from disk1s1...". When asked for the name of the image, look at the lower part of the dialog and choose to store a read/writeable format. Store the image into a convenient place.
  5. Wait, or get a fresh cup of coffee, or make a short trip with your favourite sailplane simulator.
  6. Eject the CD.
  7. Mount (double-click) the image.
  8. Make sure the "Ignore ownership on this volume" is unchecked in the Finder's Get Info panel for the volume.

Get the special stuff into place

  1. Free up some space, as we have to rebuild the kernel extension cache right on this image:

    cd /Volumes/Mac\ OS\ X\ Install\ Disc\ 1/Welcome\ to\ Mac\ OS\ X sudo rm -r Dansk Deutsch Esp* Fran* Ital* Jap* Kor* sudo rm -r Ned* Norsk Port* Simp* Suomi Svenska Trad* cd /Volumes/Mac\ OS\ X\ Install\ Disc\ 1/System/Installation/Packages sudo rm -r CanonPrinterDrivers.pkg EpsonPrinterDrivers.pkg sudo rm -r HewlettPackardPrinterDrivers.pkg LexmarkPrinterDrivers.pkg sudo mv Essentials.pkg /tmp cd

  2. Now a thing, which can become complex for you. You have to copy all kernel extensions from a Mac OS X 10.2 installation onto this CD. At worst, this requires you to do a complete Jaguar installation, just to get a copy of those kexts. And no, I can't provide an archive for you, think about the license ...

    sudo cp -rp /Volumes/Rapid\ HD/System/Library/Extensions/* \ /Volumes/Mac\ OS\ X\ Install\ Disc\ 1/System/Library/Extensions/

  3. Like above, unpack XPostFacto's extensions as well:

    sudo tar -C /Volumes/Mac\ OS\ X\ Install\ Disc\ 1/ \ -xvzf /path/to/downloaded/xpostfacto4-essentials.tar.gz

  4. Time to rebuild the kernel cache:

    export TMPDIR=/Volumes/Mac\ OS\ X\ Install\ Disc\ 1/tmp sudo kextcache -l -K /Volumes/Mac\ OS\ X\ Install\ Disc\ 1/mach_kernel \ -m /Volumes/Mac\ OS\ X\ Install\ Disc\ 1/System/Library/Extensions.mkext \ /Volumes/Mac\ OS\ X\ Install\ Disc\ 1/System/Library/Extensions unset TMPDIR

  5. Since everything is in the kernel cache now, we can remove all those extensions yet again:

    sudo rm -r /Volumes/Mac\ OS\ X\ Install\ Disc\ 1/System/Library/Extensions/*

  6. Like on the Tiger CD, the Jaguar CD comes with two extensions in place. To copy them again, you have to insert the original Jaguar Install CD once again:

    sudo cp -rp /Volumes/Mac\ OS\ X\ Install\ Disc\ 1\ 1/System/Library/Extensions/* \ /Volumes/Mac\ OS\ X\ Install\ Disc\ 1/System/Library/Extensions/

Do finishing touches

  1. Put back the package moved out of the way earlier:

    sudo mv /tmp/Essentials.pkg \ /Volumes/Mac\ OS\ X\ Install\ Disc\ 1/System/Installation/Packages/

  2. Mac OS X comes with no less than 3 bootloader files and XPostFacto adds yet another one. They are all essentially the same, but differ in location and wether they have an XML header. Make sure all of these are the XPostFacto provided ones:

    sudo cp -p /Volumes/Mac\ OS\ X\ Install\ Disc\ 1/System/Library/CoreServices/BootX \ /Volumes/Mac\ OS\ X\ Install\ Disc\ 1/usr/standalone/ppc/bootx.bootinfo sudo cp -p /Volumes/Mac\ OS\ X\ Install\ Disc\ 1/BootX.image \ /Volumes/Mac\ OS\ X\ Install\ Disc\ 1/usr/standalone/ppc/bootx.xcoff

  3. Finally, bless the just created boot disk:

    sudo bless --folder /Volumes/Mac\ OS\ X\ Install\ Disc\ 1/System/Library/CoreServices \ --bootinfo /Volumes/Mac\ OS\ X\ Install\ Disc\ 1/usr/standalone/ppc/bootx.bootinfo \ --label "Jaguar OW"

Enjoy your work

Now you can unmount you freshly created Boot-CD image and actually burn it onto a shiny silver disk.

hdiutil eject /Volumes/Mac\ OS\ X\ Install\ Disc\ 1 hdiutil burn jaguarow.dmg

Put the disk into your PowerMac and reboot off it ... heck, wait, there's still a piece missing ...