OpenCore on Legacy Apple Hardware
This guide explains how to use the excellent
OpenCore (OC) bootloader on a Mac Pro 5,1 (with upgraded Westmere Xeons and Boot ROM version 144.0.0.0.0) to install, run, and update macOS Catalina, resulting in a clean, unpatched operating system no different than what you would find on a supported Mac.
The main advantage of using OC vs
other tools on a Mac Pro 5,1 is that it makes
Software Update work.
Another advantage is
boot screen.
In a historic development, OC developer
@vit9696 has brought basic boot-picker support to the Mac Pro 5,1 with standard UEFI GOP graphics cards (special thanks to
@startergo for the relentless testing)! You can read about it
here. See also Section 9 below.
Guide
This guide provides a hands-on approach to installing and configuring OC.
1. Setup
Disk A. Newly APFS-formatted drive (GUID scheme)
This is where OC and a clean install of Catalina will go.
Disk B. macOS Mojave
Installation and configuration will be done from here. (To ensure a bootable fallback after an NVRAM reset, it is recommended that Disk B be a SATA disk in Bay 1 and that it always be present alongside Disk A.)
2. Materials
A. The application "Install macOS Catalina" (the full installer)
B. OpenCore
See the
releases page of the project site. Download OpenCore-
0.5.5-RELEASE.zip. The uncompressed folder will be referred to here as "OpenCore."
C. Basic configuration file
Provided in this post. Download config.zip. The uncompressed file is "config.plist".
The configuration described in this guide should be perfectly safe, but please be aware of the following:
WARNING!
Using OpenCore without extensive knowledge of the configuration options
may lead to a bricked Mac.
Because OC is in active development, the configuration file for the current version (
0.5.5) will likely be incompatible with future (or past) versions. You are encouraged to take a look at the very comprehensive manual provided with OC before proceeding.
3. Installing OC
a) Mount the EFI partition of Disk A: To find the identifier of the partition, enter the following in terminal:
The identifier will be something like "disk0s1;" the next step will assume that this is the case.
Code:
sudo diskutil mount /dev/disk0s1
You may need to authorize this. The partition should mount as /Volumes/EFI and appear as "EFI" in Finder.
b) Copy the OpenCore/EFI folder to the EFI partition. The resulting folder, /Volumes/EFI/EFI, should contain the folders OC and BOOT.
c) Copy config.plist to /Volumes/EFI/EFI/OC.
4. Configuration
The file config.plist can be edited with any plist editor and even with TextEdit; the following steps will assume TextEdit.
a) Open config.plist with TextEdit.
b) Enable the VMM flag: Find the Cpuid1Mask entry, and carefully change
AAAAAAAAAAAAAAAAAAAAAA==
to
AAAAAAAAAAAAAACAAAAAAA==
. The value should now be the same as for Cpuid1Data.
Remark: VMM flag spoofing is only possible with Westmere Xeons. Nehalem and older Xeons don't have the hardware requirements to support Apple Hypervisor and can't enable VMM flag spoofing.
c) Enable boot entry preservation: Find the RequestBootVarRouting entry, and change
false
to
true
.
d) Close the file. It should be saved automatically (select OK if informed about there being no permanent version storage).
The purpose of doing these steps explicitly is to be able to reverse them if desired.
5. Booting
a) Reboot into recovery mode by entering
Code:
sudo nvram "recovery-boot-mode=unused" && sudo reboot recovery
You may need to authorize this. Be patient. Mac Pro boot times can be long, especially when booting into recovery mode.
b) Carry out step 3a (sudo is not needed in recovery).
c) Set the partition for booting:
Code:
bless --mount /Volumes/EFI --setBoot
If the above fails, try:
Code:
bless --mount /Volumes/EFI --setBoot --file /Volumes/EFI/EFI/BOOT/BOOTx64.efi --verbose
d) Shut down the Mac and do an SMC reset (unplug the power cord, wait 15 seconds, plug the power cord back in, wait 5 seconds, and then press the power button).
Remark: Being installed on Disk A, OC can have trouble seeing Disk B. Doing an SMC reset helps ensure that Disk B is seen when OC starts.
e) Power up the machine. OC should boot Disk B (currently the only macOS system).
Be patient. Mac Pro boot times can be long. If it seems that the machine is not booting up. Hold the power button to shut down the machine. Do an NVRAM reset on the next power up (immediately press and hold Option, Command, P, and R, and release after 20 seconds or after you hear the second startup chime). The Mac should boot without OC. Recheck all the steps above.
f) Booted into the system on Disk B, verify that it is indeed OC that has booted the system by entering this in terminal:
Code:
nvram 4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102:opencore-version
You should see
REL-055-2020-02-03
.
You can also verify that the VMM flag is present by entering
Code:
sysctl machdep.cpu.features
You should see
VMM
in the list of features.
Congratulations for making it this far! The hard part is done.
6. Installing Catalina
a) Booted into the system on Disk B, run Install macOS Catalina. Install to Disk A.
The machine will reboot and eventually you should see the installation progress bar.
b) Complete the installation.
From now on, OC should boot Catalina on Disk A by default. In any case, OC will respect the selection in Startup Disk; however, be mindful of the remark in step 5d. Also, by carrying out step 5a, OC should boot the recovery mode corresponding to the system currently booted into.
7. Updates
As long as the VMM flag is present, Software Update should just work.
8. A More Native System (Optional)
To make the system as native as possible while still using OC, the VMM flag can be disabled by reversing step 4b. This might be a good idea, because a small performance loss (5%) has been observed when leaving the flag enabled.
It is also possible to boot Catalina natively, after using recovery to add a boot argument
Code:
nvram boot-args="-no_compat_check"
and then disabling OC (see 10 below). Although OC adds this argument, booting without OC does not guarantee that the argument will be there, unless it is added as described above.
The VMM flag and OC must be enabled for Software Update to work.
9. Boot-Picker (Optional)
a) Open config.plist with TextEdit.
b) Find BuiltinTextRenderer and change
false
to
true
.
c) Find ConsoleBehaviourOs and ConsoleBehaviourUi. Change
<string></string>
to
<string>ForceGraphics</string>
for both.
d) Find ConsoleMode and Resolution. Change
<string></string>
to
<string>Max</string>
for both.
e) Find ShowPicker and change
false
to
true
.
f) Find Timeout and change
1
to
10
.
g) Find ConsoleControl and change
false
to
true
.
h) Find ProvideConsoleGop and change
false
to
true
.
i) If your display is HiDPI (retina), find UIScale and change
AQ==
to
Ag==
.
The purpose of doing these steps explicitly is to be able to reverse them if desired.
10. Disabling OC
a) Carry out step 3a.
b) Open config.plist with TextEdit.
c) Reverse step 4c.
d) Reboot.
e) Select the desired entry in Startup Disk.
f) Reboot.
11. Uninstalling OC
a) Disable OC (see 10).
b) Carry out step 3a.
c) Delete the /Volumes/EFI/EFI folder.
Acknowledgements
A big thank you to the talented developers of OpenCore for making all of this possible.