Become a MacRumors Supporter for $50/year with no ads, ability to filter front page stories, and private forums.
Status
The first post of this thread is a WikiPost and can be edited by anyone with the appropiate permissions. Your edits will be public.
I guess not this time. My goal is to get it running as soon as I can and I could certainly use the help of people more or even less experienced than me. And thanks to @dosdude1 and @Larsvonhier, I now have my own MacBook4,1 to use for testing unsupported macOS on. As I'm currently the only developer who is developing a patcher tool that supports the MacBook4,1, this is very useful for me. Thanks a lot to both of them.

Hello, I am trying to install Mojave or Calina on my Macbook 4.1 and I saw your patch here in the forum, however I am not an advanced user and I would like to know if you have a tutorial on how to create an installation through your patch. Thank you.
 
Did you receive any replies to your question?

I managed to install Catalina on the following iMac early 2008:
iMac8,1 2.66 GHz Core 2 Duo (E8335) with 20” display and ATI Radeon HD 2600 Pro graphics card.

Used Dosdude1's APFS ROM patcher, as described on page 64 and his PartialPatcher from page 70.

Not everything works yet, but it would be worth a try to see if your model is supported. According to the graphics card, it would appear to be a 24".

Installed Catalina Beta 19A501i today on an iMac early 2008 with a 20" screen and an ATI Radeon HD 2600 Pro graphics card. Used the latest version of Dosdude1's patcher, including the post-installation patches. WiFi now works, which is a real step ahead from the previous version.

Photos crashes within a few seconds of opening with the attached error report.

It is not possible to download Numbers, Keynote or Pages in the AppStore. System keeps on repeatedly asking for the AppleID password. Same happens signing on to iMessage. This problem is not caused by an incorrect password. Incorrect log-ins generate a "Your AppleID or password was incorrect message." A valid log-in returns "An error occurred during activation. Try again." Screenshots attached.
 

Attachments

  • Photos_Error_Report_iMac8,1.txt
    125.1 KB · Views: 262
  • Screenshot 2019-07-05 at 12.57.36.png
    Screenshot 2019-07-05 at 12.57.36.png
    19.6 KB · Views: 238
  • Screenshot 2019-07-05 at 12.58.13.png
    Screenshot 2019-07-05 at 12.58.13.png
    39.2 KB · Views: 285
Drift screensaver seems to be not working on MP3,1 with GTX680 metal card running Cat3b installed by latest dosdude1 patch. All other screensavers are working and Drift works on supported macs.

I wonder if the Drift screensaver requires Metal 2? It is confusing that Apple doesn't seem to explicitly list which GPUs are stuck on Metal 1. The Iris Plus 640 on my MacBook 14,1 under 10.14.5 still shows v1 so I assume, if those don't have feature set for Metal 2, that Apple will code most everything to Matal 1 until those machines are unsupported.
 
I can definitely see where you're coming from with that.

...Call me crazy, but I will always continue to use "old-school" programming languages, simply due to their extremely established nature, and the fact that these "old" languages (C, C++, mainly) will always be relevant. I don't want to write in some "more user-friendly" language, and hide from all the nitty-gritty that most people don't want to deal with. I like the challenges that come with "old-school", lower level programming languages, and I believe learning how to work with them makes you a much better programmer, even when using higher-level languages.

Lastly, I just want to thank you for your support, I really appreciate it. While I may not be into the most "cutting edge" in programming, there is definitely place for those who are, like yourself, and I definitely see and accept that. Thanks for all the work you've done, and I look forward to trying CloneToolX when it's all finished.

You are spot on about Objective-C. If I remember things correctly, when Steve Jobs first started NeXT, he wanted to make a Mac clone. I don't know how publicized this became. I remember reading it in MacWorld magazine, when we had actually computer magazines like Compute! Apple as I recall denied NeXT from doing this. So Jobs decided to create a whole new operating system. The NeXT computers were all black. One was in a cube shape another was a pizza box. The keyboards and mouse were black and Jobs even had the Mac keyboard layout on NeXT machines (not the PC layout). NeXT also had the very first web browser and I believe it was the very computer on the Internet.

