KB-9900 Upgrading macOS on a device with OpenCore

This article explains what steps need to be taken before updating macOS if the device is running OpenCore. Many older Macintosh computers will use OpenCore to be able to support newer Operating Systems. Ensuring that the user knows what OpenCore does and how it works together with the Operating System is an important step in preventing system errors.

Key Notes

  • OpenCore is a bootloader installed in the EFI partition of the drive that the Macintosh will boot from by default
  • OpenCore loads the necessary kernel extnensions (kexts) to allow for the Macintosh's hardware to properly work with macOS versions which no longer provide those kexts automatically
  • OpenCore periodically adds support for newer macOS versions via its own software update cycle, allowing for the Macintosh to upgrade to these versions once the newer kexts are installed.
  • If you use a Mac with OpenCore and aren't sure what these Key Notes mean, don't update macOS on your system.

 

Background Details

Macintosh computers support a range of different operating systems (OS), any of which can be installed provided that the chosen OS includes the correct drivers to control the hardware of the device. Usually a version of macOS (previously Mac OS X) or Windows will be installed, but other OS types are also able to run on Mac.

Conventionally Apple will provide built-in support for Macintosh computers for a period of time. During this time, the newest version of macOS will always include the necessary drivers and kexts to interface with the hardware of the Mac. At a point in time, Apple may decline to include these kexts in new versions of macOS, meaning that the new version isn't able to work on the device from that point onwards. However, if these kexts are re-installed, then newer versions of macOS are able to run properly. This can be done manually, but software tools can also accomplish the same result in a much more robust way.

OpenCore is such a software package. OpenCore is an EFI boot manager - it runs before any part of the operating system is loaded. This is similar to how system updates are performed, which can also use the EFI partition on the boot drive to perform tasks without the OS being loaded and causing issues. OpenCore loads the necessary kexts and drivers to allow older hardware to interface with newer OS versions which don't automatically include the correct drivers.

OpenCore Legacy Patcher is an application which manages OpenCore, in addition to installing additional patches that solve other types of bugs which may be present when using newer macOS versions. Two of the most common and important patches are legacy WiFi support (where older networking devices aren't recognised preoprly) and Metal GPU API support (where graphics is handled in a different way such that older graphics devices have severe difficulty performing).

Process

OpenCore must be installed prior to installing an OS that requires it. If an OS is installed that does not include the right kexts without OpenCore, then it cannot load properly and system errors may occur.

First, check if you have OpenCore Legacy Patcher installed:

 

The OpenCore app will be in the applications folder. It may also be stored in Library>Application Support>Dortania

If you have OpenCore installed, follow the steps below. If you need to install OpenCore, you can download it from https://dortania.github.io/OpenCore-Legacy-Patcher/ where there are also in depth guides on how to use and configure OpenCore.

Once you have OpenCore Legacy Patcher installed, you can use it to configure OpenCore on your Mac:

OCLP GUI Main Menu

Upgrading

macOS manages system updates via the Software Update section in System Preferences.

It is important to remember that macOS is not able to determine that OpenCore is managing certain kext installations. Therefore, Software Update will present updates that may not include the necessary kexts that your Mac needs to run.

Do not update macOS unless the OpenCore installation that you have currently configured is compatible with the new version.

This usually applies to major version numbers - the first number in the version. However some breaking changes can occur when the minor version number is incremented too:

 macOS Ventura

13.

5.

1

Major version number Minor version number Patch number

Security patches and other small updates that are not system-wide should be installed for system stability. Updates for software packages and apps should be installed but be aware that the same issue may occur - new versions of software can drop support for older hardware. Check the update notes to see if this is the case.

Firstly, ensure that OpenCore Legacy Patcher is up to date. The app will periodically check for updates in the background and prompt you to update it - you should do this if you intend to upgrade macOS now or at a later date. You can also check for updates in the app or via the OCLP website.

Read the update notes carefully for the update. This will explain what versions of macOS OpenCore is suitable for and if any new versions are now supported. It will also explain any common issues that may occur when upgrading.

Install the update to OpenCore. Then, if new features, kexts or patches are available, OCLP will also prompt you to install these. You must do this if you intend to upgrade macOS.

We do not recommend that you upgrade to a new major version of macOS. We pre-install macOS Ventura on most Macintosh computers we offer as it provides the best performance and experience. If you do upgrade macOS, always make sure you have a backup of your data.

 Model Identifier Pre-installed macOS Version Constraints
iMac 2009 iMac10,1 13.5 Ventura No Metal API graphics support
iMac 2010 iMac 11,2 13.5 Ventura No Metal API graphics support
iMac 2011 21.5 inch iMac 12,1 13.5 Ventura No Metal API graphics support
iMac 2011 27 inch iMac 12,2 13.5 Ventura Metal Support only with NVidia K2100M graphics
iMac 2012 iMac 13,1 13.5 Ventura

Metal API supported

Macbook Pro (2009 - 2012) - 13.5 Ventura

Dedicated GPU may be disabled under certain conditions

Macbook Pro (Retina) (2012-2015) - 13.5 Ventura

Metal API supported

Macbook Air (all generations)

Check the description page of the device or the Spec Sheet included with the item

 

We recommend only to use the macOS version that is shipped with the device. If upgraded to a new major version of macOS, we may not be able to provide technical or system support. Expect system issues or errors especially if the OpenCore patch notes advise so.

Always make sure you back up your data.

Post-Installation

Once the macOS version upgrade has been installed, you will need to re-patch the system to install certain system drivers and functionality again. On many systems, these patches will re-add support for wireless networking and bluetooth, graphics acceleration or USB1.x support.

When macOS boots into the Finder, open the OpenCore app and select Post-Install root patch. OpenCore may also show a notification that it has detected a macOS update and prompt you to run the patcher.

Once the patch process has completed, you will be able to use macOS as you did before. Remember that not all features of newer macOS versions will be available, supported, or perform properly on older Macintosh computers.

If you can't open the OpenCore app after installing an update

If you have upgraded macOS and are stuck on the login screen or Finder and can't move the mouse or use the keyboard, then your mouse or keyboard use USB1.1 and the upgrade has removed USB1.1 drivers. You will need to use input devices under USB2.x or higher to allow them to be recognised by macOS while you run the OpenCore app.

One method is to use a USB 2.0 hub between your input device and the Mac. The hub will ensure all devices connected to it communicate via the USB2.0 driver. alternatively, you can use a keyboard that includes a USB hub (for example keyboards with built in USB ports). Apple keyboards such as model A1243 work for this purpose, as do many keyboards with USB3.0 ports. A helpful guide is available on the OpenCore support site

Back to blog