Become a MacRumors Supporter for $25/year with no ads, private forums, and more!

MP 1,1-5,1 OpenCore on the Mac Pro

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.

cdf

macrumors 6502a
Original poster
Jul 27, 2012
934
794
OpenCore on Legacy Apple Hardware

This guide explains how to use the excellent OpenCore bootloader on a classic Mac Pro to install, run and update macOS Catalina, resulting in a clean, unpatched operating system no different than on a supported Mac.

Why OpenCore?

There are several advantages to using OpenCore on a classic Mac Pro:

Boot picker screen (even with a standard graphics card)
Boot Picker.png

Software Update (just like on a supported Mac)
Software Update.png

Hardware acceleration (and DRM for Netflix on Safari)
Hardware Acceleration.png

Requirements

Mac Pro modelEarly 2009 with MacPro5,1 firmware,* Mid 2010 or Mid 2012
Processor architectureWestmere (E56xx, L56xx, X56xx) / Gulftown (W36xx)
Boot ROM version144.0.0.0.0*
GraphicsCatalina supported GPU**, EFI (flashed) or a standard UEFI card (PC GPU)

* Need to upgrade? See the upgrade instructions.
** Several GPUs that are supported with High Sierra had support removed from Mojave and Catalina, like any non-Kepler generation NVIDIA GPUs or AMD GPUs earlier than HD 7950. Several HD 78xx GPUs (Pitcairn) were rebadged as R9 2xx and are not supported anymore by Mojave/Catalina drivers. All Mac Pro factory GPUs had support removed with Mojave.

PART I
Basic Installation

1 Disk Setup

Prepare two disks as follows:

Disk ADisk B
Newly formatted APFS volume (GUID scheme)​
Existing Mojave installation (with working recovery)​
This is where OpenCore and Catalina will go​
This is where the configuration will take place​

These disks should be the only ones in your Mac. To ensure a bootable fallback, it is recommended that Disk B be a SATA disk in Bay 1.

2 Install OpenCore

You will need:

Download the release version. The uncompressed folder will be referred to as OpenCore.​
The name of the uncompressed file is config.plist.​

The sample configuration is incompatible with any OpenCore version other than the one linked above. Before deviating from this configuration, make sure that you fully understand all the options by going over the manual (see OpenCore/Docs/Configuration.pdf). Seriously, read the manual.

Copy the files to the EFI volume of Disk A
  • Open Terminal
    Terminal.png
  • Find the EFI volume of Disk A by entering: diskutil list
The identifier should be something like diskAs1. Replace the actual identifier in the following step.​
  • Mount the EFI volume by entering: sudo diskutil mount /dev/diskAs1
You may need to authorize this. The volume should mount as /Volumes/EFI and appear as EFI in Finder. In the next step, you will be copying the folder OpenCore/X64/EFI to this volume. Note that the volume may already contain a folder called EFI (which in turn may contain a folder called APPLE). In this case, you can choose to merge the contents of the EFI folder if prompted by macOS.​
  • Copy the folder OpenCore/X64/EFI to the volume /Volumes/EFI
The resulting folder /Volumes/EFI/EFI should include two new folders BOOT and OC (possibly alongside the existing folder APPLE).​
  • Copy config.plist to /Volumes/EFI/EFI/OC
3 First Boot

Reboot into recovery

  • Open Terminal
    Terminal.png
  • Reboot into recovery by entering: 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.​
Bless the EFI volume of Disk A and reboot
  • In recovery, open Terminal (see Utilities in the menu bar)
  • Find the EFI volume of Disk A by entering: diskutil list
The identifier should be something like diskAs1. Replace the actual identifier in the following step.​
  • Mount the EFI volume by entering: diskutil mount /dev/diskAs1
  • Bless the volume for booting by entering: bless --mount /Volumes/EFI --setBoot
Try: bless --mount /Volumes/EFI --setBoot --file /Volumes/EFI/EFI/BOOT/BOOTx64.efi --verbose
  • Now shut down your Mac and reset the SMC (unplug the power cord, wait 15 seconds, plug the power cord back in, wait 5 seconds, and then press the power button)
Resetting the SMC ensures that Disk B is seen by OpenCore.​
Restart your Mac natively and recheck all the steps
  • Hold the power button until your Mac turns off
  • Turn on your Mac and reset the NVRAM (immediately press and hold Option, Command, P and R, and release after 20 seconds or after you hear the second startup chime)
Mojave should start without OpenCore.​
  • Recheck steps 1, 2 and 3
If you see the simple boot picker, let it timeout to the default selection.​

Check the installation
  • Open Terminal
  • Check that OpenCore has actually booted the system by entering: nvram 4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102:opencore-version
