• Hello MLAers! We've re-enabled auto-approval for accounts. If you are still waiting on account approval, please check this thread for more information.

Running 10.4.11 on pre-G3 macs with XPostFacto

It's been known for a long time that 10.4 "requires" a G3 or G4 in a rather loose sense; it won't boot on one, but the reason it won't boot on one is because the kernel checks what processor it's on and refuses to play pre-G3.

This check can be patched out, and it will boot. Most of the rest of it roughly seems to work, though glacially. The only replacement kernels to patch this out that I could find were for earlier versions of 10.4, so here attached is a replacement kernel for 10.4.11 and some screenshots of questionable sanity.

Picture 2.png

Picture 3.png

Now to try to get 10.3 running, which might be slightly - slightly - more practical.
 

Attachments

Nice, it looks like you're having fun. There is some more info and another patched kernel here:

forums.macrumors.com/threads/os-x-tiger-on-a-603-604-cpu.1908276/

I found this useful because the same PVR problem occurs with 750G and 7448 CPUs. In the 750G thread joevt posted some good info about fixing it.
 
Nice, it looks like you're having fun. There is some more info and another patched kernel here:

forums.macrumors.com/threads/os-x-tiger-on-a-603-604-cpu.1908276/

I found this useful because the same PVR problem occurs with 750G and 7448 CPUs. In the 750G thread joevt posted some good info about fixing it.

Oh, well, if I'd found that before it would have saved me a certain amount of time and mucking about. Oh well! Never mind. It was educational.
 
From what I've heard, even the dual g4 zif that Daystar made didn't run in OS X as dual processor.
I’m a bit confused by the lack of multiple 604(ev) CPU support on Mac OS X, since the first dual CPU G4’s appeared in summer 2000, well before Mac OS X 10.3 appeared.


Given that the PPC 604 series supported the MESI protocol, what is it that prevents multi-cpu execution? A dual-core 233MHz 604(ev) should be able to compete with a 233MHz G3 I would have thought? Or is that what @herd is talking about when referring to “PVR”?
 
Oh, well, if I'd found that before it would have saved me a certain amount of time and mucking about. Oh well! Never mind. It was educational.

yeah my lasting memory from that ordeal was the amount of faffing about just to get a Darwin build environment up and running, it turns out for example you (or at least I could not) cannot compile this using an intel tiger install, has to be a PPC one (at first I used an intel tiger VM for ease of use and speed)

interestingly when I put together a 10.5.8 kernel with the same patch applied, I had to use an intel mac for that! go figure...

perhaps it might be worth documenting your own findings/how you got things building :) since I utterly failed to do that!


one thing I have always wanted to do, or more specifically see someone more knowledgeable then me do :)

is back/forward port CPU definitions to OS X kernels

what i mean by CPU definitions is

if you look at how OS X kernel identifies CPU's, it looks at the CPU PVR (Processor version register) and then it sorts it into 5 main PPC architecture sub-groups

you can see that they are divided into major groups of PowerPC, PowerPC 750, PowerPC 7400, PowerPC 7450 and PowerPC 970

and then each of those major groups has sub groups, so that for example if it encounters a PVR of a 7447A the 7447A sub-group will tell OS X that yeah this CPU supports an L2 cache and has DFS for example

and this is important because for example when you patch tiger like this its running in PowerPC Generic mode, so for example TenFourFox G3 build wont actually run on a tiger 604 machine, because for some reason its compiled for the PPC750 arch specifically, so since OS X is Generic mode it returns bad-arch

so it would be interesting if things could be re-jigged so that when OS X tiger is run on a 604, it runs in 750 mode, but also it would be interesting to see if 604 mode could be added back to tiger?

and then likewise 10.2.8 for example has no halt on unknown CPU check, so you can freely boot it on newer CPU's like a 7447A, but if you go to about this mac or do a machine command you will see it obviously does not recognise the 7447A properly and is in running in PPC Generic mode, so it would be cool to see if the 7447A definition could be brought to 10.2.8 so it sees it properly as a G4 etc

and similarly with the 970FX so that 10.2.8 G5 can run on 970FX PowerMac G5 machines :) (10.2.7 G5 was the first with the halt on unknown CPU check) 10.2.8 running on 2.7Ghz PowerMac G5 would be a right giggle :)


early versions of OS X did actually have definitions for the 60x CPU's :) (theres even a 601 definition!)


and would correctly display PowerPC 604e in about this mac and when you ran the machine command :) (I have often wondered if tiger still had the "PowerPC" about this mac CPU type string for when its running in PowerPC Generic mode, does it still have the 604 ones or not?)

Screenshot 2025-04-22 at 19.02.42.png

BTW its really awesome to see tiger running on an older 604e CPU, I myself have only ever managed to run it on real hardware with a 604ev CPU, which Geekbench wont recognise for some reason (Geekbench 2 will actually recognise the PVR of most PowerPC CPU's! but for some reason it has a bug? where 604ev, 7400 7410, and 970FX CPU's are not properly recognised)

so it would be very cool to see geekbench of your 180Mhz machine, see if you can set a new Geekbench low score record? :)


BTW you can search the Geekbench database by PVR, the above are the 2 sole 604 results :) ( a friends 8600/250 and my 9600/300) I would love to know what a 120Mhz 604 would get, I actually snagged a 120Mhz 604 just for this purpose to slot into my 9600, but I have not yet had a chance to do so etc


I’m a bit confused by the lack of multiple 604(ev) CPU support on Mac OS X, since the first dual CPU G4’s appeared in summer 2000, well before Mac OS X 10.3 appeared.


Given that the PPC 604 series supported the MESI protocol, what is it that prevents multi-cpu execution? A dual-core 233MHz 604(ev) should be able to compete with a 233MHz G3 I would have thought? Or is that what @herd is talking about when referring to “PVR”?

its because of how the Dual CPU setup in the 9500/9600 works, especially with the fact that the second CPU is not exposed in the OpenFirmware Device tree, means that OS X has no idea its even there in the first place so unless someone writes a driver/expands the platform expert, to explicitly enable that second CPU, it just sits there not getting used.
 
Last edited:
yeah my lasting memory from that ordeal was the amount of faffing about just to get a Darwin build environment up and running, it turns out for example you (or at least I could not) cannot compile this using an intel tiger install, has to be a PPC one (at first I used an intel tiger VM for ease of use and speed)

I didn't even try Intel, heh. Went straight to 'get the G4 out'.

perhaps it might be worth documenting your own findings/how you got things building :) since I utterly failed to do that!

Yes, that would be a good idea. I think the trick for me was 'losing my temper after trying to get darwinbuild working for an hour and deciding there must be a better way of doing this'. Which somehow led me to this document: https://developer.apple.com/library...//apple_ref/doc/uid/TP30000905-CH221-CIHFEIFI

That method worked for me for both 10.3 and 10.4 kernels, although I think I had to copy one binary to /usr/local/bin manually that it didn't mention. It's worth noting that you can use the auxiliary packages one would use for a 10.4 kernel (bootstrap_cmds, cctools etc) to build a functional 10.3 kernel. Although 10.3 is ... quirky (it's continuously ejecting the CD drive for some reason?).

one thing I have always wanted to do, or more specifically see someone more knowledgeable then me do :)

is back/forward port CPU definitions to OS X kernels

well, I'm certainly not more knowldgeable than you, I'm just a monkey with a build system

but that would be a really interesting rabbit hole to fall down - it might be a fun thing to explore after I've got my current stuff done. It'd be fun to see how far forward one could get 604 mode to work...

so it would be very cool to see geekbench of your 180Mhz machine, see if you can set a new Geekbench low score record? :)

Also a fun idea. When I've got it stable, I'll have a go.
 
Last edited:
Neat! It's such a bummer that OS X can't take advantage of multiple 604s.
it's not that it won't work...

Tiger Quad 604e.jpg

We'd just need to look at how Linux kickstarts the dual and quad 604s and use that to write a PE kernel extension for OS X to start the other CPUs.
From what I've heard, even the dual g4 zif that Daystar made didn't run in OS X as dual processor.
If I remember correct Daystar had a kernel extension that allowed 10.0 to work with the Duals, but 10.1 broke it and they never updated it or released the source code so others could.
 
it's not that it won't work...

View attachment 86725

We'd just need to look at how Linux kickstarts the dual and quad 604s and use that to write a PE kernel extension for OS X to start the other CPUs.

If I remember correct Daystar had a kernel extension that allowed 10.0 to work with the Duals, but 10.1 broke it and they never updated it or released the source code so others could.
OK, so let's check what we're looking at here:

  1. It's a pre-G3 Mac running Mac OS X 10.4.11 via some hackery.
  2. It has 4x PPC 604e CPUs each running at 900MHz! 😲 ! So, that's approximately equivalent to maybe a single CPU 1.3GHz G4?
  3. Mac OS X can see the CPUs, but can't really use them.
  4. Geekbench can use the CPUs, which is why we have CPU usage on the right for all?
Yes?
 
OK, so let's check what we're looking at here:

  1. It's a pre-G3 Mac running Mac OS X 10.4.11 via some hackery.
  2. It has 4x PPC 604e CPUs each running at 900MHz! 😲 ! So, that's approximately equivalent to maybe a single CPU 1.3GHz G4?
  3. Mac OS X can see the CPUs, but can't really use them.
  4. Geekbench can use the CPUs, which is why we have CPU usage on the right for all?
Yes?
Look at the full Picture...

It's Qemu emulating a Sawtooth running Tiger with 4 fully functioning 604e CPUs.

The GPIO used for the G4's and the MPIC fully supported 4 CPUs, it's just no production logic board ever had an extra 300 Pin CPU socket and the traces needed to tie that together. The one 300 Pin socket isn't enough pins to support 4 CPUs.

Qemu has no such limitations, so we can now run 4 604s/G3s/G4s but the catch is more than 2 only work in Tiger or Linux, even tho the AppleCore99PE from Jaguar and Panther should kickstart up to 4 CPUs, it does no and I'm not sure why.

For Leopard and Snow Leopard the limit is also 2 CPUs, but I know why, the Platform Expert only kicks 2, Core99PE is not used and the one from Tiger won't work.

The BuleBox in Tiger( Classic mode ) can also use 4 CPUs, tho OS 9 limit on Mac99 is 2.
 
Look at the full Picture... It's Qemu emulating a Sawtooth running Tiger with 4 fully functioning 604e CPUs.
Funnily enough, I did wonder if it was running on an emulator and still failed to see the QEMU window - D'oh!
The GPIO used for the G4's and the MPIC fully supported 4 CPUs,
The G4 has GPIO pins?
it's just no production logic board ever had an extra 300 Pin CPU socket and the traces needed to tie that together. The one 300 Pin socket isn't enough pins to support 4 CPUs.
So, you couldn't have a daughterboard that contained 4 x 604(e)s + some multiprocessor logic that connected to a 300pin socket then? (he says naïvely).
Qemu has no such limitations, so we can now run 4 604s/G3s/G4s but the catch is more than 2 only work in Tiger or Linux, even tho the AppleCore99PE from Jaguar and Panther should kickstart up to 4 CPUs, it does no and I'm not sure why.
The mystery.
The BuleBox in Tiger( Classic mode ) can also use 4 CPUs, tho OS 9 limit on Mac99 is 2.
A/ROSE was Apple's first attempt at multiprocessing, on external NuBus cards.

However, what extension was used to interface to the DSP on the Q800 AV? I guess it must have some kind of RTOS, because the DSP could be used for multiple tasks with different clients.

OK, it was ARTA!
"george.t.warner replies: Tools for DSP development under the Apple Real Time Architecture (ARTA) on AV Macs are available for $995 from:"

 
Last edited:
So essentially, the issue is that while the PE should handle 4 PPC cores, something during initialization is stopping after the second, even though all four are fully addressable in OF.

I can't recall in your various sessions... did you eventually get external debug working during boot so you could step through the PE init routine? There's obviously some software somewhere that's assuming no more than 2 CPUs and not getting the message that there's actually 4. OR... there's something still off in the emulation so that the information isn't being correctly presented to the software when it checks.
 
So, you couldn't have a daughterboard that contained 4 x 604(e)s + some multiprocessor logic that connected to a 300pin socket then? (he says naïvely).

The Daystar Genesis MP has code in Linux to bring up the additional CPUs. You take that code and make a PE for OS X and the 604s will run natively in Tiger.
 
This is interesting!

I haven't seen a 10.1 desktop in quite some time now. I had forgotten how gaudy looking it was with all the pinstripes everywhere!

And also how the overall GUI layout of its version of Apple System Profiler bears a strong resemblance to the Mac OS 9 version.

MacOS nowadays really doesn't look much like it at all except for the very general layout (we still have a dock and menu bar, the desktop icons still start on the right edge of the screen by default, and we still have a variant of the "traffic lights" on the left corner of most windows). It's quite bland by comparison.

c
 
Back
Top