One of my beta testers recently asked me if there was a way to incorporate the Classic environment into Sorbet Leopard. Given that most information on this subject available online is vague and unhelpful, I did some hands-on experimentation (being very familiar with the underpinnings of older OS X, I found this to be relatively straightforward), and I found some things that will hopefully provide clarity to those who have always had the same question. My reply is as follows:
-
First, I'm pleased to report that the Classic preference pane seems to be fully functional in 10.5.8, as does the Classic Startup application from Tiger's CoreServices directory. When an OS 9 System Folder is installed and visible to the Classic preference pane, it will detect and target it for booting, and will even allow you to rebuild the desktop.
However, when the environment is set and ready to go, and it's started, System Preferences will hang and then crash. Digging into the system log during this event shows that Classic Startup (the application called by System Preferences to bootstrap a VM of OS 9) wants a specific version of the ApplicationServices framework in order to run. More specifically, it's looking for several special symbols in the ApplicationServices binary that it can't find, because the one that shipped with Leopard doesn't contain them.
So the natural reaction would be to just swap in the ApplicationServices framework from Tiger and call it a day, right? Unfortunately, this wouldn't be the case. Unsurprisingly, every application that runs on Leopard depends on that version of ApplicationServices in order to even launch, including System Preferences, as well as the Classic Startup application itself (as long as it's being opened from the Leopard environment), and this repeats in more or less the same behavior even if the ApplicationServices binary hidden within the framework bundle was the only thing replaced.
So in summary, Classic being unable to run on Leopard is not a kernel problem at all, but an incompatible framework problem. In order to get Classic running on Leopard, you would need to somehow preserve ApplicationServices' ability to launch applications, while at the same time containing those symbols required to start Classic. That said, given that both ApplicationServices binaries are closed-source, and that said missing symbols are not pieces of text you can just move around the binaries, this would probably depend on getting the open-source versions of both binaries, and then recompiling one to include the symbols as per required by Classic Startup.
I hope that was helpful.
-
First, I'm pleased to report that the Classic preference pane seems to be fully functional in 10.5.8, as does the Classic Startup application from Tiger's CoreServices directory. When an OS 9 System Folder is installed and visible to the Classic preference pane, it will detect and target it for booting, and will even allow you to rebuild the desktop.
However, when the environment is set and ready to go, and it's started, System Preferences will hang and then crash. Digging into the system log during this event shows that Classic Startup (the application called by System Preferences to bootstrap a VM of OS 9) wants a specific version of the ApplicationServices framework in order to run. More specifically, it's looking for several special symbols in the ApplicationServices binary that it can't find, because the one that shipped with Leopard doesn't contain them.
So the natural reaction would be to just swap in the ApplicationServices framework from Tiger and call it a day, right? Unfortunately, this wouldn't be the case. Unsurprisingly, every application that runs on Leopard depends on that version of ApplicationServices in order to even launch, including System Preferences, as well as the Classic Startup application itself (as long as it's being opened from the Leopard environment), and this repeats in more or less the same behavior even if the ApplicationServices binary hidden within the framework bundle was the only thing replaced.
So in summary, Classic being unable to run on Leopard is not a kernel problem at all, but an incompatible framework problem. In order to get Classic running on Leopard, you would need to somehow preserve ApplicationServices' ability to launch applications, while at the same time containing those symbols required to start Classic. That said, given that both ApplicationServices binaries are closed-source, and that said missing symbols are not pieces of text you can just move around the binaries, this would probably depend on getting the open-source versions of both binaries, and then recompiling one to include the symbols as per required by Classic Startup.
I hope that was helpful.
Last edited: