What is an unsupported Mac? #

A Mac becomes unsupported when Apple’s latest operating system no longer runs on it, without our patches, of course.

Why should I run a patched version of macOS on my unsupported Mac? #

A newer version of macOS means you’ll have better security, and better support for the apps you want to use.

Why should I learn how to patch macOS? #

If you use an automatic patcher tool, you won’t have to do any work by yourself in order to patch macOS, but it’s still cool to know what your tool is doing, isn’t it? If you’d like to develop your own patcher tool, this writeup is a good place to start!

OS X 10.8 Mountain Lion #

What Macs became unsupported with this version’s release? #

The 32-bit driver problem #

Mountain Lion has a 64-bit kernel and no longer supports loading 32-bit drivers. This isn’t a problem for ATI cards since they have 64-bit drivers.

Mountain Lion beta 1 had a 32-bit kernel, which you can use on newer versions of Mountain Lion. However, this also requires replacing a bunch of system components with 32-bit copies from the beta. This method supports graphics acceleration on all Macs. With the stock kernel, you can only achieve graphics acceleration on ATI cards.

If you want to achieve graphics acceleration on all Macs, you have to remove these files:

You have to replace these files with older versions from 10.8 beta 1 (these can be obtained from this copy of OS X 10.8 Mountain Lion beta 1 from the Internet Archive):

You have to replace these with older versions from 10.7.5:

You have to replace these files with modified versions from parrotgeek1:

You should also replace this file with a modified version:

Specifically, to load this custom file from parrotgeek1, which you should also add:

If you want to achieve graphics acceleration on ATI Macs, you only have to replace these files with modified versions from parrotgeek1:

The 32-bit firmware problem #

Most older Intel Macs have 64-bit CPUs but still use 32-bit firmware, so they can’t load a 64-bit kernel. The MacBook3,1 and MacBook4,1 both have 64-bit firmware but still try to load a 32-bit kernel. The best solution is to use the official file from Yosemite, which seems to work without patches!

If you compile Apple’s boot.efi yourself, you can add support for Macs with 32-bit firmware. Due to the efforts of Piker Alpha, you can download pre-compiled copies from patchers. I used andyvand’s efilipo to combine the compiled 32-bit copy and Yosemite file into one single boot.efi file which supports all unsupported Macs.

What projects can I use/browse for more information? #

parrotgeek1 released NexPostFacto 10.8 32-bit for running Mountain Lion on unsupported Macs and NexPostFacto 10.8 64-bit for unsupported Macs with ATI cards.

I also released a tool of my own, OS X Patcher, which uses parrotgeek1’s acceleration patches to provide the acceleration support.

What new patches do I have to use for this version? #

Delete all ATI and AMD drivers before replacing them, otherwise your system won’t boot.

If you don’t want to achieve graphics acceleration, you have to replace these with older versions from 10.6.2 beta 1 (these can be obtained from these copies of Mac OS X 10.8 Snow Leopard betas from the Internet Archive):

You have to replace these with older versions from 10.7.5:

You have to replace this one with an older version from 10.8.4:

If you’re using a Macmini1,1 or Macmini2,1 and you haven’t already replaced these files, you have to replace this one with an older version from 10.8.3:

And you have to replace this one with an older version from 10.8 beta 1 (this can be obtained from this copy of OS X 10.8 Mountain Lion beta 1 from the Internet Archive):

OS X 10.9 Mavericks #

The 32-bit driver problem #

Mavericks has a 64-bit kernel and no longer supports loading 32-bit drivers. This isn’t a problem for ATI cards since they have 64-bit drivers.

Mountain Lion beta 1 had a 32-bit kernel, which you can use on newer versions of Mountain Lion. However, this also requires replacing a bunch of system components with 32-bit copies from the beta. This method supports graphics acceleration on all Macs. On Mavericks, you can only achieve graphics acceleration on ATI cards.

If you want to achieve graphics acceleration on ATI Macs, you have to replace these files with modified versions from parrotgeek1:

What projects can I use/browse for more information? #

parrotgeek1 recently released NexPostFacto 10.9 for running Mavericks on unsupported Macs with ATI cards.

I also released a tool of my own, OS X Patcher, which uses parrotgeek1’s acceleration patches to provide the acceleration support.

OS X 10.10 Yosemite #

What projects can I use/browse for more information? #

Acceleration may be possible on unsupported Macs with ATI cards but no tool has been released.

I released a tool of my own, OS X Patcher, which doesn’t support graphics acceleration, but it’s still useful for some!

OS X 10.11 El Capitan #

The 32-bit firmware problem #

Most older Intel Macs have 64-bit CPUs but still use 32-bit firmware, so they can’t load a 64-bit kernel. El Capitan updated the way kernel cache is handled, and thus needs a recompiled boot.efi file for Macs with 32-bit firmware.

If you compile Apple’s boot.efi yourself, you can add support for Macs with 32-bit firmware. Due to the efforts of Piker Alpha, you can download pre-compiled copies from patchers. I used andyvand’s efilipo to combine the recompiled 32-bit copy and stock file into one single boot.efi file which supports all unsupported Macs.

What projects can I use/browse for more information? #

Acceleration may be possible on unsupported Macs with ATI cards but no tool has been released.

I released a tool of my own, OS X Patcher, which doesn’t support graphics acceleration, but it’s still useful for some!

What new patches do I have to use for this version? #

El Capitan updated drivers for input devices such as the mouse and keyboard, you have to replace these with older versions from 10.10.5:

And this one with a modified version of the stock 10.11.6 copy:

Specifically, remove the following files from Contents/PlugIns:

What new steps do I have to use for this version? #

El Capitan updated the way kernel cache, which stores cached versions of drivers, is handled. You now have to update it after replacing any drivers. You can do so by running “kextcache -f -u”.

macOS 10.12 Sierra #

What Macs became unsupported with this version’s release? #

What Macs are still unsupported (but supported by patchers)? #

What projects can I use/browse for more information? #

dosdude1 released macOS Sierra Patcher, a simple to use app for running Sierra on unsupported Macs.

I released a tool of my own, macOS Patcher, which uses a command-line interface instead of an app, but works in a similar way. It also supports the MacBook4,1, but without graphics acceleration.

What new patches do I have to use for this version? #

You have to replace these with older versions from 10.11.6:

You have to add these custom files from parrotgeek1:

The Trackpad.prefPane file is created by replacing these files:

With this file:

You have to add these custom files from Czo:

If you’re using a MacBook4,1, you have to replace these with older versions from 10.11.6:

If you have an iMac7,1, iMac8,1, MacBook4,1, MacBookAir2,1, MacBookPro4,1, Macmini3,1, or MacPro3,1, you have to replace these with older versions from 10.11.6:

What new steps do I have to use for this version? #

Sierra updated the command for updating the kernel cache, which stores cached versions of drivers. You now have to update it by running “kextcache -i” or “kextcache -u”.

macOS 10.13 High Sierra #

The APFS firmware problem #

High Sierra introduced a new Apple File System (APFS) optimised for Solid State Drives (SSDs). Supported Macs can use it through a firmware update which was bundled with the High Sierra update. Unsupported Macs can’t boot from APFS volumes since they didn’t receive the firmware update.

You can work around this by using an EFI shell script, which loads the stock APFS driver, and boots from the predefined volumes. To do this you’ll have to copy two files into the EFI partition along with the apfs.efi file from /usr/standalone/i386/apfs.efi (this should be dynamically copied by your patch tool)

What projects can I use/browse for more information? #

dosdude1 released macOS High Sierra Patcher, a simple to use app for running High Sierra on unsupported Macs.

I released a tool of my own, macOS Patcher, which uses a command-line interface instead of an app, but works in a similar way. It also supports the MacBook4,1, but without graphics acceleration.

What new patches do I have to use for this version? #

You have to replace these with older versions from 10.12.6:

What new steps do I have to use for this version? #

The PlatformSupport.plist file has to be deleted from the Preboot volume too. Your patch tool should find the UUID of your system volume, then mount the Preboot volume and delete this file: /UUID/System/Library/CoreServices/PlatformSupport.plist

macOS 10.14 Mojave #

What Macs became unsupported with this version’s release? #

What Macs are still unsupported (but supported by patchers)? #

What projects can I use/browse for more information? #

dosdude1 released macOS Mojave Patcher, a simple to use app for running Mojave on unsupported Macs.

I released a tool of my own, macOS Patcher, which uses a command-line interface instead of an app, but works in a similar way. It also supports the MacBook4,1, but without graphics acceleration.

What new patches do I have to use for this version? #

You have to replace these with older versions from 10.13.6:

You have to replace these with older versions from 10.14.3:

You have to replace this one with an older version from 10.14.4:

You have to add these custom files from Syncretic:

MouSSE is a partial SSE4.2 emulator that allows the MacPro3,1 to use the newer AMD drivers.

telemetrap is a blocker for com.apple.telemetry.plugin in /System/Library/UserEventPlugins that allows Macs with Intel Core 2 Duo CPUs to boot.

You have to replace this one with a modified file from ASentientBot:

This file is created by modifying the SkyLight or SkyLightOriginal binary in Contents/MacOS for macOS 10.15 Catalina as follows:

0x216c60: NOP

You have to replace this one with a modified file from ASentientBot:

This file is created by modifying the GeForceTesla binary in Contents/MacOS by NOPing the following call:

nvVirtualAddressSpaceTesla::free() + 183

macOS 10.15 Catalina #

What Macs became unsupported with this version’s release? #

