acidanthera / bugtracker

Acidanthera Bugtracker
385 stars 44 forks source link

run-efi-updater flag no longer works in macOS 11, Big Sur #1255

Closed khronokernel closed 3 years ago

khronokernel commented 3 years ago

With macOS Big Sur, it seems that even though the NVRAM variable is set macOS will still bless the firmware update during both install and update processes:

15:835 00:005 OCB: Perform boot EFI to dp PciRoot(0x0)/Pci(0x1D,0x0)/Pci(0x0,0x0)/NVMe(0x1,09-63-E3-44-8B-44-1B-00)/HD(1,GPT,11F42760-7AB1-4DB5-924B-D12C52895FA9,0x28,0x64000)/\EFI\APPLE\UPDATERS\MULTIUPDATER\MultiUpdater.efi (0/0)
15:864 00:029 OCI4: Manifest (3744) for 65666962 parse fail with code 1
15:877 00:012 OCI4: Manifest (3744) for 65666262 parse fail with code 1
15:890 00:012 OCI4: Manifest (3744) for 65666264 parse fail with code 1
15:896 00:005 OCSB: No suitable signature - Security Violation
15:903 00:006 OCB: Apple Secure Boot prohibits this boot entry, enforcing!
15:909 00:005 OCB: LoadImage failed - Security Violation

Verified the NVRAM arg is still present and wasn't modified:

nvram -p | grep "run-efi-updater"
  run-efi-updater   No

MultiUpdater-boot.txt

CC @Osy86

vit9696 commented 3 years ago

References https://github.com/acidanthera/bugtracker/issues/948. The code in +[OSIUpdateFirmwareElement shouldUpdateFirmware] is unchanged. Something else got modified.

vit9696 commented 3 years ago

I found another variable specific to MultiUpdater.efi — __FIRMWARE_UPDATE_OPTOUT. The variable should be set to Yes (as a string). Checked in -[OSIUpdateFirmwareElement runReturningError:]. Please test and report.

khronokernel commented 3 years ago

Tested and same results unfortunately. Will upload entire boot log shortly

Edit: Added logs, from inside USB installer, till hitting the Firmware update

CoolTerm Capture 2020-11-03 13-22-59.txt

vit9696 commented 3 years ago

After some time investigating I can outline the following:

vit9696 commented 3 years ago

Based on this I believe we should:

vit9696 commented 3 years ago

Resolved by https://github.com/acidanthera/OpenCorePkg/commit/3998399ea941940f0a98b4c4172dcb46a85197a0.

startergo commented 3 years ago
  • Interestingly, vbiosupdater is still broken and causes crashes when ATY,Rom# is a string instead of data OR has unexpected format. To fix that RX 5xxx owners should inject something like 123-456-789 via DeviceProperties. Last mentioned in #901.

I can't find such a property in my ioregistry with Orinoco framebuffer injection.

vit9696 commented 3 years ago

And what?

startergo commented 3 years ago

Actually in my setup it is called:

ATY,EFIVersion 

And it corresponds to this in the Graphics/Display:

 EFI Driver Version:    01.01.183

My guess is it is the same property

jacklukem commented 3 years ago

Based on this I believe we should:

  • Always delete efi-boot-next-data and efi-boot-next on boot just as we do with BootNext.
  • Introduce a quirk (probably BlacklistAppleUpdate) just as before that will ignore (and delete) BootNext entries containing EFI\APPLE as well as other related variables like efi-payloadX.
  • Update notes about ATY,Rom# issues on dortania guides.

Hello @vit9696 and @khronokernel , on EFI Mac through OC bootloader, about this recent run-efi-updater (NVRAM variable) issue encountered during the BigSur 11.0.1 staged installer I have three questions:

1) If I use a previous OC 0.5.9 where BlacklistAppleUpdate (Misc Security feature) was still available, would this skip eventually BigSur 11.0.1 unwanted EFI firmware update ?

2) About using OC 0.6.3 board id spoofing , since recently apple BootROM version are in the form of: xxxx.0.0.0.0 to skip the firmware update, would be possible on OC config for a BigSur installer (even using the problematic run-efi-updater), to spoof a fake BootROM with highest number example 9999.0.0.0.0 ?

3) Since apart the EFI BootROM firmware, there is also the SMC "firmware" in the form of an alphanumeric, does in general during a staged OSInstaller (or specifically on this newer BigSur "MobileAssets.zip") apple firmware packages (nvram firmware.scap) also checks for the SMC version to proceed with firmware update ?