Imagine if Apple never purchased NeXT. There would be no Apple today. We would not have FreeBSD / Darwin under the hood. Man I haven't run Darwin by itself in ages. The first CloneTool ran off Darwin a decade ago during my Hackintosh days.

Apple later tried to replace Mac OS 9 on their own with several code name operating systems. Copland sticks in my brain, but there were others. If an app crashed in Mac OS 9, it used crashed the whole system. After many failures, Apple decided to purchase NeXT and Steve Jobs became interim CEO and later became CEO. Jobs was back at the helm and Apple kept many NeXT things like you said. We used to have .NIB files that should for NeXT Interface Builder. IB has a huge role in Xcode, 20+ years later. IB has its own App at one time. Also NS prefixed classes stand for NeXT Step, the name of NeXT's operating system, which I think you also mentioned. There was also Open Step that I think ran on ordinary PCs.

NeXT marketed themselves with schools and research firms. I don't know how many boxes they actually sold. It was a failure as far a growth under NeXT, a success as far as becoming Mac OS X and iOS.

You are 100% correct about Objective-C's legacy. My only beef with it was if I put it down for an extensive period of time, it would take me a day to relearn things. But that could be true for almost any computer language. I also come heavily from a scripting background starting with AppleScript and before that BASIC, HyperCard and other some scripting languages that were in specialized IDEs like Gary Kitchens Game-Maker for the C-64. So anything that resembles a scripting language is easier for me to learn. At my day job, it's all JavaScript. Like AppleScript, JS can be used to automate Macs as well.

Swift does have some major short comings. You can write it like a JavaScript app and not use any Classes, Enums, Structs or any higher level stuff. And that came be bad as Apple does not structure the Swift templates very well and you can literally bind your logic to the View Controllers which is a lot like AngularJS 1.x. In order to follow MVC and OOP practices, you basically have to engineer that yourself. It's not hard, but Apple leads a novice programmer down a narrow procedural path and even I cling to it when starting a new Apple and I have to look at my previous projects on how to make it more OOP and less procedural. OOP can be done in Swift and when you get that far with it, it starts to resemble Java, and not JavaScript.

At my day job we use JavaScript client side and ColdFusion Script / CFScript server side and all the engineers here don't like Swift at all. I did a POC for it and al they saw was a Java like syntax. They hated that you did not have to use Semi-Colons. They are very much clinging to CFScript which is a dead language and its very expensive to run a business from. That is one thing I love about Swift on the server side. It's free unlike Java is today. Swift runs extremely well in the command line for server side apps. Perfect is killer with it and runs faster than Node.js. Perfect uses C for its processor intensive stuff like HTTP, and HTTPs / SSL and the rest of it is in Swift. It's has a pretty good syntax for V3. V4 uses SwiftNeo and that's much more lower level and is harder to use. I haven't adopted Perfect's V4 alpha yet because V3 runs so well.

I am going to look more into the way linking of Apple's Swift libraries work and I may be able to make then static or what Jackluke suggested and link them to my app. If I can take what's needed any make it part of the app and get the work, then the base system would not need to be patched up nearly as much. If that doesn't work, plan B would be to whittle down the Swift libraries and only include what's needed keeping the base system small enough to fit on a CD. If I cannot get it that small. It will use about 1-2GB tops. And CloneToolX will be able to clone its startup disk to a drive and maybe burn a CD.

I can also start up a new project, and start porting over code to Objective-C. It will be educational experience. And I can use that as an Example in my portfolio.

I do use Objective-C objects still for many things with Swift. NSDictionary in my opinion has more control than Dictionary. Over time Apple is making things easier to use native Swift objects. And I am sure Apple will start cleaning up the mess they made with the current Swift Libs. Swift is constantly moving forward. This can be seen as progress, but I can be a headache and with Apple auto-updating many iPhones, if you are using Swift, you usually have to get on board pretty quickly with the next version and this can be scene as a bad thing. I am trying to stick to iOS 12 right now because those apps work in iOS 12 and later, but Swift 5 will be used. I did have some problems with some objects in Swift 5 and had to fix one line in some open source code from Perfect to stop from crashing.

It is harder in Swift to keep things backward compatible. I think I am able to go as far back as macOS 10.10, but I will need to test those OS'. It is going to be fun tracking down some installer apps. Apple makes them harder download previous versions of macOS / Mac OS X. Will see if any of my old Macs can still boot up to older OS', so I can download them for testing.

I also have Anka Build macOS VMs that I can test things out with. For full disclosure, I am an official Anka Build advocate.
 
Last edited:
Hi - I agree with your perspective on the whole Swift vs. ObjC thing. With 25+ years of C, C++, ObjC (heck SmallTalk and NextStep) experience behind me, Swift is a breath of fresh air and a legitimate response to years of stagnation while software language science has evolved by leaps and bounds since the 90s. One of the issues with Swift has been the design by committee open-source approach that Apple boldly took. Largely because of Chris Lattner (imho a genius in his own right - just take a look at llvm) The result has been great for fsf open source geeks like me, but watching the sausage being made has frustrated many. Luckily Swift 5+ is a major step towards stability and once they achieve true binary compatibility...

The modern language purists will recognize its strengths, hands down. Then again there is absolutely nothing you can't do in ObjC - it's perfect for writing utilities, drivers etc. It affords the same low-level access as C and C++ with a little SmallTalk inspired object-oriented messaging sprinkled in. I believe all these languages are just different tools to be selected for the right job.

Swift UI is in its infancy, currently I fail to see its appeal and won't waste my time anymore with it. Just another example of Apple wasting precious resources on shiny new toys we really don't need, but who knows maybe it will mature into something useful...

Good job on CloneToolX - you've already done the heavy lifting in Swift - port to something else only if you have to. Time is also a precious commodity...
Thanks. I think I will still port it to basically have a good example of either, but it will be done afterwards.

This is one of my smallest Apps I've ever made. One thing I want to add is Data Volume to Volume Data file copy using either ditto or rsync. asr and hdiutil are block based only. Apple removed its file copy. :( But Ditto and Rsync can easily handle that.

I may also add DD to a DMG only to support non apple operating systems and hopefully ASR can restore those as it will be much more flexible if it can.

So there may be 5 Schemes added. Well maybe more, if I start OTA restores and CloneToolX itself will be the first disk image that a user will be able to restore from the cloud to a drive.

When using asr, I am gonna have to warn the user that it will replace the entire disk. Now if they have it sectioned off with APFS partitons, it should only affect that part of the drive. But I have told asr to clone a slice and saw it clone the whole drive. So I need to test that aspect pretty heavily and an ensure it's doing what the user expects.

But Data to Data copies can just do slices. So that will definitely be an option. My goal is to take a clean install and the copy the Data volume from another one. Simple.

A lot of this stuff you can do in the command line, but when it's automated, you're like, this is so easy, why would I want to type in that long string again? That's why I've been noticing the most with CloneToolX. Kinda crazy to get back into this game, but I think it's good timing. I do want to make the UI look better, but that will come later too. I'd like to have disk image icons like what dosdude1 and many other cloning tools are doing.
 
Last edited:
Hey everybody! Nothing huge here, but I'm uploading a small update to the SkyLight/CoreDisplay wrappers that fixes a couple annoying glitches by re-implementing some functions that were previously just stubs:
Dock rect functions: Maximizing a window will no longer send its bottom edge below the Dock, and windows will properly "stick" against its edge as in Mojave.
Session switch function: The correct transition (cube or fade) will be used for user switching and logout.

@dosdude1 and @0403979, please update these frameworks in your patchers.
Confirming here
Works verry good thank you @ASentientBot

141111934_Capturedcranle2019-07-0508_33_20.thumb.png.49f866c56014867a4a76696b99781229.png
 
I have a newbie question.

For Mojave and Catalina on an APFS Volume, how does one prevent the 'EFI Boot' disk from showing by itself on these partitions in Apple's boot loader. Is there a bless command that will hide it?

What I get are several EFI Boot disks and several APFS boot volumes. I can boot from either one, but I'd like to clean that up when I hold the option key down. I am not having an issue labeling HFS+ volumes. When these are EFI Boot, I can just use something like:

bless --folder path --label 'myLabel'

and it works as only one disk shows up for HFS+. On APFS, I get the APFS Volume and the EFI volume that pops up for each disk that has macOS on it.
 
  • Like
Reactions: TimothyR734
I have a newbie question.

For Mojave and Catalina on an APFS Volume, how does one prevent the 'EFI Boot' disk from showing by itself on these partitions in Apple's boot loader. Is there a bless command that will hide it?

What I get are several EFI Boot disks and several APFS boot volumes. I can boot from either one, but I'd like to clean that up when I hold the option key down. I am not having an issue labeling HFS+ volumes. When these are EFI Boot, I can just use something like:

bless --folder path --label 'myLabel'

and it works as only one disk shows up for HFS+. On APFS, I get the APFS Volume and the EFI volume that pops up for each disk that has macOS on it.
That's just a glitch with the APFS ROM Patch. Unfortunately there's really not much that can be done about that.
 
Hey everybody! Nothing huge here, but I'm uploading a small update to the SkyLight/CoreDisplay wrappers that fixes a couple annoying glitches by re-implementing some functions that were previously just stubs:
Dock rect functions: Maximizing a window will no longer send its bottom edge below the Dock, and windows will properly "stick" against its edge as in Mojave.
Session switch function: The correct transition (cube or fade) will be used for user switching and logout.

@dosdude1 and @0403979, please update these frameworks in your patchers.
i can haz source code plz thx
 
@ASentientBot is your HID timeout patch still needed on Beta 3? Just wondering. I'm still using it.
I was getting timeouts without it, but feel free to test it yourself -- might be different with different hardware.

Side note: I'm don't actually know why the IOHIDFamily isSingleUser() patch works; I just noticed that there were never timeouts after booting single-user mode so I took a lucky guess. I assume it is somehow related to the fact that the keyboard needs to be initialized sooner in order to use the root terminal. But I haven't actually gotten around to investigating the functions that call isSingleUser() or how they behave differently when it's been modified to always return true. At some point, I should do that. It might lead the way to a cleaner fix.

Side note #2: While I'm at it, I just confirmed that the IOSurface patches (removing code that references getRegionName() from IOSurfaceRoot::addMemoryRegion() and IOSurfaceRoot::removeMemoryRegion() functions) are still required to load the Tesla drivers without a kernel panic. This also needs to be investigated further because I have no idea why it fixes it.

Last edit: And, while we're at it, if we want to go really far back, why do we need to NOP the function call at 0x5cf9f in GeForceTesla to prevent a panic on Catalina and Mojave? (I tested a copy without the patch on DP1 or 2 and it is still required.)

I'd feel a lot better about these patches if half of them didn't rely on pure-luck assembler voodoo that I did at 3 AM and never revisited... lol
 
Last edited:
Thanks to all contributors, have successfully installed beta 3 on my iMac 8,1 using the Patcher.

However...

I previously replaced the wifi card with a BCM94322MC which was supported on Mojave without the Legacy WiFi Patch but the driver (AirPortBrcm4331.kext) has been removed. From posts elsewhere it appears that the Mojave version works ok. Could that be added to the Patcher?

Also ethernet does not work, can anyone advise if there is a Mojave driver that can be used?
 
Last edited:
  • Like
Reactions: TimothyR734
Thanks to all contributors, have successfully installed beta 3 on my iMac 8,1 using the patcher.

However...

I previously replaced the wifi card with a BCM94322MC which was supported on Mojave without the legacy wifi patch but the driver (AirPortBrcm4331.kext) has been removed. From posts elsewhere it appears that the Mojave version works ok. Could that be added to the patcher?

Also ethernet does not work, can anyone advise if there is a Mojave driver that can be used?
It actually is in the Patcher already; just apply the Legacy WiFi Patch using the post-install tool, and it should begin working. As for Ethernet, I need to investigate this. I assume this will be as simple as adding another kext from Mojave that was removed in Catalina. I'll have this fixed in the next Catalina Patcher release.
[doublepost=1562355147][/doublepost]
I was getting timeouts without it, but feel free to test it yourself -- might be different with different hardware.