The non-Metal acceleration problem #

With the release of Mojave, support for Macs without Apple’s Metal graphics framework was dropped. This wasn’t too much of a problem since older versions of Mojave drivers and frameworks were all that was required to patch it. However, Catalina introduced some more changes to two of those, so they couldn’t be replaced.

ASentientBot created wrappers to port the Mojave versions of CoreDisplay and Skylight to Catalina. The wrappers are stable enough to be used on a daily driver but they’re more of a workaround, than a proper solution, and have to be updated for most new Catalina releases.

The Library Validation problem #

The acceleration wrappers unfortunately trip one of Apple’s security systems: Library Validation. This is due to WindowServer, conflicting with the SkyLight wrapper, which replaces the original binary.

You can disable Library Validation by running “sudo defaults write /Library/Preferences/com.apple.security.libraryvalidation.plist DisableLibraryValidation -bool true”. This requires System Integrity Protection (SIP) to be disabled as well, which can be done in two ways: a patched boot.efi file (in /System/Library/CoreServices) or by running “csrutil disable”.

ASentientBot created this patched boot.efi file by modifiying the boot.efi from the final release of macOS 10.15.4 Catalina. The assembly is as follows:

0x1b842: mov dword[rcx+0x498],0xffffffff
or byte[rcx+0x6],0x8
ret

The modern updates problem #

Catalina added a new read-only system volume which only works with Apple’s modern updates. Before installing an update, you need to set -no_compat_check in your nvram boot arguments, using the following command:

if [[ ! "$(nvram boot-args | sed 's/boot-args	//')" == *-no_compat_check ]]; then
	nvram boot-args="$(nvram boot-args | sed 's/boot-args	//') -no_compat_check"
fi

For Macs that don’t support APFS, you have to use an EFI shell script, which loads the stock APFS driver, and boots from the predefined update volume, then the predefined volume if the update volume isn’t found. To do this you’ll have to copy two files into the EFI partition along with the apfs.efi file from /usr/standalone/i386/apfs.efi (this should be dynamically copied by your patch tool)

I patched an update binary to allow us to set the boot argument and copying the EFI shell script designed for updates. This is more of a workaround, than a proper solution, and might have to be updated for new Catalina releases.

The patched atomicupdatetool binary only replaces /usr/sbin/nvram with /sbin/swuinstal and /sbin/reboot with /sbin/swuble. This patch can be made by using a hex editor, such as the open source Hex Fiend app on macOS.

I use also another script to replace the EFI shell script designed for updates with the one that the patch tool installs, but only if the system version is newer than the previous system version. This is to decrease the time it takes to boot, as the EFI shell script doesn’t need to check for the predefined update volume first.

What projects can I use/browse for more information? #

dosdude1 released macOS Catalina Patcher, a simple to use app for running Catalina on unsupported Macs.

I released a tool of my own, macOS Patcher, which uses a command-line interface instead of an app, but works in a similar way. It also supports the MacBook4,1, but without graphics acceleration.

What new patches do I have to use for this version? #

You have to replace this one with an older version from 10.12.6:

You have to replace these with older versions from 10.14.6:

You have to replace these with older versions from 10.15.3:

You have to replace this one with an older version from 10.15 beta 6:

You have to replace this one with a modified file from ASentientBot:

This file is created by modifying the GeForceTesla binary in Contents/MacOS by NOPing the following call:

nvVirtualAddressSpaceTesla::free() + 183

And the following addresses:

0x5527
0x77993

What new steps do I have to use for this version? #

The acceleration wrappers conflict with the dyld cache, which stores cached versions of dylibs. If you have these acceleration wrappers on your system, you now have to update the dyld cache after replacing CoreDisplay and SkyLight. You can do so by running “update_dyld_shared_cache”.

The patched boot.efi file for disabling Library Validation has to be replaced in the Preboot volume too. Your patch tool should find the UUID of your system volume, then mount the Preboot volume and replace this file: /UUID/System/Library/CoreServices/boot.efi

Catalina Unus #

Catalina Unus is a command line tool for running macOS Catalina on one HFS or APFS volume. It does this by using the BaseSystem.dmg file from Mojave, and making some changes to allow installing using this method and to resemble a Catalina installer. It then copies the template for the Catalina data volume to the system, and makes sure all data in the Recovered Files folder is moved back to the system.

You have to remove this folder from the data volume template before copying it to the system:

You have to copy this folder to the system:

You have to copy the data in this folder to the system:

You can do this using the following commands:

for folder in /Recovered\ Items/*; do
	/System/Library/PrivateFrameworks/PackageKit.framework/Versions/A/Resources/shove "$folder" /${folder#/Recovered\ Items/}
done

rm -r /Recovered\ Items

rm -r /System/Library/Templates/Data/private/var/db/dslocal

ditto /System/Library/Templates/Data /