OC 常见问题解决方案(译自官方文档)

时间:2020-07-17 10:44:15   收藏:0   阅读:1550

以下分部分慢慢翻译原文,您需要哪部分的翻译请直接留言。我有邮箱通知,一天内帮你翻译。

常见故障解决/General Troubleshooting

本文解决关于 OC、macOS 的启动问题,以及 macOS 系统问题。 如果您不清楚您的问题在 macOS 启动过程中的确切位置,请阅读 macOS Boot Process 以清晰地了解更多。

笔记本用户想把已有的 Clover install 转换成 OpenCore 方案,请见 Clover to OpenCore conversion ,虽然该方案还没有完全完成。

如果在这里找不到您的问题,请看 the official OpenCore documentation: Configuration.pdf

OpenCore 启动过程的问题

Stuck on no vault provided!

关闭您的 Vaulting,位置在 config.plist 里的 Misc -> Security -> Vault ,详细设置如下:

如果您已经运行了 sign.command,那么 OC 会被插入256字节的 RSA-2048签名,所以你需要恢复 OpenCore.efi 文件。 原版 OpenCore.efi 可以在这里下载: OpenCorePkg

Note: Vault 和 FileVault 是两个不同的东西, 详见 Security and FileVault

Stuck on OC: Invalid Vault mode

这可能是拼写错误, OpenCore 中的选项是区分大小写的。请检查拼写, Optional 才是对的,其位于 Misc -> Security -> Vault

卡在 EndRandomSeed

Couple problems:

Booter Issues:

To verify whether your board has MATs, check the logs for something like this:

OCABC: MAT support is 1

Kernel Issues:

UEFI Issues:

卡在 [EB|#LOG:EXITBS:START]

实际上,这和 EndRandomSeed 是完全相同的错误,所以以下解决方案也适用 EndRandomSeed (日志显示不太一样,是因为 10.15.4 及更高版本更改了调试协议):

Booter 问题:

译得不好,放原文: * RebuildAppleMemoryMap may not be a fan of your firmware, use of this quirk is dependant on having EnableWriteUnprotector disabled and SyncRuntimePermissions enabled with the addition of having a Memory Attribute Table in your firmware. If your firmware doesn‘t have MATs, disable both RebuildAppleMemoryMap and SyncRuntimePermissions then enable EnableWriteUnprotector.

验证你的主板有没有 MATs,检查日志是否有如下

1 为有,0 为没有,没有日志的请使用 Debug 版本且把日志级别调高

OCABC: MAT support is 1

Kernel 问题:

UEFI 问题:

看不到 macOS partitions

Main things to check:

Black screen after picker

This is due to missing ConsoleGOP, enable it under your config:

Another possibility is that the problem occurres due to RebuildAppleMemoryMap being enabled, disable it under your config:

If this doesn‘t help, grab the debug versions of OpenCore.efi and BOOTx64.efi and replace them in your EFI. This will show much more info on where your hack is actually getting stuck.

Stuck on OC: OcAppleGenericInput... - Success

So this isn‘t actually an error, instead OpenCore isn‘t showing you all the debug info. This is right before/while the kernel is being loaded so things we need to check for:

If this doesn‘t help, grab the debug versions of OpenCore.efi and BOOTx64.efi and replace them in your EFI. This will show much more info on where your hack is actually getting stuck.

Stuck on OCB: OcScanForBootEntries failure - Not Found

This is due to OpenCore being unable to find any drives with the current ScanPolicy, setting to 0 will allow all boot options to be shown

Stuck on OCB: failed to match a default boot option

Same fix as OCB: OcScanForBootEntries failure - Not Found, OpenCore is unable to find any drives with the current ScanPolicy, setting to 0 will allow all boot options to be shown

Stuck on OCABC: Memory pool allocation failure - Not Found

This is due to either incorrect BIOS settings and/or incorrect Booter values. Make sure config.plist -> Booter -> Quirks is correct and verify your BIOS settings:

Stuck on OCS: No schema for DSDT, KernelAndKextPatch, RtVariable, SMBIOS, SystemParameters...

This is due to either using a Clover config with OpenCore or using a configurator such as Mackie‘s Clover and OpenCore configurator. You‘ll need to start over and make a new config or figure out all the garbage you need to remove from your config. This is why we don‘t support configurators, they are known for these issues

Stuck on OC: Driver XXX.efi at 0 cannot be found

Verify that your EFI/OC/Drivers matches up with your config.plist -> UEFI -> Drivers

Note that the entries are case-sensitive.

Stuck on Buffer Too Small

Stuck on Plist only kext has CFBundleExecutable key

Missing or incorrect Executable path

Receiving "Failed to parse real field of type 1"

Stuck after selection macOS partition on OpenCore

Can‘t select anything in the picker

Stuck on This version of Mac OS X is not supported: Reason Mac...

This error happens when SMBIOS is one no longer supported by that version of macOS, make sure values are set in PlatformInfo->Generic with Automatic enabled. Reminder of supported SMBIOS in macOS 10.15 Catalina:

And reminder, the following SMBIOS require newer versions of macOS:

Couldn‘t allocate runtime area errors

See Fixing KASLR slide values

SSDTs not being added

So with OpenCore, there‘s some extra security checks added around ACPI files, specifically that table length header must equal to the file size. This is actually the fault of iASL when you compiled the file. Example of how to find it:

* Original Table Header:
*     Signature        "SSDT"
*     Length           0x0000015D (349)
*     Revision         0x02
*     Checksum         0xCF
*     OEM ID           "ACDT"
*     OEM Table ID     "SsdtEC"
*     OEM Revision     0x00001000 (4096)
*     Compiler ID      "INTL"
*     Compiler Version 0x20190509 (538510601)

The Length and checksum value is what we care about, so if our SSDT is actually 347 bytes then we want to change Length to 0x0000015B (347)(the 015B is in HEX)

Best way to actually fix this is to grab a newer copy of iASL or Acidanthera‘s copy of MaciASL and remaking the SSDT

Booting OpenCore reboots to BIOS

技术分享图片

OCABC: Incompatible OpenRuntime r4, require r10

Outdated OpenRuntime.efi, make sure BOOTx64.efi, OpenCore.efi and OpenRuntime are all from the same exact build. Anything mismatched will break booting

macOS installer 安装盘的启动问题

Stuck on RTC..., PCI Configuration Begins, Previous Shutdown..., HPET, HID: Legacy...

Well this general area is where a lot of PCI devices are first setup and configured, and is where most booting issues will happen. Other names include:

The main places to check:

Example of what a disabled RTC with no way to enable looks like(note that there is no value to re-enable it like STAS):

技术分享图片

"Waiting for Root Device" or Prohibited Sign error

Generally seen as a USB error, couple ways to fix:

Another possible issue is missing USB ports in your DSDT, macOS isn‘t great at finding hardware and needs things explicitly defined to it for many things. This means if a USB port is not defined, macOS won‘t be able to find it. To fix this we use USBInjectAll to fix booting, note that this only works on Intel USB Chipsets and should only be required on Broadwell and older systems(with some newer AsRock boards also needing it)

For AMD users with missing ports in DSDT, you‘re gonna have to try all the ports in your system and pray, generally 3.1 AsMedia ports work without issue.

On rare occasions(mainly laptops), the SATA controller isn‘t officially supported by macOS. To resolve this, we‘ll want to do a few things:

Note that you will only experience this issue after installing macOS onto the drive, booting the macOS installer will not error out due to SATA issues.

macOS installer in Russian

Default sample config is in Russian because slavs rule the Hackintosh world, check your prev-lang:kbd value under NVRAM -> Add -> 7C436110-AB2A-4BBB-A880-FE41995C9F82. Set to 656e2d55533a30 for American: en-US:0 and a full list can be found in AppleKeyboardLayouts.txt. For those using with a simple text editor(ie. UEFI Shell, Notepad++, etc), 656e2d55533a30 will become ZW4tVVM6MA==

You may also need to reset NVRAM in the boot picker as well

Still didn‘t work? Well time for the big guns. We‘ll force remove that exact property and let OpenCore rebuild it:

NVRAM -> Block -> 7C436110-AB2A-4BBB-A880-FE41995C9F82 -> Item 0 then set it Type String and Value prev-lang:kbd

技术分享图片

macOS Installer being damaged

If you‘ve download macOS before October 2019, you likely have an expired macOS Installer certificate, there‘s 2 ways to fix this:

For the latter:

date 0901000019

Stuck on or near IOConsoleUsers: gIOScreenLock.../gIOLockState (3...

This is right before the GPU is properly initialized, verify the following:

Scrambled Screen on laptops

技术分享图片
Enable CSM in your UEFI settings. This may appear as "Boot legacy ROMs" or other legacy setting.

Black screen after IOConsoleUsers: gIOScreenLock... on Navi

For MSI Navi users, you‘ll need to apply the patch mentioned here: Installer not working with 5700XT #901

Specifically, add the following entry under Kernel -> Patch:

Base:
Comment: Navi VBIOS Bug Patch
Count: 1
Enabled: YES
Find: 4154592C526F6D2300
Identifier: com.apple.kext.AMDRadeonX6000Framebuffer
Limit: 0
Mask:
MinKernel:
MaxKernel:
Replace: 414D442C526F6D2300
ReplaceMask: 
Skip: 0

300 series Intel stalling on apfs_module_start...

Commonly due to systems running AWAC clocks, pleas see the Getting started with ACPI section

Kernel Panic Cannot perform kext summary

Generally seen as an issue surrounding the prelinked kernel, specifically that macOS is having a hard time interpreting the ones we injected. Verify that your kexts are in the correct order(master then plugins, Lilu always being first) and that kexts with executables have them and plist only kexts don‘t.

Kernel Panic AppleIntelMCEReporter

With macOS Catalina, dual socket support is broken, and a fun fact about AMD firmware is that some boards will actually report multiple socketed CPUs. To fix this, add AppleMCEReporterDisabler to both EFI/OC/Kexts and config.plist -> Kernel -> Add

Kernel Panic AppleIntelCPUPowerManagement

This is likely due to faulty or outright missing NullCPUPowerManagement, the one hosted on AMD OSX‘s Vanilla Guide is corrupted. Go yell at Shannee to fix it. To fix the issue, remove NullCPUPowerManagement from Kernel -> Add and EFI/OC/Kexts then enable DummyPowerManagement under Kernel -> Quirks

Frozen in the macOS installer after 30 seconds

This is likely due to faulty or outright missing NullCPUPowerManagement, the one hosted on AMD OSX‘s Vanilla Guide is corrupted. Go yell at Shannee to fix it. To fix the issue, remove NullCPUPowerManagement from Kernel -> Add and EFI/OC/Kexts then enable DummyPowerManagement under Kernel -> Quirks

15h/16h CPU reboot after Data & Privacy screen

Follow directions here after UPDATE 2: Fix Data and Privacy reboot

macOS frozen right before login

This is a common example of screwed up TSC, for most system add CpuTscSync

For Skylake-X, many firmwares including Asus and EVGA won‘t write to all cores. So we‘ll need to reset the TSC on cold boot and wake with TSCAdjustReset. Compiled version can be found here: TSCAdjustReset.kext. Note that you must open up the kext(ShowPackageContents in finder, Contents -> Info.plist) and change the Info.plist -> IOKitPersonalities -> IOPropertyMatch -> IOCPUNumber to the number of CPU threads you have starting from 0(i9 7980xe 18 core would be 35 as it has 36 threads total)

The most common way to see the TSC issue:

Case 1 Case 2
技术分享图片 技术分享图片

Keyboard works but trackpad does not

Make sure that VoodooInput is listed before VoodooPS2 and VoodooI2C kexts in your config.plist.

VoodooI2C Troubleshooting

Check the order that your kexts load - make they match what is shown under Gathering Files:

  1. VoodooGPIO, VoodooInput, and VoodooI2CServices in any order (Found under VoodooI2C.kext/Contents/PlugIns)
  2. VoodooI2C
  3. Satellite/Plugin Kext

Make sure you have SSDT-GPIO in EFI/OC/ACPI and in your config.plist under ACPI -> Add in your config.plist. If you are still having issues, reference the Getting Started With ACPI GPIO page.

Kernel Panic on Invalid frame pointer

So this is due to some issue around the Booter -> Quirks you set, main things to check for:

kextd stall[0]: AppleACPICPU

This is due to either a missing SMC emulator or broken one, make sure of the following:

MediaKit reports not enough space

This error is due to a small EFI, by default Windows will create a 100MB EFI whereas macOS will expect 200MB. To get around this you have 2 way to go:

Default Show All Devices(Cmd+2)
技术分享图片 技术分享图片

DiskUtility failing to erase

This is either 1(or more) of 5 issues:

macOS 安装后的问题

Broken iMessage and Siri

技术分享图片

If these fixes do not work, see the Fixing iServices page for more in-depth guide.

No on-board audio

Refer to Fixing Audio with AppleALC section

BIOS reset or sent into Safemode after reboot/shutdown

Issue with AppleRTC, quite a simple fix:

Note: If you still have issues, you‘ll need to use RTCMemoryFixup and exclude ranges. See here for more info

The following boot-arg should handle 99% of cases(pair this with RTCMemoryFixup):

rtcfx_exclude=00-FF

If this works, slowly shorten the excluded area until you find the part macOS is getting fussy on

macOS GPU acceleration missing on AMD X570

Verify the following:

DRM Broken

See Fixing DRM page

"Memory Modules Misconfigured" on MacPro7,1

Add MacProMemoryNotificationDisabler kext to EFI/OC/Kexts and Kernel -> Add. Note that this kext has an odd quirk here it requires WhateverGreen to function correctly.

Apps crashing on AMD

Easy fix, buy Intel

So with AMD, whenever Apple calls CPU specific functions the app will either not work or outright crash. Here are some apps and their "fixes":

Sleep crashing on AMD

This is generally seen on AMD who use the chipset‘s USB controller, specifically for the Ryzen series and newer. The main way to tell if you‘re having issues with this is checking logs after either sleeping or waking:

Should result in something like this:

```text`
Sleep transition timed out after 180 seconds while calling power state change callbacks. Suspected bundle: com.apple.iokit.IOUSBHostFamily.


You can double check which controller is XHC0 via IOReg and checking the Vendor ID(1022 for AMD chipset). The fix for this sleep issue is either:

* Avoid the chipset USB all together(ideally set `_STA = 0x0` to disable the controller outright with an SSDT)
* Correct the USBX power properties to what the controller expects

## AssetCache Content Caching unavailable in virtual machine

Errors such as:
```bash
$ sudo AssetCacheManagerUtil activate
AssetCacheManagerUtil[] Failed to activate content caching: Error Domain=ACSMErrorDomain Code=5 "virtual machine"...

arise due to VMM flag being exposed by sysctl.

Apply VmAssetCacheEnable kernel patch to disguise the flag and allow normal operation.

Coffee Lake systems failing to wake

In macOS 10.15.4, there were some changes made to AGPM that can cause wake issues on Coffee Lake systems. Specifically displays hooked up to the iGPU would fail to wake. To resolve this:

其他问题

Can‘t run acpidump.efi

Call upon OpenCore shell:

shell> fs0: //replace with proper drive

fs0:\> dir //to verify this is the right directory

  Directory of fs0:
   01/01/01 3:30p  EFI

fs0:\> cd EFI\OC\Tools //note that its with forward slashes

fs0:\EFI\OC\Tools> acpidump.efi -b -n DSDT -z

Fixing SSDTTime: Could not locate or download iasl!

This is usually due to an outdated version of Python, try either updating Python or add iasl to the scripts folder for SSDTTime:

Fix Python: Python is not installed or not found on PATH

Easy fix, download and install the latest python:

Make sure Add Python to PATH

技术分享图片

Windows Startup Disk can‘t see APFS drives

Incorrect resolution with OpenCore

No temperature/fan sensor output

So couple things:

For iStat, you‘ll have to wait for an update. For AMD users, you can use either:

Note for AMD with FakeSMC:

Can‘t find Windows/BootCamp drive in picker

So with OpenCore, we have to note that legacy Windows installs are not supported, only UEFI. Most installs now are UEFI based but those made by BootCamp Assistant are legacy based, so you‘ll have to find other means to make an installer(Google‘s your friend). This also means MasterBootRecord/Hybrid partitions are also broken so you‘ll need to format the drive you want to install onto with DiskUtility. See the Multiboot Guide on best practices

Now to get onto troubleshooting:

"You can‘t change the startup disk to the selected disk" error

This is commonly caused by irregular partition setup of the Windows drive, specifically that the EFI is not the first partition. To fix this, we need to enable this quirk:

技术分享图片

Booting Windows results in BlueScreen or Linux crashes

This is due to alignment issues, make sure SyncRuntimePermissions is enabled on firmwares supporting MATs. Check your logs whether your firmware supports Memory Attribute Tables(generally seen on 2018 firmwares and newer)

Common Windows error code:

Booting Windows error: OCB: StartImage failed - Already started

This is due to OpenCore getting confused when trying to boot Windows and accidentally thinking it‘s booting OpenCore. This can be avoided by either move Windows to it‘s own drive or adding a custom drive path under BlessOverride. See Configuration.pdf for more details.

iASL warning, # unresolved

If you try to decompile your DSDT and get an error similar to this:

iASL Warning: There were 19 external control methods found during disassembly, but only 0 were resolved (19 unresolved)

This happens when one ACPI table requires the rest for proper referencing, it does not accept the creation of DSDTs as we‘re only using it for creating a select few SSDTs. For those who are worried, you can run the following:

iasl * [insert all ACPI files here]

No Volume/Brightness control on external monitors

Oddly enough, macOS has locked down digital audio from having control. To bring back some functionality, the app MonitorControl has done great work on improving support in macOS

Disabling SIP

SIP or proper known as System Integrity Protection, is a security technology that attempts to prevent any malicious software and the end user from damaging the OS. First introduced with OS X El Capitan, SIP has grown over time to control more and more things in macOS, including limiting edits to restricted file locations and 3rd party kext loading with kextload(OpenCore is unaffected as kexts are injected at boot). To resolve this, Apple has provided numerous configuration options in the NVRAM variable csr-active-config which can either be set in the macOS recovery environment or with OpenCore‘s NVRAM section(The latter will be discussed below).

You can choose different values to enable or disable certain flags of SIP. Some useful tools to help you with these are CsrDecode and csrstat. Common values are as follows (bytes are pre-hex swapped for you):

Note: Disabling SIP with OpenCore is quite a bit different compared to Clover, specifically that NVRAM variables will not be overwritten unless explicitly told so under the Delete section. So if you‘ve already set SIP once either via OpenCore or in macOS, you must override the variable:

技术分享图片

Writing to the macOS system partition

With macOS Catalina and newer, Apple split the OS and user data into 2 volumes where the system volume is read-only by default. To make these drives writable we‘ll need to do a few things:

macOS Catalina

  1. Disable SIP
  2. Mount drive as writable (Run sudo mount -uw / in terminal)

macOS Big Sur

  1. Disable SIP
  2. Mount drive as writable (See below link for command)
  3. Create a new snapshot after the changes (See below link for command)
  4. Tag this snapshot for next boot (See below link for command)

Full credit and command links provided by ASentientBot and @mac_editor:

原文:https://www.cnblogs.com/yucloud/p/13328001.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!