You should see REL-063-2020-11-02.​
  • Check the VMM flag by entering: sysctl machdep.cpu.features
You should see VMM (among other features).​
🎉 Congratulations for making it this far! The hard part is done.​

4 Install Catalina

You will need:

Run installinstallmacos

The excellent installinstallmacos script assembles all the necessary files directly from Apple.​
  • Open Terminal
    Terminal.png
  • Run the script by entering: curl -O -L https://raw.githubusercontent.com/munki/macadmin-scripts/main/installinstallmacos.py && sudo python installinstallmacos.py
You may need to authorize this. The file installinstallmacos.py and the folder contents will appear in your home folder
Home Folder.png
(you can delete them once you have the installer).​
  • Choose the latest version of macOS Catalina
A sparse disk image will be created in your home folder. This image contains the installer.​
Install Catalina to Disk A
  • Run the installer and select Disk A
The machine will reboot. If you see the simple boot picker, let it timeout to the default selection. Eventually, you should see the installation progress bar.​
  • Complete the installation
And that's it! From now on, OpenCore should boot Catalina on Disk A by default. You can also select the desired system from Startup Disk or the simple boot picker.​

5 Post-Install

Open the configuration file
  • Open Terminal
    Terminal.png
  • Find the EFI volume of Disk A by entering: diskutil list
The identifier should be something like diskAs1. Replace the actual identifier in the following step.​
  • Mount the EFI volume by entering: sudo diskutil mount /dev/diskAs1
You may need to authorize this. The volume should mount as /Volumes/EFI and appear as EFI in Finder.​
  • Navigate to /Volumes/EFI/EFI/OC and copy config.plist to your home folder
    Home Folder.png
  • Open config.plist in your home folder with TextEdit
    TextEdit.png
Toggle the VMM flag

Adding the VMM flag to the CPUID is what enables Software Update and the installation of macOS Catalina. On a classic Mac Pro, adding this flag is only possible with a Westmere processor architecture. Older generations like Nehalem lack the necessary Apple Hypervisor support. Because the VMM flag causes a performance loss (about 5%) and disables power management, it is a good idea to only have the flag ON when installing macOS or checking for updates.​
  • Find Cpuid1Mask and make the appropriate change
ONOFF
AAAAAAAAAAAAAACAAAAAAA==
AAAAAAAAAAAAAAAAAAAAAA==

Disable the special GOP renderer if not needed

For maximum compatibility, the sample configuration enables a special GOP renderer to display the boot picker. This option, which is needed for the Radeon VII and some versions of the 5700 XT but not for the RX 580, can cause undesirable effects (such as slow scrolling) and therefore should be disabled if not needed.​
  • Find DirectGopRendering and change true to false
Customize the boot screen
  • If you have a HiDPI display (retina), find UIScale and change AQ== to Ag==
  • To get a black boot screen (like all supported Macs), find ConsoleAttributes and change 112 to 0 and find DefaultBackgroundColor and change v7+/AA== to AAAAAA==
  • To hide the boot picker find ShowPicker and change true to false
If you've hidden the boot picker, accessing it is easy: Press and hold the Escape (Esc) key immediately after turning on or restarting your Mac. Release the key once the simple boot picker appears—or once the mouse cursor appears if you've enabled the graphical boot picker (see Part II).​
Load the configuration
  • Close config.plist and copy it back to /Volumes/EFI/EFI/OC
  • Reboot


PART II
Advanced Configuration

Enabling Hardware Acceleration

You will need:

Lilu
Download the latest release version. The uncompressed folder contains the file Lilu.kext.​
Download the latest release version. The uncompressed folder contains the file WhateverGreen.kext.​
Only if you have a dual-processor machine. The uncompressed file is called​
AppleMCEReporterDisabler.kext.​
The path of your graphics card
In canonical form, the path is something like PciRoot(0x0)/Pci(0x0,0x0)/Pci(0x0,0x0).​
Use gfxutil
  • Open Terminal
    Terminal.png
  • Enter: curl -L https://github.com/acidanthera/gfxutil/releases/download/1.80b/gfxutil-1.80b-RELEASE.zip | tar -xf - && rm -r gfxutil.dSYM && chmod +x gfxutil && ./gfxutil -f display
The executable gfxutil will appear in your home folder
Home Folder.png
and you should see the path in terminal (after taking note of the path, you can delete gfxutil).​
Copy the files to the kexts folder
  • Open Terminal
    Terminal.png
  • Find the EFI volume of Disk A by entering: diskutil list
The identifier should be something like diskAs1. Replace the actual identifier in the following step.​
  • Mount the EFI volume by entering: sudo diskutil mount /dev/diskAs1