Side note: I'm don't actually know why the IOHIDFamily isSingleUser() patch works; I just noticed that there were never timeouts after booting single-user mode so I took a lucky guess. I assume it is somehow related to the fact that the keyboard needs to be initialized sooner in order to use the root terminal. But I haven't actually gotten around to investigating the functions that call isSingleUser() or how they behave differently when it's been modified to always return true. At some point, I should do that. It might lead the way to a cleaner fix.

Side note #2: While I'm at it, I just confirmed that the IOSurface patches (removing code that references getRegionName() from IOSurfaceRoot::addMemoryRegion() and IOSurfaceRoot::removeMemoryRegion() functions) are still required to load the Tesla drivers without a kernel panic. This also needs to be investigated further because I have no idea why it fixes it.

Last edit: And, while we're at it, if we want to go really far back, why do we need to NOP the function call at 0x5cf9f in GeForceTesla to prevent a panic on Catalina and Mojave? (I tested a copy without the patch on DP1 or 2 and it is still required.)

I'd feel a lot better about these patches if half of them didn't rely on pure-luck assembler voodoo that I did at 3 AM and never revisited... lol
I haven't had to modify GeForceTesla in any way... Mojave Patcher and Catalina Patcher use stock, unmodified versions from 10.13.
 
Last edited:
It actually is in the Patcher already; just apply the Legacy WiFi Patch using the post-install tool, and it should begin working.
I'm curious if you simply replace IO80211Family.kext from Mojave/an earlier OS, or if there is more to your patch (hacks involving PCI ID matching or whatever else)?

Also, have you included an ethernet fix in the patcher? At least on a 2010 MacBook (nVidia chip), copying the nvenet.kext plugin from Mojave's IONetworkingFamily.kext into the corresponding Plugins folder in Catalina is sufficient.
[doublepost=1562355383][/doublepost]
It actually is in the Patcher already; just apply the Legacy WiFi Patch using the post-install tool, and it should begin working. As for Ethernet, I need to investigate this. I assume this will be as simple as adding another kext from Mojave that was removed in Catalina. I'll have this fixed in the next Catalina Patcher release.
[doublepost=1562355147][/doublepost]
I haven't had to modify GeForceTesla in any way... Mojave Patcher and Catalina Patcher use stock, I modified versions from 10.13.
Wait... you haven't? As far as I knew, my patch to that kext (around this time last year) was what allowed acceleration on nVidia Tesla cards under Mojave. Before that, loading the drivers just caused a KP. Just checked and I'm still listed in the Mojave thread credits for this patch.

I've also tested an un-patched copy multiple times since then, and it always crashes at or shortly after the login screen.

I'm genuinely quite confused right now. Is there a different fix for that panic that I wasn't aware of?

Edit: Link to my post on the subject.
 
Last edited:
I was getting timeouts without it, but feel free to test it yourself -- might be different with different hardware.

Side note: I'm don't actually know why the IOHIDFamily isSingleUser() patch works; I just noticed that there were never timeouts after booting single-user mode so I took a lucky guess. I assume it is somehow related to the fact that the keyboard needs to be initialized sooner in order to use the root terminal. But I haven't actually gotten around to investigating the functions that call isSingleUser() or how they behave differently when it's been modified to always return true. At some point, I should do that. It might lead the way to a cleaner fix.

Side note #2: While I'm at it, I just confirmed that the IOSurface patches (removing code that references getRegionName() from IOSurfaceRoot::addMemoryRegion() and IOSurfaceRoot::removeMemoryRegion() functions) are still required to load the Tesla drivers without a kernel panic. This also needs to be investigated further because I have no idea why it fixes it.

Last edit: And, while we're at it, if we want to go really far back, why do we need to NOP the function call at 0x5cf9f in GeForceTesla to prevent a panic on Catalina and Mojave? (I tested a copy without the patch on DP1 or 2 and it is still required.)

I'd feel a lot better about these patches if half of them didn't rely on pure-luck assembler voodoo that I did at 3 AM and never revisited... lol
It is amazing how you are able to do these patches to binaries. Would love to know how one day, but I leave it to you guys.

