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.

ohelio

macrumors newbie
Jan 2, 2020
24
6
You have incorrect configuration for your Mac. Macs by default only connect the boot hard disk and do not initialise other disks. As a result you do not have other disks listed. To fix this UEFI → ConnectDrivers should be YES.

Hah! Unbelievable!
Such a nasty little flag, set to "true" and now it works! OC Boot Menu now completely lists all my bootable volumes. A lot of thanks for this information!

This in my eyes also seems to explain why all bootable systems are displayed in OC Bootpicker when starting OC via the Apple-EFI Boot Menu. With starting the Apple-EFI Boot Menu, all drives in the Mac are connecting, so that then completely different parameters will be passed to OpenCore than in a direct boot process into OC.

@ cdf:
I think that's a very important clue from vit9696 for the theme "OpenCore on the Mac".
Maybe you want to give a reference to that in your fantastic guidance within your initial Post #1, that, if OC Boot Menu should be used on a Mac, the "Connect Drivers"-key should be set to <true/>. I just tested this and it obviously immediatly fixes my problem with the bootpicker (hope it stays...). Prebooting to OC Boot Menu lasts a bit longer now due to the now complete scannning of all connected drives...
 

cdf

macrumors 68020
Original poster
Jul 27, 2012
2,256
2,583
Both AppleBootPolicy and ConnectDrivers will be set to true in the next config update.
 
  • Like
Reactions: ohelio

ohelio

macrumors newbie
Jan 2, 2020
24
6
With functionable OC Boot Menu now i tested a bit around with booting into Recovery via OC Boot Menu.

A few days ago startergo suggested to set in config.plist UEFI => Protocols => AppleBootPolicy to true.
I did this, but reverted this back to false as it didn't fix my Bootproblems. So for my firsts trials this is <false/>, but now ConnectDrivers is <true/>. The following OC Boot Menu appears:

OC_Bootmenu_with_ABP-false.jpg


You will notice the Recoveries for Macos 10.13.6, which are on Apple_Boot Partitions next to Volumes with HFS+ (Pos 3. & 4. and Pos. 7. &8.). Additional you see the Recovery in Pos A. which is in an APFS Container with the associated Catalina (Pos. 9) and also the Recovery in Pos. C, which is in an APFS Container with the associated Mojave ("OSX", Pos. B). Furthermore you will notice that the High Sierra Recoveries appear in pairs (first the Apple_Boot Volume and second marked as a dmg probably the contained BaseSystem.dmg).

Now trying to start all Recoveries in sequence.
First Pos 3. => a prohibition sign appears, no booting into Recovery
Then Pos 4. => boot into Recovery 10.13.6 successful

Same for Pos 7. & 8., only booting into dmg is successfull.

Now trying to boot into the APFS Recoveries for Catalina and Mojave
Pos A. => Error, System halted
Pos C. => Error, System halted

So booting into both APFS formatted Recoveries didn't work.
Now i remembered the suggestion from startergo to activate AppleBootPolicy. OpenCore Configuration-Manual describes this as "Reinstalls Apple Boot Policy protocol with a builtin version. This may be used to ensure APFS compatibility on VMs or legacy Macs." So i did set this Protocol to true again and startet my testsequence one more time.

Now OC Boot Menu with ABP activated looks like this:

OC_Bootmenu_with_ABP-true.jpg


Apart from the changed order you will notice, that the two "APFS-Recoveries" now have the marking "(dmg)" as the working HighSierra Recoveries does have, too.

The behaviour at booting into HighSierra Recovery was the same as without ABP: booting into the "(dmg)"-marked Recoveries did work, without marks no boot.
But now booting the both APFS-formatted Recoveries did work, too! So for booting into Mojave or Catalina Recovery via OC Boot Menu obviously (next to the activated key "ConnectDrivers" for successful scanning all drives) the AppleBootPolicy Protocol must be set to <true/>.
Be aware that prebooting into OC Boot Menu with ABP activated lasts a bit longer, too, same as for activating "ConnectDrivers".

Are there any other experiences to this or the behaviour can be confirmed?
[automerge]1580496300[/automerge]
Both AppleBootPolicy and ConnectDrivers will be set to true in the next config update.

I was busy with my last lines concerning recovery, so i noticed your answer only now. Thanks for reaction!
It seems that might fix the boot-into-recovery problems of some who wrote about it here, too?
 
Last edited:
  • Like
Reactions: JedNZ

startergo

macrumors 603
Sep 20, 2018
5,021
2,283
One observation. Thanks to @vit9696 who clarified that you can't bless from within OC OC. Blessing only works from outside. Now here we have another issue with multiple boot drives and OC installed on USB. It is unknown after the first bless command what will OC boot to on the first boot. Once booted you should be able to select normally from the startup disk the boot drive (although I have another issue where the system freezes when I select the boot drive, but bless works if I restart). The easiest way is to select OC from the boot picker and then use:
CNTRL+ENTER while you boot option is preselected. This is manual bless from OC bootpicker.
The problem with this is that Apple left cMP owners literally "in the dark" as there is no Polaris or higher video card made by Apple with UGA support. There is no native boot screen. Now I am trying to find a way to do "bless override" i.e. preselect the boot drive from the config file. So far I have no success with it.
 

vit9696

macrumors member
Jun 4, 2014
50
147
@startergo, I think we both may still have some level of misunderstanding.

1. Making your Mac boot OpenCore by default is one time operation during OpenCore setup. For this you somehow need to register it as the default in your firmware preferences. I can imagine the following ways:
— From Apple BootPicker (the one you can reach with OPT hotkey, Apple names it Startup Manager publicly) choose OpenCore and Ctrl+Enter on it (see #3 of Use Startup Manager).
— From macOS booted without OpenCore (e.g. 10.14) bless OpenCore with the usual command.
— From macOS booted with OpenCore but with RequestBootVarRouting set to NO in config.plist bless OpenCore with the usual command.

2. Making OpenCore boot a specific OS to boot by default is many time operation during normal workflow. For this you need RequestBootVarRouting set to YES and do something of the following:
— In OpenCore press Ctrl+Enter on the entry you like (works the same way as in Apple Bootpicker).
— In macOS use the Startup Disk preference panel.
— In Windows use the Startup Disk preference panel.
— You can still use bless command and OpenCore will respect it, but it is easy to do it wrong.

3. Bless override option is not about specifying the default operating system. Bless override is about specifying a vendor extension to bless protocol. I.e. it lets you make OpenCore see specially named Windows or Linux bootloaders (e.g. something like \EFI\grub2\grub64.efi).

4. Bootscreen problem in MacPro, what does it look like? Let's say you have RX 580 installed in your computer, what can you do from the following:
— Run Apple BootPicker and select things in it.
— Run OpenCore UI and select things in it.
— Run rEFIt or some other tool and select things in it.
Let's say you have flashed Mac-compatible GPU installed, some GTX 680 Mac or similar. What will the answers be for the same questions?

For 1 and 2 there can be other ways, but these are the first that came up to my mind.
 

tsialex

Contributor
Jun 13, 2016
13,454
13,601
4. Bootscreen problem in MacPro, what does it look like? Let's say you have RX 580 installed in your computer, what can you do from the following:
— Run Apple BootPicker and select things in it.
— Run OpenCore UI and select things in it.
— Run rEFIt or some other tool and select things in it.
Let's say you have flashed Mac-compatible GPU installed, some GTX 680 Mac or similar. What will the answers be for the same questions?

For 1 and 2 there can be other ways, but these are the first that came up to my mind.
MP5,1 is EFI1.10 and requires UGA pre-boot configuration. So, with any supported GOP GPU, we only have image on the screen halfway macOS loading, after the GPU drivers are loaded. No BootPicker, no OpenCore menu, no rEFIt. MP3,1 can be made to work with rEFIt and cards that have UEFI pre-boot configuration support, but not MP5,1.

With a Mac Edition GPU like eVGA GTX 680 Mac Edition/Sapphire HD 7950 Mac Edition or a self/3rd party flashed GPU that supports UGA, all three options work.
 
  • Like
Reactions: w1z and h9826790

vit9696

macrumors member
Jun 4, 2014
50
147
Hrm. This is strange.
— I understand why Apple BootPicker UI does not show up, it needs UGA protocol, which is unavailable.
— I understand why OpenCore UI does not show up, it uses builtin console output, which is implemented by Mac EFI over UGA protocol.
— I fail to understand why something like Clover or rEFIt fail to display, however. They can use GOP.

Technically it may be that your GPU option ROM is not loaded or fails to load due to some incompatibility, but I would say that is unlikely, as these use pretty ancient protocols. There is no big deal in implementing UGA on top of GOP, but it is a good question whether it is the only issue.

Could somebody please change the following in OpenCore configuration and upload a debug log from booting OpenCore on MP5,1 with some generic GPU like RX 580? It may help to understand what we have…
— ConsoleBehaviourOs Graphics
— ConsoleBehaviourUi Text
— ConsoleMode Max
— Resolution Max
— ProvideConsoleGop YES
 

astonius86

macrumors member
Apr 25, 2017
93
32
Mt Juliet, TN
Still no luck here booting to UEFI Windows 10... Tried every combination of AppleBootPolicy and ConnectDrivers. Is there any logging I can provide to give insight? If so how do I go about getting that detail?
 

ohelio

macrumors newbie
Jan 2, 2020
24
6
...
Could somebody please change the following in OpenCore configuration and upload a debug log from booting OpenCore on MP5,1 with some generic GPU like RX 580? It may help to understand what we have…
— ConsoleBehaviourOs Graphics
— ConsoleBehaviourUi Text
— ConsoleMode Max
— Resolution Max
— ProvideConsoleGop YES

I could step in here as a guinea pig.

I'd do two runs:

1. with a mac-compatible but not mac-efi-compatible (but supposedly metal compatible) NVIDIA GT 740 (that would have to be similar to a situation with an RX580)

2. with a mac & mac-efi compatible NVIDIA GTX 680 (the GPU I use everyday with Mojave and now Catalina, too)

So you have the direct comparison of the loggings for both cases on the same machine.

My Mac:
MacPro 4.1, FW flashed to 5.1 (see then techinfo in logging..)
ConnectDrivers and AppleBootPolicy basically active with me now,
OC Boot Menu configured with timeout 3sec aktiv and preselected to catalina.

Would that be ok?
 
Last edited:

startergo

macrumors 603
Sep 20, 2018
5,021
2,283
Could somebody please change the following in OpenCore configuration and upload a debug log from booting
[automerge]1580558360[/automerge]
I have 2 Polaris RX580 (480 with 6 pins) one with MacVidCards EFI rom and the other without. I can only see screen on the EFI modified card. By the way the only card with native UGA boot screen and no Mac drivers whatsoever is RTX2080 (and some variants based on it).
 

Attachments

  • opencore-2020-02-01-114830.txt
    256 KB · Views: 231

vit9696

macrumors member
Jun 4, 2014
50
147
@ohelio, yes, that will do too. Basically the exact model does not matter, but it will be useful to see whether AMD and NVIDIA differ.

@startergo, please provide information which card is this log from? EFI modified card with working Apple BootPicker or the one with black screen? Also provide the second log without this configuration.
 

startergo

macrumors 603
Sep 20, 2018
5,021
2,283
please provide information which card is this log from?
They both were installed during last log. I assume it was from the card with boot screen.
[automerge]1580560943[/automerge]
Here is the log with only the unmodified card booting
 

Attachments

  • opencore-2020-02-01-122423.txt
    256 KB · Views: 173

ohelio

macrumors newbie
Jan 2, 2020
24
6
@ohelio, yes, that will do too. Basically the exact model does not matter, but it will be useful to see whether AMD and NVIDIA differ.

@startergo, please provide information which card is this log from? EFI modified card with working Apple BootPicker or the one with black screen? Also provide the second log without this configuration.


Here my both attampts.

The first one is with the mac-efi compatible GTX680, because this was still built in yet...
OC Boot Screen appears correctly, now with the resolution to "Max" in the left upper corner of my screen

The second one with my GT740 to which i quickly changed.
Here no OC Boot Screen appears, but booted correctly to catalina login. Desktop as usual...
 

Attachments

  • opencore-2020-02-01-121350_GX680_with_mac-efi.txt
    256 KB · Views: 179
  • opencore-2020-02-01-122016_GT740_without_mac-efi.txt
    256 KB · Views: 201
Last edited:

vit9696

macrumors member
Jun 4, 2014
50
147
Hm, so the GPU apparently does not seem to initialise at all. Graphics output protocol on the console handle does exist, but it reports 0x0 resolution with no resolutions effectively available. I added a bit more logging to the code so that we check all other handles, not just console handle, please redo the same logs with OC from the attachment.

In fact, there is one more thing with it. Most relatively modern Apple firmwares protect from loading Option ROMs (firmwares bundled with devices, like disks or GPUs). To load them one needs to press Option-Shift-Command-Period. Could you try that and create additional logs with the attached version when Mac EFI incompatible GPU is connected? I.e. hold OPT, reach Apple Boot Picker, press Option-Shift-Command-Period, load OpenCore. Latest logs from @startergo show it is not the case.

<redacted>
 
Last edited:

w1z

macrumors 6502a
Aug 20, 2013
692
481
Thanks for the advice. I did download the master branch from GitHub and compiled OC 0.5.5. After installing I still can't get to Windows 10. Do I need to configure OC in a certain way? I do have the AdviseWindows key set to true, but I don't have anything in the FirmwareFeatures portion which may be required for UEFI installs?

Also, remember I don't have a flashed GPU, so I cannot see boot screens.

Please share your config.plist so we can help you.
 
  • Like
Reactions: astonius86

astonius86

macrumors member
Apr 25, 2017
93
32
Mt Juliet, TN
Please share your config.plist so we can help you.

Thank you, I really do appreciate it. Config is attached. I should also give a bit more detail about my setup. I'm running a cMP 5,1 with dual x5680, Vega 64 (unflashed), and an AHCI PCIe SSD. This single drive is partitioned in the following manner as my system drive for both macOS (10.15.3) and Windows 10 in UEFI mode:

Code:
/dev/disk0 (internal, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *512.1 GB   disk0
   1:                        EFI EFI                     209.7 MB   disk0s1
   2:                 Apple_APFS Container disk4         359.9 GB   disk0s2
   3:         Microsoft Reserved                         16.8 MB    disk0s3
   4:       Microsoft Basic Data Windows                 151.4 GB   disk0s4
   5:           Windows Recovery                         617.6 MB   disk0s5

The EFI partition is where I have OpenCore 0.5.5 (master branch as of 1/30) installed with the attached config. Since my Windows install is UEFI I haven't been able to use the Startup Disk pref pane to switch and have instead been using cmd line to bless the Windows partition manually:
Code:
sudo bless --mount /Volumes/Windows --setBoot

Since installing OpenCore this command no longer works. Setting the Startup Disk also doesn't work. I also cannot use CMD+R to boot into recovery mode. OpenCore seems to always route me directly to macOS Catalina.
 

Attachments

  • config.txt
    9.4 KB · Views: 163

w1z

macrumors 6502a
Aug 20, 2013
692
481
Thank you, I really do appreciate it. Config is attached. I should also give a bit more detail about my setup. I'm running a cMP 5,1 with dual x5680, Vega 64 (unflashed), and an AHCI PCIe SSD. This single drive is partitioned in the following manner as my system drive for both macOS (10.15.3) and Windows 10 in UEFI mode:

Code:
/dev/disk0 (internal, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *512.1 GB   disk0
   1:                        EFI EFI                     209.7 MB   disk0s1
   2:                 Apple_APFS Container disk4         359.9 GB   disk0s2
   3:         Microsoft Reserved                         16.8 MB    disk0s3
   4:       Microsoft Basic Data Windows                 151.4 GB   disk0s4
   5:           Windows Recovery                         617.6 MB   disk0s5

The EFI partition is where I have OpenCore 0.5.5 (master branch as of 1/30) installed with the attached config. Since my Windows install is UEFI I haven't been able to use the Startup Disk pref pane to switch and have instead been using cmd line to bless the Windows partition manually:
Code:
sudo bless --mount /Volumes/Windows --setBoot

Since installing OpenCore this command no longer works. Setting the Startup Disk also doesn't work. I also cannot use CMD+R to boot into recovery mode. OpenCore seems to always route me directly to macOS Catalina.

Noticed several issues with your config.plist -

First use the attached (corrected) one then partially (csrutil enable --without nvram) or fully disable SIP in recovery and reboot back into macos. Keep pressing CMD + R until you enter recovery (takes time).

Once you have rebooted back into macos, select your Windows drive from Startup Disk and reboot.
 

Attachments

  • config-rev1.txt
    8.4 KB · Views: 202

astonius86

macrumors member
Apr 25, 2017
93
32
Mt Juliet, TN
Noticed several issues with your config.plist -

First use the attached (corrected) one then partially (csrutil enable --without nvram) or fully disable SIP in recovery and reboot back into macos. Keep pressing CMD + R until you enter recovery (takes time).

Once you have rebooted back into macos, select your Windows drive from Startup Disk and reboot.

No luck. SIP is fully disabled. I selected Windows from Startup Disk, rebooted, and it immediately went to macOS. In addition, this config prevented my kernel extensions from loading.
 

vit9696

macrumors member
Jun 4, 2014
50
147
Ok, the latest OpenCore from master should show the interface fine on most GPUs. For the good, no UGA is involved, as Mac Pro uses GOP, but it indeed has UGA on some handle, which is misleading. I should thank @startergo for patient testing.

The GOP problem. On Macs there are >= 2 GOPs: one current installed on console handle and others on GPU handles. The first one is the one that everyone including macOS uses. The second one is provided by GPU firmware. Normally Mac EFI should transparently forward calls from the first to the second, but for some reason it does not with custom GPUs. The workaround is to just ditch the first GOP and directly use the second. This issue is similar to hacks, with the only difference that they simply do not have first GOP at all, so we now handle them both in ProvideConsoleGop quirk.

The ConOut problem. To output text one normally uses SimpleText protocol on console handle. On Mac EFI and some other firmwares this is slightly more complicated, as they may also have ConsoleControl protocol, which decides whether to output text, graphics, or both (of course everyone does it in vendor-specific manner, thus we optionally have our own ConsoleControl). With custom GPUs, however, not a single SimpleText (GPU handles have it too) protocol prints anything regardless of ConsoleControl state. The issue is similar to some old hacks on Insyde, but those needed graphics ConsoleControl mode, which does not work here. As a workaround I added a custom text renderer on top of GOP, which is imperfect, but should cover most of the needs for now. This is enabled by BuiltinTextRenderer option.

Additional settings. By default screen resolution is set to 0x0, so Resolution will have to be set to Max or some other valid value (you can find them after setting Max and checking the log). Depending on the machine you may have to additionally tune some other things. ConsoleBehaviourOs and ConsoleBehaviourUi should most likely be set to ForceGraphics to avoid boot.efi verbose output and have working UEFI Shell, but I am not 100% sure. It is also likely that ConsoleControl will need to enabled as well.

With this I believe OpenCore UI and software launching from OpenCore should be able to access the screen. This includes boot.efi, which should now be able to do FileVault 2 (well, hopefully). As for Apple Boot Picker, I believe it is also possible to display it, but for this a separate tool applying the changes and loading it from firmware will be needed.

Note. There was a typo in the original message. Those, who accidentally enabled DummyPowerManagement, should disable it.
 
Last edited:

startergo

macrumors 603
Sep 20, 2018
5,021
2,283
Guys you can start testing with this config file (don't use OpenCore configurator yet) and pick some other values as mentioned by @vit9696 above. Thanks for the great work Vit! Download the latest source from the master and compile. You should be able to see the OC boot picker with provided config file. Please report your results.
 

Attachments

  • config.plist.zip
    2.8 KB · Views: 282
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.