You may need to authorize this. The volume should mount as /Volumes/EFI and appear as EFI in Finder.​
  • Copy Lilu.kext and WhateverGreen.kext and (if you have a dual-processor machine) AppleMCEReporterDisabler.kext to /Volumes/EFI/EFI/OC/Kexts
Open the configuration file
  • Navigate to /Volumes/EFI/EFI/OC and copy config.plist to your home folder
    Home Folder.png
  • Open config.plist in your home folder with TextEdit
    TextEdit.png
Tell OpenCore about the kexts
  • Locate the Kernel key
  • Below it, replace
XML:
<key>Add</key>
<array/>
by​
XML:
<key>Add</key>
<array>

<dict>
<key>Arch</key>
<string>x86_64</string>
<key>BundlePath</key>
<string>Lilu.kext</string>
<key>Comment</key>
<string>Patch engine</string>
<key>Enabled</key>
<true/>
<key>ExecutablePath</key>
<string>Contents/MacOS/Lilu</string>
<key>MaxKernel</key>
<string></string>
<key>MinKernel</key>
<string></string>
<key>PlistPath</key>
<string>Contents/Info.plist</string>
</dict>

<dict>
<key>Arch</key>
<string>x86_64</string>
<key>BundlePath</key>
<string>WhateverGreen.kext</string>
<key>Comment</key>
<string>Video patches</string>
<key>Enabled</key>
<true/>
<key>ExecutablePath</key>
<string>Contents/MacOS/WhateverGreen</string>
<key>MaxKernel</key>
<string></string>
<key>MinKernel</key>
<string></string>
<key>PlistPath</key>
<string>Contents/Info.plist</string>
</dict>

</array>
Other kexts are configured similarly by adding a dictionary entry to the array.​
  • If you have a dual-processor machine, add
XML:
<dict>
<key>Arch</key>
<string>x86_64</string>
<key>BundlePath</key>
<string>AppleMCEReporterDisabler.kext</string>
<key>Comment</key>
<string>Disable AppleMCEReporter</string>
<key>Enabled</key>
<true/>
<key>ExecutablePath</key>
<string></string>
<key>MaxKernel</key>
<string></string>
<key>MinKernel</key>
<string>19.0.0</string>
<key>PlistPath</key>
<string>Contents/Info.plist</string>
</dict>


Add the device properties
  • Find the DeviceProperties key
  • Below it, replace
XML:
<key>Add</key>
<dict/>
by​
XML:
<key>Add</key>
<dict>

<key>PciRoot(0x0)/Pci(0x0,0x0)/Pci(0x0,0x0)</key>
<dict>
<key>shikigva</key>
<data>UA==</data>
<key>agdpmod</key>
<data>cGlrZXJhAA==</data>
<key>rebuild-device-tree</key>
<data>AA==</data>
</dict>

</dict>
Make sure to replace PciRoot(0x0)/Pci(0x0,0x0)/Pci(0x0,0x0) by the actual path that you noted earlier. Properties for other devices are configured similarly by adding a path key and corresponding dictionary entry to the dictionary.​
Hybridization
iMacPro hybridization, a strategy originally due to @h9826790, is integral to successful hardware acceleration.​
  • Find the SMBIOS key
  • Below it, replace
XML:
<dict/>
by​
XML:
<dict>
<key>BoardProduct</key>
<string>Mac-7BA5B2D9E42DDD94</string>
</dict>
  • Find UpdateSMBIOS and change false to true
Clean up the NVRAM
  • Find NVRAM and delete
XML:
<key>boot-args</key>
<string>-no_compat_check</string>
and​
XML:
<string>boot-args</string>


Verify the configuration
  • Close config.plist
  • In Terminal, enter: plutil -convert xml1 config.plist && plutil config.plist
You should see config.plist: OK. If not, recheck all the steps.​
Load the configuration
  • Copy config.plist back to /Volumes/EFI/EFI/OC
  • Reboot
Enabling Night Shift

You will need:

Lilu
Unless you already have it. Download the latest release version. The uncompressed folder contains the file Lilu.kext.​
Download the latest release version. The uncompressed folder contains the file NightShiftEnabler.kext.​

Unfortunately, not all displays support Night Shift.​

Copy the files to the kexts folder
  • Open Terminal
    Terminal.png
  • Find the EFI volume of Disk A by entering: diskutil list
The identifier should be something like diskAs1. Replace the actual identifier in the following step.​
  • Mount the EFI volume by entering: sudo diskutil mount /dev/diskAs1
You may need to authorize this. The volume should mount as /Volumes/EFI and appear as EFI in Finder.​
  • Copy Lilu.kext (unless you already have it) and NightShiftEnabler.kext to /Volumes/EFI/EFI/OC/Kexts
Open the configuration
  • Navigate to /Volumes/EFI/EFI/OC and copy config.plist to your home folder
    Home Folder.png
  • Open config.plist in your home folder with TextEdit
    TextEdit.png
Tell OpenCore about the kexts
  • Locate the Kernel key
  • If this is your first time adding kexts, replace
XML:
<key>Add</key>
<array/>
by​
XML:
<key>Add</key>
<array>

<dict>
<key>Arch</key>
<string>x86_64</string>
<key>BundlePath</key>
<string>Lilu.kext</string>
<key>Comment</key>
<string>Patch engine</string>
<key>Enabled</key>
<true/>
<key>ExecutablePath</key>
<string>Contents/MacOS/Lilu</string>
<key>MaxKernel</key>
<string></string>
<key>MinKernel</key>
<string></string>
<key>PlistPath</key>
<string>Contents/Info.plist</string>
</dict>

<dict>
<key>Arch</key>
<string>x86_64</string>
<key>BundlePath</key>
<string>NightShiftEnabler.kext</string>
<key>Comment</key>
<string>Enable Night Shift</string>
<key>Enabled</key>
<true/>
<key>ExecutablePath</key>
<string>Contents/MacOS/NightShiftEnabler</string>
<key>MaxKernel</key>
<string></string>
<key>MinKernel</key>
<string></string>
<key>PlistPath</key>
<string>Contents/Info.plist</string>
</dict>

</array>
  • Otherwise, add the NightShiftEnabler dictionary entry to the array
The Lilu dictionary entry must always be first in the array.​

Verify the configuration
  • Close config.plist
  • In Terminal, enter: plutil -convert xml1 config.plist && plutil config.plist
You should see config.plist: OK. If not, recheck all the steps.​

Load the configuration
  • Copy config.plist back to /Volumes/EFI/EFI/OC
  • Reboot
Making External Drives Internal

You will need:

The path of your disk
In canonical form, the path is something like PciRoot(0x0)/Pci(0x0,0x0)/Pci(0x0,0x0).​
Use System Information and gfxutil
  • Open System Information
    System Information.png
    and find the name of your disk in the PCI section
Look for "AHCI Controller" or "NVM Express Controller." You should see something like pci0000,0000.​
  • Open Terminal
    Terminal.png
  • Enter: curl -L https://github.com/acidanthera/gfxutil/releases/download/1.80b/gfxutil-1.80b-RELEASE.zip | tar -xf - && rm -r gfxutil.dSYM && chmod +x gfxutil && ./gfxutil -f pci0000,0000
Make sure to replace pci0000,0000 with the actual name of your disk. The executable gfxutil will appear in your home folder
Home Folder.png
and you should see the path in terminal (after taking note of the path, you can delete gfxutil).​
Open the configuration file
  • Open Terminal
    Terminal.png
  • Find the EFI volume of Disk A by entering: diskutil list
The identifier should be something like diskAs1. Replace the actual identifier in the following step.​
  • Mount the EFI volume by entering: sudo diskutil mount /dev/diskAs1
You may need to authorize this. The volume should mount as /Volumes/EFI and appear as EFI in Finder.​
  • Navigate to /Volumes/EFI/EFI/OC and copy config.plist to your home folder
    Home Folder.png
  • Open config.plist in your home folder with TextEdit
    TextEdit.png
Add the built-in property
  • Locate the DeviceProperties key
  • If this is your first time adding device properties, replace
XML:
<key>Add</key>
<dict/>
by​
XML:
<key>Add</key>
<dict>

<key>PciRoot(0x0)/Pci(0x0,0x0)/Pci(0x0,0x0)</key>
<dict>
<key>built-in</key>
<data>AA==</data>
</dict>

</dict>
  • Otherwise, add the path key and dictionary entry to the dictionary
Make sure to replace PciRoot(0x0)/Pci(0x0,0x0)/Pci(0x0,0x0) by the actual path that you noted earlier.​

Verify the configuration
  • Close config.plist
  • In Terminal, enter: plutil -convert xml1 config.plist && plutil config.plist
You should see config.plist: OK. If not, recheck all the steps.​

Load the configuration
  • Copy config.plist back to /Volumes/EFI/EFI/OC
  • Reboot
Enabling the Graphical Boot Picker

You will need:

Download the ZIP (click the code button
Button.png
and select download ZIP). The uncompressed folder will be referred to as OcBinaryData.​

Depicted in the screenshot above, OpenCanopy is the official OpenCore graphical user interface.​

Copy the files to the resources folder
  • Open Terminal
    Terminal.png
  • Find the EFI volume of Disk A by entering: diskutil list
The identifier should be something like diskAs1. Replace the actual identifier in the following step.​
  • Mount the EFI volume by entering: sudo diskutil mount /dev/diskAs1
You may need to authorize this. The volume should mount as /Volumes/EFI and appear as EFI in Finder.​
  • Copy OcBinaryData/Resources to /Volumes/EFI/EFI/OC (overwrite the existing folder)
Open the configuration file
  • Navigate to /Volumes/EFI/EFI/OC and copy config.plist to your home folder
    Home Folder.png
  • Open config.plist in your home folder with TextEdit
    TextEdit.png
Enable OpenCanopy
  • Find PickerMode and change Builtin to External
  • Locate the Drivers key and add
XML:
<string>OpenCanopy.efi</string>
to the array​

Verify the configuration
  • Close config.plist
  • In Terminal, enter: plutil -convert xml1 config.plist && plutil config.plist
You should see config.plist: OK. If not, recheck all the steps.​

Load the configuration
  • Copy config.plist back to /Volumes/EFI/EFI/OC
  • Reboot


PART III
Maintenance

Updating Catalina

To update Catalina, simply turn on the VMM flag (see toggle the VMM flag in step 5 of Part I and don't forget to reboot). To manually check for updates, choose Apple menu > System Preferences, then click Software Update.

Updating OpenCore

OpenCore is currently being updated on the first Monday of every month. To update OpenCore, simply repeat steps 2 and 5 of Part I (overwriting /Volumes/EFI/EFI/OC and /Volumes/EFI/EFI/BOOT) and (if applicable) repeat Part II. To facilitate the process, @TECK has developed a nifty script, which you can adapt to your configuration. This tool is especially useful for advanced configurations.

Disabling OpenCore

Open the configuration file

  • Open Terminal
    Terminal.png
  • Find the EFI volume of Disk A by entering: diskutil list
The identifier should be something like diskAs1. Replace the actual identifier in the following step.​
  • Mount the EFI volume by entering: sudo diskutil mount /dev/diskAs1
  • Navigate to /Volumes/EFI/EFI/OC and copy config.plist to your home folder
    Home Folder.png
  • Open config.plist in your home folder with TextEdit
    TextEdit.png
Turn off boot selection routing
  • Find RequestBootVarRouting and change true to false
Load the configuration
  • Close config.plist and copy it back to /Volumes/EFI/EFI/OC
  • Reboot
Select Mojave and reboot
  • Select Mojave in System Preferences > Startup Disk
  • Reboot
You are now booted into Mojave without OpenCore.​

Reenabling OpenCore

Open the configuration file

  • Open Terminal
    Terminal.png
  • Find the EFI volume of Disk A by entering: diskutil list
The identifier should be something like diskAs1. Replace the actual identifier in the following step.​
  • Mount the EFI volume by entering: sudo diskutil mount /dev/diskAs1
  • Navigate to /Volumes/EFI/EFI/OC and copy config.plist to your home folder
    Home Folder.png
  • Open config.plist in your home folder with TextEdit
    TextEdit.png
Turn on boot selection routing
  • Find RequestBootVarRouting and change false to true
Repeat the first-boot steps

See step 3 in Part I.​

Uninstalling OpenCore

Disable OpenCore


Refer to the steps above.​

Delete the files
  • Open Terminal
    Terminal.png
  • Find the EFI volume of Disk A by entering: diskutil list
The identifier should be something like diskAs1. Replace the actual identifier in the following step.​
  • Mount the EFI volume by entering: sudo diskutil mount /dev/diskAs1
You may need to authorize this. The volume should mount as /Volumes/EFI and appear as EFI in Finder.​
  • Delete /Volumes/EFI/EFI/OC and /Volumes/EFI/EFI/BOOT


APPENDIX

Installing Windows 10

You will need:

Double-click the image file. The mounted volume will be referred to as CCCOMA_X64.​

Download the ZIP (click the code button
Button.png
and select download ZIP). The uncompressed folder will be referred to as OcBinaryData.​
Prepare two disks as follows:

Disk CUSB
Newly formatted exFat volume (GUID scheme)​
Newly formatted exFat volume (MBR scheme)​
This is where Windows will go​
This is where the installer will go​

Disk C should not be the same as Disk A. The volume of the USB disk will be referred to as USB.​

Add the exFat driver
  • Open Terminal
    Terminal.png

  • Find the EFI volume of Disk A by entering: diskutil list
The identifier should be something like diskAs1. Replace the actual identifier in the following step.​
  • Mount the EFI volume by entering: sudo diskutil mount /dev/diskAs1
You may need to authorize this. The volume should mount as /Volumes/EFI and appear as EFI in Finder.​
  • Copy OcBinaryData/Drivers/ExFatDxeLegacy.efi to EFI/OC/Drivers
Open the configuration file
  • Navigate to /Volumes/EFI/EFI/OC and copy config.plist to your home folder
    Home Folder.png
  • Open config.plist in your home folder with TextEdit
    TextEdit.png
Tell OpenCore about the driver
  • Find the Drivers key and add
XML:
<string>ExFatDxeLegacy.efi</string>
to the array​
Also, make sure that the VMM flag is off.​
Verify the configuration
  • Close config.plist
  • In Terminal, enter: plutil -convert xml1 config.plist && plutil config.plist
You should see config.plist: OK. If not, recheck all the steps.

Load the configuration
  • Copy config.plist back to /Volumes/EFI/EFI/OC
  • Reboot
Prepare the installer
Use the actual volumes names in the following step:​
  • Enter: rsync -r /Volumes/CCCOMA_X64/ /Volumes/USB
Let the task complete.​

Proceed with the installation
  • Reboot and select Windows (External) from the boot picker
The Windows installer should start.​
  • At the Windows Setup window, press Shift+F10 to open the Command Prompt
  • Start diskpart by entering: diskpart
Wait for the prompt.​
  • Identify your disks by entering: list volume
You should see something like​
Code:
Volume 1    C    Disk C    exFAT
Volume 2    D    USB       exFAT
Note the actual volume numbers and letters. Do not proceed if you are not sure! Replace the actual volume number of Disk C in the following step.​
  • Select Disk C by entering: select volume 1
Double check that you have the right volume number.​
  • Format the disk by entering: format quick fs=ntfs label=Windows
Wait for the task to complete.​
  • Enter: exit
Use the actual letter of the USB drive in the following step:​
  • Enter: D:
  • Backup the efi folder of the installer by entering: ren efi efi.bak
  • Enter: cd sources
  • Identify the version of Windows that you want to install by entering: dism /get-wiminfo /wimfile:install.wim
You should see something like​
Code:
Index : 1
Name : Windows 10 Home
Replace the actual index of the Windows version and the actual letter of Disk C in the following step:​
  • Apply the install image by entering: dism /apply-image /imagefile:install.wim /index:1 /applydir:C:\ /compact /EA
Wait for the task to complete.​
  • Create the boot files by entering:bcdboot C:\Windows /s D: /f uefi
Wait for the task to complete.​
  • Enter: exit
  • Close the Windows Setup window (click the X)
Click "yes" to restart your computer.​
  • Reboot into macOS
Copy the boot files
  • Open Terminal
    Terminal.png
  • Find the EFI volume of Disk C by entering: diskutil list
The identifier should be something like diskCs1. Replace the actual identifier in the following step.​
  • Mount the EFI volume by entering: sudo diskutil mount /dev/diskCs1
You may need to authorize this. The volume should mount as /Volumes/EFI and appear as EFI in Finder. This EFI volume should be empty.​
  • Copy /USB/EFI/Microsoft to /Volumes/EFI/EFI
  • Delete /USB/EFI and rename efi.bak to efi
  • Eject the USB
Finish the installation
  • Reboot and use the boot picker to select Windows
The configuration process should begin and eventually your computer will restart.​
  • Complete the configuration


Acknowledgements

A big thank you to @vit9696 and the other talented developers of Acidanthera for making all of this possible. Special gratitude goes to @h9826790 for spearheading the hardware acceleration study and @startergo for the relentless testing that led to boot screen support. And thanks to all those that have contributed to this thread!
 

Attachments

  • config.zip
    2.4 KB · Views: 383
Last edited:

Syncretic

macrumors regular
Apr 22, 2019
102
224
Before I venture down this path, does your OpenCore setup enable boot screens on your "non-bootscreen graphics card"? I'm currently using rEFInd to achieve that, but I'm interested in OpenCore if it can provide the same functionality.
 
  • Like
Reactions: bandini
Comment

cdf

macrumors 6502a
Original poster
Jul 27, 2012
934
794
Before I venture down this path, does your OpenCore setup enable boot screens on your "non-bootscreen graphics card"? I'm currently using rEFInd to achieve that, but I'm interested in OpenCore if it can provide the same functionality.

For a 3,1, I would say that the chances are good. OpenCore provides GOP support. However, you will have to edit the configuration file appropriately.
 
Comment

w1z

macrumors 6502a
Aug 20, 2013
620
433
I can also confirm that OpenCore is working beautifully with Catalina installed on a dedicated NVMe drive, Mojave installed on a shared NVMe drive and with Windows 10 installed in EFI mode on the same shared drive as Mojave.

I did not need to have Mojave installed on a SATA drive.

Now to save those of you wanting to try OpenCore while using Windows 10 in EFI mode from going bananas, the trick to getting Windows EFI to play nicely with OpenCore's Bootx64.efi in /Volumes/EFI/EFI/Boot was to relocate the shared NVMe drive (which has Mojave / Windows 10 installed on it) from slot 3 to slot 2 on the 7101A thus placing it before the dedicated Catalina drive. Reason being, Apple's boot efi is scanning drives backwards / in reverse order with the 7101A ie. NVMe Slots 4 3 2 1 instead of 1 2 3 4 (not sure if this is the case too with other PCIe cards) so now Catalina shows up first in the boot screen.

Also, if you have enabled Apple's full mitigation for disabling hyper-threading, you will need to edit the config.plist file and append cwae=2 to the boot-args string:

Code:
<key>7C436110-AB2A-4BBB-A880-FE41995C9F82</key>
            <dict>
                <key>boot-args</key>
                <string>-no_compat_check cwae=2</string>
            </dict>

I'm loving this! Thanks for sharing @cdf as well as a massive thank you to the developers of OpenCore.

2019-10-28_00-42-34.png
 
Last edited:
Comment

h9826790

macrumors G5
Apr 3, 2014
14,708
7,161
Hong Kong
—- Warning!!! This config may brick your Mac. Do NOT use it unless you know what you are doing. —-

As a record. The following setting to simulate iMac Pro will cause black screen. [Update: fixed by using agdpmod=pikera]

Code:
    <key>PlatformInfo</key>
    <dict>
        <key>Automatic</key>
        <true/>
        <key>Generic</key>
        <dict>
        <key>MLB</key>
        <string>C02706700J9JG36JA</string>
        <key>ROM</key>
        <data>ESIzAAAA</data>
        <key>SpoofVendor</key>
        <true/>
        <key>SystemProductName</key>
        <string>iMacPro1,1</string>
        <key>SystemSerialNumber</key>
        <string>C02T75Y5HX87</string>
        <key>SystemUUID</key>
        <string>EF81678C-50D7-4A13-9D1A-B423E7F7BE5B</string>
        </dict>
        <key>UpdateDataHub</key>
        <true/>
        <key>UpdateNVRAM</key>
        <true/>
        <key>UpdateSMBIOS</key>
        <true/>
        <key>UpdateSMBIOSMode</key>
        <string>Create</string>
    </dict>


Basically, UpdateSMBIOS = true will cause black screen.

I haven't have time to insert a Mac EFI UGA GPU or Remote Desktop to check what's happening yet. However, I highly suspect that the cMP actually booted to desktop with the above settings, because the Eject key works, Caps Lock key works, and Command + Control + power button also work.

If the cMP was jammed at loading screen, eject key shouldn't work.

And AFAIK, Command + Control + Power button only react properly inside macOS.

So, very high chance the cMP actually booted to desktop. However, using the iMac Pro SMBIOS cause the GPU fail to display properly.

Anyway, one more good news. PCIe info won't be mess up like using Clover. It's a good start.
 
Last edited:
Comment

cdf

macrumors 6502a
Original poster
Jul 27, 2012
934
794
Basically, UpdateSMBIOS = true will cause black screen.
Perhaps you could try with UpdateDataHub and UpdateNVRAM set to false. I have been successful with just UpdateSMBIOS set to true with a few model identifiers. I haven't tried iMacPro1,1, though.

I haven't have time to insert a Mac EFI UGA GPU or Remote Desktop to check what's happening yet.
Another option is setting the debug properties for creating a log file.
 
Comment

h9826790

macrumors G5
Apr 3, 2014
14,708
7,161
Hong Kong
My setting in post #7 is correct indeed. But it seems after applying the iMac Pro SMBIOS, only the 1st display port on my Radeon VII can display, the other ports are disabled. My cable was connected to the 3rd port, that's why I only got black screen.

Anyway, now I can see the screen, and my cMP ident itself as iMac Pro, and provide Catalina upgrade natively.

Screenshot 2019-10-28 at 8.35.11 AM.png
 
Comment

h9826790

macrumors G5
Apr 3, 2014
14,708
7,161
Hong Kong
Almost all sensor disappear after applying iMac Pro SMBIOS. But the 2 fans are controllable via iStat. I can spin them up manually.
Screenshot 2019-10-28 at 9.03.47 AM.png
 
  • Like
Reactions: octoviaa
Comment

Ludacrisvp

macrumors 6502a
May 14, 2008
741
319
My setting in post #7 is correct indeed. But it seems after applying the iMac Pro SMBIOS, only the 1st display port on my Radeon VII can display, the other ports are disabled. My cable was connected to the 3rd port, that's why I only got black screen.

Anyway, now I can see the screen, and my cMP ident itself as iMac Pro, and provide Catalina upgrade natively.

View attachment 872912
Now the slightly offtopic question... did this allow you to enable HEVC encode / decode in Catalina (and Mojave hevc encode)?
 
Comment

w1z

macrumors 6502a
Aug 20, 2013
620
433
My setting in post #7 is correct indeed. But it seems after applying the iMac Pro SMBIOS, only the 1st display port on my Radeon VII can display, the other ports are disabled. My cable was connected to the 3rd port, that's why I only got black screen.

Anyway, now I can see the screen, and my cMP ident itself as iMac Pro, and provide Catalina upgrade natively.

View attachment 872912
I wonder if the model identifier MacPro7,1 would provide functioning sensors, ports and hevc.
 
Comment

startergo

macrumors 68030
Sep 20, 2018
2,711
1,150
The fan control is an essential part of the SMC. If we cannot make them work automatically OC is not safe on the cMP. This is the main reason I did not try unraid server.
 
Comment

CMMChris

macrumors 6502
Oct 28, 2019
279
213
@h9826790 Whatevergreen and agdpmod=pikera (boot arg) should fix your black screen issue and enable all outputs of your graphics card. Alternatively you could also remove the iMacPro1,1 Board ID from the info.plist of AppleGraphicsDevicePolicy.

Regarding the HEVC issues you guys report on the real Mac Pros, try to do an ACPI rename of your GPU from whatever it is called by Apple to GFX0. If this is the root of the problem it should enable HEVC acceleration. On a Hackintosh GFX0 is mandatory for this.
 
Last edited:
Comment

cdf

macrumors 6502a
Original poster
Jul 27, 2012
934
794
The fan control is an essential part of the SMC. If we cannot make them work automatically OC is not safe on the cMP. This is the main reason I did not try unraid server.

Fan control appears to function fine for my setup. The sensor issue seems to come from spoofing the iMac Pro.
 
Comment

cdf

macrumors 6502a
Original poster
Jul 27, 2012
934
794
FaceTime and iMessage seem to work when using OC. However, I've been very careful not to play around with platform information when logged in to these services.
 
  • Like
Reactions: octoviaa
Comment

h9826790

macrumors G5
Apr 3, 2014
14,708
7,161
Hong Kong
@h9826790 Whatevergreen and agdpmod=pikera (boot arg) should fix your black screen issue and enable all outputs of your graphics card. Alternatively you could also remove the iMacPro1,1 Board ID from the info.plist of AppleGraphicsDevicePolicy.

Regarding the HEVC issues you guys report on the real Mac Pros, try to do an ACPI rename of your GPU from whatever it is called by Apple to GFX0. If this is the root of the problem it should enable HEVC acceleration. On a Hackintosh GFX0 is mandatory for this.

Thanks for pointing me into the right direction. I will study the OpenCore manual and try to config it accordingly.

Hopefully I can fix the following things

1) HEVC hardware encode (both in Mojave and Catalina), if possible, I want to make it available for a 5,1 ident cMP (may be the ACPI rename trick also work for 5,1 ident). This approach may able to avoid unnecessary SMC issue (if I ident the cMP as iMac Pro or 7,1, most sensors disappear).