Today I am messing with Anka Build mac VM with B3 on a supported 2018 Mac Mini (it’s remote). Unfortunately, Anka does not support Core2Duos. Cuz I would love it in my main box. It is very easy to use. I may have to try it on my 2011 iMac. I am creating test environments for CloneToolX.’ with various OS’.
 
  • Like
Reactions: TimothyR734
I'm curious if you simply replace IO80211Family.kext from Mojave/an earlier OS, or if there is more to your patch (hacks involving PCI ID matching or whatever else)?

Also, have you included an ethernet fix in the patcher? At least on a 2010 MacBook (nVidia chip), copying the nvenet.kext plugin from Mojave's IONetworkingFamily.kext into the corresponding Plugins folder in Catalina is sufficient.
[doublepost=1562355383][/doublepost]
Wait... you haven't? As far as I knew, my patch to that kext (around this time last year) was what allowed acceleration on nVidia Tesla cards under Mojave. Before that, loading the drivers just caused a KP. Just checked and I'm still listed in the Mojave thread credits for this patch.

I've also tested an un-patched copy multiple times since then, and it always crashes at or shortly after the login screen.

I'm genuinely quite confused right now. Is there a different fix for that panic that I wasn't aware of?

Edit: Link to my post on the subject.

I think there’s an easy way to check:
Open the binary from @dosdude1’s patcher and look if the region is modified or not...
I also thought your patches are necessary...
 
I haven't had to modify GeForceTesla in any way... Mojave Patcher and Catalina Patcher use stock, unmodified versions from 10.13.

If you used the ones in your Mojave Patcher then GeForceTesla is the @ASentientBot patched one.
[doublepost=1562356567][/doublepost]
I think there’s an easy way to check:
Open the binary from @dosdude1’s patcher and look if the region is modified or not...
I also thought your patches are necessary...

They are necessary without doubt.
 
I'm curious if you simply replace IO80211Family.kext from Mojave/an earlier OS, or if there is more to your patch (hacks involving PCI ID matching or whatever else)?

Also, have you included an ethernet fix in the patcher? At least on a 2010 MacBook (nVidia chip), copying the nvenet.kext plugin from Mojave's IONetworkingFamily.kext into the corresponding Plugins folder in Catalina is sufficient.
[doublepost=1562355383][/doublepost]
Wait... you haven't? As far as I knew, my patch to that kext (around this time last year) was what allowed acceleration on nVidia Tesla cards under Mojave. Before that, loading the drivers just caused a KP. Just checked and I'm still listed in the Mojave thread credits for this patch.

I've also tested an un-patched copy multiple times since then, and it always crashes at or shortly after the login screen.

I'm genuinely quite confused right now. Is there a different fix for that panic that I wasn't aware of?

Edit: Link to my post on the subject.
Ohhh, my bad, yes, that is currently in use. It's been so long I completely forgot. I apologize for the confusion.
 
Ohhh, my bad, yes, that is currently in use. It's been so long I completely forgot. I apologize for the confusion.

If I don't get wrong during Mojave, you patched the IntelHD HighSierra kext, since the earlier opengl fallback was only possible with stock Sierra kext, so maybe also them are still in use on Catalina.

Wait I thought Tesla works OOB? Or is it only Kepler?

Kepler, but to work OOB the untouched metal-frameworks are needed.
 
  • Like
Reactions: avz and TimothyR734
Just released a new update to Catalina Patcher! This new version includes the following changes:
  • Added support for the legacy Marvell Ethernet controllers found in iMac7,1 and 8,1, as well as MacBookPro4,1 systems
  • Added support for legacy Intel Parallel-ATA/IDE controllers, now allowing the stock IDE/ATAPI optical drive to work correctly in iMac7,1, 8,1, MBP4,1, and MacPro3,1 systems
  • Updated the Legacy Video Card Patch with @ASentientBot's latest wrappers
  • As an added bonus, the program is now fully signed! You should no longer get the "unidentified developer" warning upon opening the application.
 
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.