Apparently, the Radeon VII isn't ident at GFX0 at this moment.
Screenshot 2019-10-29 at 2.16.40 PM.png


2) In the case of iMac Pro or 7,1 ident, fix the SMC. In my own experience so far. Using iMac Pro SMBIOS makes Handoff etc more reliable. Without 7,1 ident, when I login multiple profiles with multiple Apple ID on my cMP. Handoff often become unstable. But with 7,1 ident, it seems no matter how many profiles I logged in, Handoff still works. But the downside is, all sensors disappear.
Screenshot 2019-10-29 at 6.00.49 AM.png


I've already try few different VirtualSMC setup, but doesn't change anything yet.

Let's see if I can achieve anything in the next few days.
 
  • Like
Reactions: kitcostantino
Comment

CMMChris

macrumors 6502
Oct 28, 2019
279
213
Your screenshot doesn't show what the ACPI device is called. You just see the bridges there. Please expand the "IOReg Name" column.
 
Comment

gigignopechegno

macrumors newbie
May 11, 2016
11
10
Your screenshot doesn't show what the ACPI device is called. You just see the bridges there. Please expand the "IOReg Name" column.

thanks,
i have this in my Macpro 5.1 whit Radeon vII ... is not GFX..
 

Attachments

  • Screenshot 2019-10-29 at 09.38.41.png
    Screenshot 2019-10-29 at 09.38.41.png
    346 KB · Views: 844
Comment

CMMChris

macrumors 6502
Oct 28, 2019
279
213
Then rename PXS1 to GFX0 and HEVC should start working. It's insane Apple don't take the Mac Pros into account when matching HEVC acceleration to GFX0....
 
Comment
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.