问题:OC精解

oc是什么意思

OC精解

精解OpenCore转自黑果小兵的部落阁

教程更新于2020.3.2,基于OpenCore0.5.6官方版本
由于个人能力有限,教程中难免会有些疏漏,这里推荐大家在参阅本教程的同时也阅读以下资料:

OpenCore官方文档–OpenCore最权威的资料,没有之一!!!xjn‘sBlog–xjn大佬的博客,对台式机非常友好的教程,内存管理写的非常详细OC-little–宪武大佬的OCACPI热补丁示例OpencoreVanillaDesktopGuide
什么是OpenCore
OpenCore(简称OC)是一个着眼于未来开源的引导工具,最初诞生于HermitCrabs实验室,现在接手于Acidanthera,其目的是创造一个更加严谨的模组化的轻量引导系统。尽管OpenCore的主要用途是黑苹果,它也支持其它操作系统的引导。
OpenCore现在处于公测Beta阶段,引导相关功能也已非常稳定,喜欢折腾的朋友现在已经是动手的时机了。
这个教程只能作为你探索的起点。请仔细阅读并时刻牢记你的硬件可能有不同的配置要求。
为什么选择OpenCore

从2019年9月以后,Acidanthera开发的内核驱动(Lilu,AppleALC等等)「不再会」在Clover上做兼容性测试OpenCore更加注重系统的安全性,提供对OpenCore自身引导文件对加密,同时对文件保险箱(FileVault)有更强大的支持,在未来会支持UEFI安全启动OpenCore启动FileVault(硬盘保险箱)加密的分区速度远超CloverOpenCore支持基于boot.efi的原生开机快捷键支持OpenCore使用更加先进的方法注入第三方内核扩展驱动(Kext)且与此同时不会破坏系统完整性保护OpenCore通过读取启动磁盘设置的NVRAM变量,可以像白苹果一样支持在设置的启动磁盘切换默认引导项支持给其它.efi驱动或引导工具加入参数大量Acidanthera维护的独立UEFI驱动被合并入OpenCore,未来的开发直接与OpenCore绑定,且不再支持CloverOpenCore常见疑问

OpenCore不自带精美的主题,以后会添加吗?
OpenCore自带的GUI仅用于debug,设计初衷是在正常使用的时像白苹果一样隐藏。其实OpenCore已经提供了大量可以绕开GUI的功能,将ShowPicker设置为NO隐藏菜单之后,可以通过系统自带的启动磁盘设置来切换默认系统,用苹果原生快捷键来重置NVRAM和添加引导表示符,需要其它功能的时候可以随时按ESC/Option调出,主题存在的意义不大N.D.K为官方OpenCore开发了一个独立的GUI插件,可以在这里下载,食用方法请阅读项目的Readme

OpenCore为什么不会为其它操作系统忽略ACPI补丁?
真正正确的ACPI(DSDT/SSDT)应当适用于所有的操作系统,单独为一个操作系统制作ACPI是不合理的,因此OpenCore基于ACPI标准,不会在ACPI上差别对待操作系统,如果想学习怎样使用和制作通用于所有操作系统的ACPI补丁,可以参考OC-littleOpenCore的MOD版本和官方版本有何不同?
OpenCoreMOD是N.D.K的一个Fork,里面加入了不注入除了macOS之外的其它操作系统的功能,可以看作是一个自带主题的懒人版。但是除非在个别极端情况下主板的固件真的不走规范,正确配置原版OpenCore和ACPI是不会造成无法引导其它操作系统的情况的。本教程鼓励正确配置OpenCore,因此基于原版OpenCore编写,且「不推荐」使用MOD版本来掩盖自身的配置问题。OpenCore的配置为什么看起来这复杂?
OpenCore为了提高兼容性,为用户开放了更多底层的QuirkOpenCore现阶段没有可用的非常直观的GUI编辑器换位思考,如果用Xcode来编辑Clover安装包内自带的Config样本,显然OpenCore会更简单。OpenCore很多功能都有且只有一处设置,但是Clover有大量等效组合互相干扰。

配置OpenCore
讲了这么多,终于到真正动手的环节了
本文较长,建议配合博客右下角的目录阅读
准备工作
我们先来做些简单的准备工作
推荐BIOS设置

禁用:英文中文
VT-d

英文中文
启用:英文中文
VT-x

英文中文
将操作系统类型设置为Windows8.1/10是因为部分主板在Other模式下会将系统认作是Windows7从而禁用UEFI的某些功能并开启CSM,200系及以后的主板理论上不存在这个问题

下载如下文件

OpenCorePkg(建议从Acidanthera的官方Sample开始构建,并使用Debug版本)
OpenCore-Factory提供连续的源码自动编译,喜欢尝鲜的朋友可以下载,最新编译为


MacInfoPkgAppleSupportPkgPlist编辑器:
ProperTree(基于Python的轻量级跨平台Plist编辑器,针对OpenCore有优化,Acidanthera官方推荐)Xcode(Acidanthera官方推荐,但是Xcode11处理<data>存在严重问题)PlistEditorPro(使用远古Plist标准,会破坏XML换行而且不会自动转换Base64,可用但是不推荐)OpenCoreConfigurator(简称OCC)是一个第三方图形化OpenCore编辑器,经过半年依赖的发展,如今已经趋近成熟
经测试,软件已经可以正常使用,但是由于OpenCore的配置文件更新频繁,所以软件不一定永远兼容最新版本,同时最新的版本为了同步开发中的自编译版本可能也存在不支持当前最新官方Release的情况。
使用之前需要了解清楚工具的当前支持到的最高版本,跨版本编辑会造成config损坏,设置项无法对应等棘手情况。
感谢mackie100和草原企鹅的付出

需要具备的条件

一个U盘对黑苹果有一定的知识基础,至少会自己配置Clover,清楚各个内核驱动.kext和UEFI.efi驱动的用途,不清楚可以查看附录[1]和附录[2]一个完全精简过的CloverEFI一个正常稳定工作的黑苹果测试平台EFI挂载工具创建USB启动盘
给自己留一个后手,先用USB尝试和排错,稳定了再迁移到硬盘里

创建一个USB启动盘,格式化为GUID分区图,分区类型为macOS日志式。

挂载完EFI分区真有意思的部分就「开始了」

基础文件夹结构

解压下载下来的OpenCore引导文件,把EFI文件夹里面的OC文件夹和BOOT/BOOTx64.efi对号入座放入ESP分区中
注意⚠️:与Clover不同,OpenCore的BOOTx64.efi和OpenCore.efi是两个不同的文件
添加UEFI引导项的时候应当添加BOOTx64.efi而不是OpenCore.efi!我们先「删除」一些不需要的文件
drivers文件夹下AppleUsbKbDxe.efi
这个驱动是给使用模拟UEFI的老主板在OpenCore界面正常输入用的,请勿在IvyBridge(3代酷睿)及以上的主板上使用(详见vit9696的解释)NvmExpressDxe.efi
用于在Haswell(4代酷睿)或更老的主板上支持NVMe硬盘,新主板不需要XhciDxe.efi
用于给SandyBridge(2代酷睿)或更老的主板上支持XHCI,新主板不需要HiiDatabase.efi
用于给IvyBridge(3代酷睿)或更老代主板上支持UEFI字体渲染,UEFIShell中文字渲染异常时使用,新主板不需要

tools文件夹下BootKicker.efi
调用苹果原生的引导切换GUI,黑苹果不支持CleanNvram.efi
OpenCore自带的NVRAM清理功能已经足够我们使用GopStop.efi
停止显卡GOP,排错时使用HdaCodecDump.efi
导出声卡Codec,可用于定制声卡,需要时可以临时加回来VerifyMsrE2.efi
用于检查主板上CFG锁的状态


OpenCore的正确文件结构如下所示

现在,我们可以把AppleSupportPkg中必需的.efi驱动程序放入Drivers文件夹,将你的kext和DSDT/SSDT放入各自的文件夹中。请注意,OpenCore不支持支持列表以外的UEFI驱动程序!完成后的效果:

配置思路
OpenCore的配置建议遵循从简原则,先确保能进系统再来增加其它功能(不进系统功能都是免谈),变数越少出错的概率也就越低

内核驱动只保留Lilu,WhateverGreen,VirtualSMC和必须依赖才能开机的驱动(删除AppleALC,VoodooI2C等功能性驱动)配置Config.plist

请记住OpenCore中的config.plist,与Clover的config.plist尽管名称相同但是内容和结构完全不同。它们不能混合滥用。如果你不清楚某一个项里应该填什么「数据类型」,请参考OpenCore官方文档下面的Quirk给的都是推荐值,请根据自身情况修改部分未在文中提及的Quirk和参数保留原样

复制Sample.plist,将副本重命名为config.plist并用上文提到的编辑工具打开
如果你打算使用的SMBIOS苹果已经停止支持或者你是用的是戴尔OEM笔记本请使用SampleFull.plist并「认真」补全所有SMBIOS信息


里面躺着所有我们需要配置的子项:
ACPI:用于加载,屏蔽和修补ACPI(DSDT/SSDT)表Booter:用于设置FwRuntimeServices.efi(Slide值计算,KASLR)DeviceProperties:用于设置PCI设备属性,如英特尔缓冲帧补丁,声卡LayoutIDKernel:用于说明OpenCore的具体加密信息,配置Kext加载顺序以及屏蔽驱动Misc:OpenCore的自身设置NVRAM:用于注入NVRAM(如引导标识符和SIP)Platforminfo:用于设置SMBIOS机型信息UEFI:用于加载UEFI驱动以及以何种顺序加载#WARNING-1~5是开发者的嘱咐和对Sample选择的说明,在删除之前请务必确保你已经阅读并遵守了这些条例
Warning-1:这只是一个实例。不要直接拿来开机。
Warning-2:在用Config开机之前,确保你已经理解Config内「每一个项的」的意义
Warning-3:在大多数情况下,建议从Sample.plist开始配置
Warning-4:SampleFull.plist用于苹果不再支持的机型(2011年或更早)

ACPI
Add:

你需要把这些而例子里内容修改/创建为你的EFI/OC/ACPI/下的文件Block:

禁用某个ACPI表,常用于禁用DAMR来关闭VT-dPatch:

对DSDT(SSDT)的内容进行查找和替换Quirks:ACPI相关设置

FadtEnableReset:NO在旧硬件上修复重启和关机,除非需要,否则不推荐开启

NormalizeHeaders:NO清除ACPI头字段,只有macOS10.13需要

RebaseRegions:YES尝试试探性地重新定位ACPI内存区域,使用自定义DSDT则必须开启

ResetHwSig:NO存在重新启动后因无法维持硬件签名而导致从休眠中唤醒的问题的硬件需要开启

ResetLogoStatus:NO无法在有BGRT表的系统上显示OEMWindows标志的硬件需要开启

Booter启动器
MmioWhitelist:如果开机卡在PCI...可以尝试开启Item1下的Patch

Quirks:

AvoidRuntimeDefrag:YES
开启后会修复UEFI的运行服务,例如日期,时间,NVRAM,电源控制等

DevirtualiseMmio:YES
开启后会减少Stolen内存占用空间,扩大Slide=N值的范围,适用于大多数主板

DisableSingleUser:NO
开启后会禁止Cmd+S和-s的使用,使设备更加接近于T2白苹果

DisableVariableWrite:NO
开启后会禁止NVRAM写入,在Z390/HM370等没有原生macOS支持NVRAM的主板上需要开启

DiscardHibernateMap:NO
开启后会重用原始休眠内存映射,仅某些旧硬件需要

EnableSafeModeSlide:YES
开启后会允许在安全模式下使用Slide值

EnableWriteUnprotector:YES
开启后会在执行期间删除CR0寄存器中的写入保护

ForceExitBootServices:NO
开启后会确保ExitBootServices即使在MemoryMap发生更改时也能调用成功,除非有必要,否则请勿使用

ProtectCsmRegion:NO
开启后会用于修复人为制造和睡眠唤醒的问题,AvoidRuntimeDefrag已经修复了这个问题所以请尽可能避免使用这个Quirk

ProtectSecureBoot:NO
避免操作系统对UEFI安全启动变量(db,dbx,PX,KEK)进行写入,这个选项主要用于避免Insyde主板和MacPro5,1的NVRAM问题

ProvideCustomSlide:YES
如果Slide值存在冲突,此选项将强制macOS执行以下操作:
使用一个伪随机值。只有在遇到OnlyN/256slidevaluesareusable!时需要

SetupVirtualMap:YES
开启后会将SetVirtualAddresses调用修复为虚拟地址

ShrinkMemoryMap:NO
有巨大且不兼容内存映射的主板需要开启,非必须不要使用

SignalAppleOS:NO
通过OSInfo将macOS加载的信息报告给其它操作系统,用于在Windows中为MacBook启用iGPU

DeviceProperties设备属性
不同的设备硬件地址不一样!你需要先通过Hackintool或者Windows设备管理器等工具查看PCI设备地址!
此处内容可以用Hackintool生成然后直接复制过来,请提前确保内容和结构无误

Add:添加_DSM设备属性
PciRoot(0x0)/Pci(0x2,0x0)

注入缓冲帧补丁,查看此处来确认你需要的缓冲帧补丁PciRoot(0x0)/Pci(0x1f,0x3)→Layout-id

应用AppleALC音频LayoutID注入Block:用于删除/屏蔽设备属性(可以删除此项,大多数情况都用不到)

这里的设置等同于Clover里的ACPI重命名_DSM→XDSM+TgtBridgeKernel内核
这里是指定要加载哪些Kext以及仿冒CPUID的地方,这里的顺序非常重要,所以请确保Lilu.Kext始终在第一位!其他优先级更高的Kext为Lilu的插件,如VirtualSMC,AppleALC,WhateverGreen等
Add:

BundlePath
这里填入Kext的名称如:Lilu.kext

Enabled
控制Kext的启用禁用

ExecutablePath
隐藏在kext中的实际可执行文件的路径,可以通过右键单击并选择显示包内容来查看Kext的路径。通常为Contents/MacOS/(Kext),但有的时候Plugin文件夹下也会有Kext。如:Contents/MacOS/Lilu
空壳Kext没有可执行文件(e.g.USBPorts.kext),此项留空即可

PlistPath
隐藏在Kext中的Info.plist路径如:Contents/Info.plist

VoodooI2C注入样板
VoodooPS2注入样板

Emulate:仿冒不支持的CPU,例如奔腾和赛扬,或者在不支持的CPU上启用XCPM

CpuidData:设置为零时,将使用原始CPU位<Clover_FCPUID_Extended_to_4_bytes_Swapped_Bytes>|00000000|00000000|00000000例如:CPUID0x0306A9就是A9060300|00000000|00000000|00000000

CpuidMask:CPU的被仿冒位FFFFFFFF|00000000|00000000|00000000如果需要替换更长的位,将00替换为FF

Block:屏蔽系统里的Kext

Patch:这是你要添加系统内核补丁,Kext补丁,和AMDCPU补丁的地方。(等同于Clover的KextToPatch和KernelToPatch)

Quirks:

AppleCpuPmCfgLock:NO如果设备的CFG-Lock是开启的状态则需要设置为YES(尽可能用Grub关闭BIOS的CFG-Lock并避免开启这个Quirk)

AppleXcpmCfgLock:NO同上

AppleXcpmExtraMsrs:NO禁用奔腾和某些至强等不支持CPU所需的多个MSR访问

AppleXcpmForceBoost:NO强制拉高睿频,建议在长期高负载的专业设备上使用,至强系列的处理器开启这个选项会受益

CustomSMBIOSGuid:NO对UpdateSMBIOSMode自定义模式执行GUID修补,用于戴尔笔记本电脑(等同于Clover的DellSMBIOSPatch)

DisbaleIOMapper:NO需要绕过VT-d且BIOS中禁用时使用

DummyPowerManagement:NO禁用AppleIntelCpuPowerManagement原生电源管理,用于更好的替代NullCpuPowerManagement.kext

ExternalDiskIcons:YES硬盘图标补丁,macOS将内部硬盘视为外接硬盘(huangse)时使用

IncreasePciBarSize:NO将IOPCIFamily中32位PCIBar的大小从1GB增加到4GB,在BIOS中启用Above4GDecoding是一种更加干净和安全的方法。某些X99板可能需要开启,这些主板通常会在IOPCIFamily上遇到内核崩溃

LapicKernelPanic:NO禁用由AP核心lapic中断造成的内核崩溃,通常用于「惠普电脑」(等同于Clover的KernelLAPIC)

PanicNoKextDump:YES在发生内核崩溃时阻止输出Kext列表,提供可供排错参考的崩溃日志,排错时请务必开启

PowerTimeoutKernelPanic:YES修复macOSCatalina中由于设备电源状态变化超时而导致的内核崩溃

ThirdPartyDrivers:NO为SSD启用TRIM指令,NVMeSSD会自动被macOS加载因此不需要,SATASSD可以在终端执行sudotrimforceenable开启同时修复macOS10.15下非苹果原厂SSD无法使用硬盘休眠(hibernatemode25)

XhciPortLimit:YES这实际上是15端口限制补丁,不建议依赖,因为这不是USB的最佳解决方案。有能力的情况下请选择定制USB,这个选项适用于没有定制USB的设备

Misc杂项
BlessOverride:用于覆盖Windowsbootmgfw.efi的位置以便识别Windows引导项,OpenCore和Windows的引导文件在同一硬盘的同一ESP分区下使用
1
2
3
Boot:引导界面的设置

HibernateMode:None
与系统内的休眠模式(hibernatemode25)配合,引导进系统会还原休眠前的状态,这个功能会影响SSD寿命,建议关闭
None:关闭休眠支持Auto:自动检测RTC和NVRAM模式RTC:RTC模式

HideAuxiliary:YES
默认隐藏以下引导项,按空格键显示全部macOS恢复在自定义引导项时定义为Auxiliary的引导项在Tools中添加的操作系统(如:CleanNVRAM)


HideSelf:NO
在OpenCore的启动选择中隐藏自身EFI分区内的其它启动项

PickerAttributes:0x00
给OpenCore自带的引导选择界面添加特效,食用方法为填入字体颜色和背景颜色的值的16进制之和
字体颜色0x00:黑0x01:蓝0x02:绿0x03:青0x04:红0x05:品红0x06:棕0x07:浅灰0x08:深灰0x09:浅蓝0x0A:浅绿0x0B:浅青0x0C:浅红0x0D:浅品红0x0E:黄0x0F:白

背景颜色0x00:黑0x10:蓝0x20:绿0x30:青0x40:红0x50:品红0x60:棕0x70:浅灰


PickerAudioAssist:NO设置为YES时会朗读屏幕上选择项的内容,需要提提前在EFI中放入音频文件并正确设置下文的Audio章节PollAppleHotKeys:YES
设置为YES后允许在引导过程中使用苹果原生快捷键,需要与QuirkKeySupport=Yes结合使用,具体体验取决于主板固件。快捷键组合:Cmd+V:启用-v跑码Cmd+Opt+P+R:重置NVRAMCmd+R:启动恢复分区Cmd+S:启动至单用户模式Option/ALT:在ShowPicker设置成NO时显示引导项选择界面,ALT不可用时可用ESC键代替Cmd+C+减号:关闭主板兼容性检查,等同于添加引导标识符-no_compat_checkShift:安全模式


ShowPicker:YES
显示OpenCore的UI,用于查看可用引导项设置为NO可以跳过倒计时,和PollAppleHotKeys=Yes配合快捷键可以大幅提升体验

TakeoffDelay:0
在启动前延迟n毫秒,提升键盘快捷键识别的正确率。n的有效范围为大于5000~10000,32bit以内的正整数

Timeout:0
设置引导项等待时间,单位秒0为关闭倒计时,相当于Clover的-1(并不是跳过倒计时)

PickerMode:Builtin
Builtin
使用OpenCore自带的简单UIExternal
使用其它GUIApple
使用苹果原生的GUI,黑苹果不支持

Debug:Debug有特殊用途,除非你知道你在做什么,否则保持原样,具体参考官方文档

DisableWatchDog:NO
如果macOS在启动时卡在某些地方,可能需要设置为YES,通常用于排除错误干扰

DisplayDelay:0DisplayLevel:
2147483714:在屏幕上显示所有Debug信息0:隐藏所有Debug信息

Target:
0:关闭日志记录3:允许屏幕输出日志19:允许屏幕输出UEFI变量日志65:在ESP分区根目录生成日志文件opencore-YYYY-MM-DD-HHMMSS.txt,但屏幕上不显示日志

Security:安全

AllowNvramReset:YES
允许在引导选择界面和快捷键Cmd+Opt+P+R按下时重置NVRAM

AllowSetDefault:YES
允许使用CTRL+回车和CTRL+数字锁定默认启动项

AuthRestart:NO
允许重启FileVault2分区时不用再次输密码,有安全风险

ExposeSensitiveData:
3将OpenCore的启动路径和版本储存进NVRAM11在3的基础上添加主板OEM信息,HWMonitorSMC2和NVMeFix需要主板OEM信息才能正常工作

Vault:Optional
OpenCore自身的加密和安全保护,具体参考官方文档
Optional
不强制要求vault.plist和vault.sig文件存在,但是会在其中任意文件存在时依旧执行验证,不安全Basic
强制要求vault.plist存在,开机时会根据里面的内容核对OC目录下的文件,防止在EFI文件系统崩溃后依旧启动Secure
强制要求vault.sig签名文件和vault.plist存在,用于和UEFI安全启动配合

ScanPolicy:0
0:允许扫描所有可用的硬盘其它值请参考官方文档,对给出的选项做16进制加法运算

Tools用于运行OC调试工具,例如验证CFG锁(VerifyMsrE2)

Arguments传递的参数

Auxiliary:YESYES默认隐藏

NameOpenCore启动项中显示的名称

Enabled启用或禁用

PathTools文件夹下的文件名如:VerifyMsrE2.efi

Entires:用于指定OpenCore无法自动找到的无规律引导路径

Arguments传递的参数

Auxiliary:NOYES默认隐藏

NameOpenCore启动项中显示的名称

Enabled启用或禁用

Path引导磁盘的PCI路径,可以通过OpenCoreShell的map命令找到如:PciRoot(0x0)/Pci(0x1D,0x4)/Pci(0x0,0x0)/NVMe(0x1,09-63-E3-44-8B-44-1B-00)/HD(1,GPT,11F42760-7AB1-4DB5-924B-D12C52895FA9,0x28,0x64000)/EFIMicrosoftBootootmgfw.efi

NVRAM
Add:

4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14
UIScale:OpenCoreUI和引导第一阶段缩放01:正常大小02:HIDPI(使FileVault和苹果标志在原生HIDPI显示器上以正常大小显示)

DefaultBackgroundColor:默认背景颜色控制第一阶段苹果标志后面的背景颜色,加特技格式为16进制颜色RGBA:RRGGBBAA,可以随意调整标准色:黑:00000000灰:BFBFBF00



7C436110-AB2A-4BBB-A880-FE41995C9F82
boot-args:-vdebug=0x100引导标识符,更多请查看附录[3]

csr-active-config:<0x00000000>(SIP设置)0x00000000-SIP完全开启0x30000000-允许未签名的Kext加载并允许写入受保护的文件系统路径0xE7030000-SIP完全关闭0x67000000-不再推荐使用

nvda_drv:<>设为31时启用NVIDIAWebDrivers没有N卡可以删除此项

prev-lang:kbd:<0x7a682d48616e733a323532>(将默认语言设置为简体中文,留空为英文)SystemAudioVolume:0x460x80为静音


Block:强制重写NVRAM变量,因为Add不会覆盖NVRAM中已经存在的值,所以需要用Block删除原来的值(如:boot-args)来起到刷新的作用来注入上方的Add
具体工作原理请参考Acidantherabugtracker#575

LegacyEnable:允许从nvram.plist中读取NVRAM变量

没有原生NVRAM的设备设置为YESmacOS下硬件NVRAM工作「不」正常的设备设置为YESmacOS下硬件NVRAM工作正常的设备设置为NOLegacyOverwrite:NO

允许nvram.plist中的变量覆盖现有NVRAM的变量模拟NVRAM需要开启LegacySchema:

选择注入的NVRAM变量,其它未被包含的变量即使存在于nvram.plist也不会被注入,与LegacyEnable配合使用WriteFlash:

在有些有bug的UEFI固件上,系统运行时不能将易失性变量转换为非易失性变量,这个选项提供的是一个解决方案,并没有增加一个新功能PlatformInfo机型信息
Auto:YES(基于Generic部分生成PlatformInfo,而不是DataHub,NVRAM和SMBIOS部分)
OpenCore提供了大量方法来注入PlatformInfo,这里只介绍最简单的自动注入法

Generic:

AdviseWindowsYES启用来允许重启到一个ESP分区不是磁盘中第一个分区的磁盘中的Windows

SpoofVendor:YES仿冒制造商为Acidanthera来避免出现冲突

SystemUUID:填入设备的硬件UUID以免造成Windows和其它软件的激活问题(官方不再建议留空)

MLB:用macserial读取或生成

ROM:<0x############>可以是任意6ByteMAC地址,如0x112233000000

SystemProductName:用macserial读取或生成

SystemSerialNumber:用macserial读取或生成

UpdateDataHub:YES(更新DataHub)

UpdateNVRAM:YES(更新NVRAM)

UpdateSMBIOS:YES(更新SMBIOS)

UpdateSMBIOSMode:Create(用新分配的EfiReservedMemoryType替换原有的表,戴尔笔记本需要使用Custom并开启CustomSMBIOSGuid)

macserial
使用macserial查看原有PlatformInfo:

打开下载好的MacInfoPkg找到里面的macserial并将其复制到桌面终端输入:(建议复制粘贴)
1
2
3
此时你现有的PlatformInfo就已经列出来了,对着Config对号入座即可如果输出的Valid不是Possibly说明这个PlatformInfo不符合规范,很有可能无法激活苹果服务,建议重新生成

使用macserial生成新的PlatformInfo:

如果要生成新的PlatformInfo请输入如下命令来列出所有支持的设备型号:
1
2
3
然后输入如下命令来生成序列号和MLB
1
请忽略<>,例子:./macserial-mMacBookPro15,3
输出的结果中,|前面的是序列号SystemSerialNumber,后面的是MLBUEFI
ConnectDrivers:YES

强制加载.efi驱动程序,更改为NO将自动连接UEFI驱动程序,这样以获得更快的启动速度,但并非所有驱动程序都可以自行连接,某些文件系统驱动程序可能无法加载Drivers:在这里添加你的.efi驱动

Audio:
这里的声卡设置只与UEFI环境相关,不影响系统内音频,但是需要确保系统内声卡正常工作,这里填的部分值需要从系统内的IOReg提取

AudioSupport:YESYES启用音频支持

AudioDevice:声卡设备的PCI地址PciRoot(0x0)/Pci...可以在macOS下运行gfxutil-fHDEF获得

AudioCodec:0声卡的Codec地址,可以在IORegistryExplorer的HDEF→IOHDACodecDevice→IOHDACodecAddress中获得,一般是0x0直接搜索IOHDACodecDevice可以大幅节约时间

AudioOut:指定的输出设备,最简单的方法就是从0到声卡总输出数每个都试一遍声卡的总输出数可以在Debug版本的OpenCore日志中获得(nOutputs)

MinimumVolume:输出最小音量,有效值为0~100如果下方VolumeAmplifier公式计算出的最小音量小于这里给出的值Duang就不会被播放

PlayChime:YESYES播放Duang

VolumeAmplifier:1000音量在原有基础上放的百分比有效范围0~1000

如果要让Duang和VoiceOver等其它音频功能工作,需要额外下载语音资源包并放置于ESP(分区)/EFI/OC/Resources/Audio文件夹下,下载地址(注:使用gitclone--depth=1速度最快)。
同时AudioDxe也需要安装在Drivers文件夹中并通过config注入

Input:

KeyForgetThreshold:5按住按键后每个键之间的时间间隔(单位:毫秒)

KeyMergeTheshold:2按住按键被重置的时间间隔(单位:毫秒)

KeySupport:YES开启OC的内置键盘支持使用AppleUsbKbDxe.efi请设置为NO

KeySupportMode:Auto键值转换协议模式V1:UEFI旧版输入协议V2:UEFI新输入协议AMI:APTIO输入协议

KeySwap:NO交换Command和Option键

PointerSupport:NO修复UEFI选择器协议

PointerSupportMode:留空TimerResolution:50000固件时钟刷新的频率(单位:100纳秒)华硕主板为自己的界面使用60000苹果使用100000

Output:

TextRenderer:BuiltinGraphics
文字渲染模式
BuiltinGraphics:使用OpenCore内置文字渲染的图形模式,并同时启用OpenCore自带的控制台管理,支持HIDPI和全屏范围显示,通常效果胜于下面的选项SystemGraphics:使用主板固件自带文字渲染的图形模式,并同时启用OpenCore自带的控制台管理SystemText:使用主板固件自带文字渲染的文字模式,并同时启用OpenCore自带的控制台管理SystemGeneric:使用主板固件自带文字渲染的文字模式和自带的控制台管理

ConsoleMode:留空
控制台模式
大多数固件上留空是最好的选择Max会尽可能使用最大的ConsoleModeTextRendere使用Builtin时此项设置不生效

Resolution:Max
宽x高@Bpp(如:3840x2160@32),注意Bpp不是刷新率,而是显示位深(bitsperpixel),如果不清楚可以不填宽x高(如:3840x2160)也是支持的留空将不会改变UEFI的默认分辨率Max将会尝试开启最大分辨率这个选项在固件没有GOP时会失效

ClearScreenOnModeSwitch:NO从图形模式切换到文本模式时,某些固件仅清除屏幕的一部分,导致屏幕上残留之前绘制的图片。此选项会在切换到文本模式之前用黑色填充整个屏幕DirectGopRendering:NO
开启后会直接使用OpenCore内置的GOP渲染控制台这个选项主要用于提升或修复MacPro5,1的渲染问题除非开启后能明显感觉到有改进否则不要开启

IgnoreTextInGraphics:NO修复不用-v开机时日志覆盖苹果标志输出的问题ReplaceTabWithSpace:NO取决于固件,某些设备在UEFIShell中编辑文件使用Tab键出问题时启用。注意,此选项只作用于TextRenderer:System...(主板固件自带)的文字渲染ProvideConsoleGop:YES
macOS引导加载程序要求GOP(图形输出协议)存在于控制台句柄上大部分的笔记本都不提供GOP,台式机的独立显卡可以单独刷入GOP如果选择启动项之后不出现macOS启动Verbose请启用开启此选项能最大可能保证OpenCoreUI和苹果标志以正确分辨率显示

ReconnectOnResChange:NO有些固件在GOP分辨率改变后要求重新连接控制器才能输出文本,开启这个选项会导致从UEFIShell中启动OpenCore时直接黑屏,尽量避免开启SanitiseClearScreen:YES
修复OpenCore在高分屏中以1024x768显示的问题,注意要同时开启带有OpenCore自带的控制台管理(ConsoleControl)的TextRenderer(前三种)并将ConsoleMode的内容「留空」

Protocols:(协议)

AppleAudio:YES安装AppleAudio协议以在OpenCore中使用VoiceOver,目前该协议支持在macOS10.13及以上播放音频,老系统使用的AppleHDA协议暂未支持

AppleBootPolicy:NO用于确保虚拟机或旧白苹果上兼容APFS

AppleEvent:NO用于在虚拟机或旧白苹果上兼容文件保险箱

AppleImageConversation:NO重新安装AppleImageConservation协议

AppleKeyMap:NO重新安装AppleKeyMap协议

AppleSmcIO:YES重新安装AppleSMCI/O协议VirtualSmc.efi已经被替代为此选项

AppleUserInterfaceTheme:NO重新安装AppleUserInterfaceTheme协议

DataHub:NO重新安装DataHub协议

DeviceProperties:NO确保在VM或旧白苹果上完全兼容

FirmwareVolume:NO修复Filevault的UI问题,设置为YES可以获得更好地兼容FileVault

HashServices:NO修复运行FileVault时鼠标光标大小不正确的问题,设置为YES来在AptioIV或更老的主板上兼容FileVault

OSInfo:NO用于为主板或者其它程序接收来自macOS引导工具的消息

UnicodeCollation:NO一些较旧的固件破坏了Unicode排序规则,设置为YES可以修复这些系统上UEFIShell的兼容性(通常为用于IvyBridge或更旧的设备)

Quirks:

ExitBootServicesDelay:0IgnoreInvalidFlexRatio:NO
BIOS中无法禁用MSR_FLEX_RATIO(0x194)时开启

ReleaseUsbOwnership:NO
从固件驱动程序中释放USB控制器所属权,除非您不知道自己在做什么,否则避免使用。Clover的等效设置是FixOwnership

RequestBootVarFallback:YES
用于修复启动项顺序

RequestBootVarRouting:YES
从EFI_GLOBAL_VARIABLE_GUID中为OC_VENDOR_VARIABLE_GUID请求redirectBoot前缀变量启用此项以便能够在与macOS引导项设计上不兼容的固件中可靠地使用启动磁盘设置

UnblockFsConnect:NO
惠普笔记本在OpenCore引导界面没有引导项时设置为YES

解决Clover和OpenCore的冲突
在重启进入OpenCore之前,我们还需要解决一些冲突问题:

删除Clover设置面板
Clover设置面板会和OpenCore产生冲突,需要删除
Clover设置面板位于/Library/PreferencePanes/Clover.prefPane终端输入sudorm-rf/Library/PreferencePanes/Clover.prefPane删除

清理Clover的模拟NVRAMRC脚本和守护程序CloverDaemonNew
在终端中输入:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
重置「硬件」NVRAM
为了尽可能减少问题出现的概率,建议在Clover和OpenCore之间切换时重置「硬件」NVRAM
通过CloverF11清除删除Clover内的EmuVariableUefi.efi(通常位于Drives/UEFI/或drivers64UEFI/目录下)
如果不删除EmuVariableUefi.efi,Clover只会重置模拟出来的原本就是空的NVRAM重启进入Clover引导项选择界面然后按下F11或Fn+F11直到设备自动重启


开机直接选择UEFI引导项进入OpenCore通过OpenCore重置
参考下文现在是时候开机见分晓了


完善与优化
这里只简单写了一些网上暂时还找不到中文解决方案的一些问题,强烈推荐在看这里的同时参阅xjn大佬的博客
排除常见错误
遇到如下问题可以尝试这样设置:

进入OpenCore时卡在novaultprovided!:
Misc→SecurityVault=Optional


选完启动项后卡在EndRandomSeed或直接卡死
如果等一会能进入系统但是不跑码「或」不显示第一阶段的苹果标志:
UEFI→QuirksProvideConsoleGop=YES


如果完全卡死:
尝试Misc→Boot下PollAppleHotKeys=NO,UEFI→Input下KeySupport=NO,并换用AppleUsbKbDxe.efi这个设备的CFG很可能有锁,如下方案「二选一」解锁CFG(建议),参考xjn教程中的解锁BIOS中的CFG功能小节Kernel→Quirks下AppleCpuPmCfgLock=YES,AppleCpuPmCfgLock=YES
这个方法的代价是丧失原生电源管理,「不」建议长期使用



卡在PCIConfigurationBegin
BIOS关闭CSM并设置操作系统模式为Win8.1/10依次尝试如下引导标识符
npci=0x2000npci=0x3000

如果依旧不行,将Booter→MmioWhitelist→Item1(Generic...)下的Enabled改为True
4代CPU主板可以尝试同时开启Item0下的补丁

开机出现Failedtoparserealfieldoftype1
这是因为OC本身不支持real类型的数据,Xcode在编辑较长的数字的时候会自动将Integer转换为real
用VSCode打开config.plistCommand+F查找替换所有real为Integer

开机卡在ThisversionofMacOSXisnotsupported
检查Config内PlatformInfo是否填写无误Automatic=YES如果使用的是SampleFull,确保所有内容都已完整填写


300系主板卡在apfs_module_start
较新的主板使用了新的时钟AWAC来代替RTC,这个设备与macOS不兼容,下面的方法「二选一」(推荐)添加SSDT-AWAC来屏蔽AWAC并启动RTC用SSDT-RTC0仿冒RTC


华硕或惠普关机后BIOS重置或被强制进入安全模式
将Kernel→Patch→Item0(com.apple.driver.AppleRTC)下的Enabled改为YES来开启AppleRTCPatch

UEFI引导项选择完OpenCore之后直接跳回选择界面
参考上文重新核对ESP分区中的文件夹结构,确保UEFI启动项添加的是OpenCore的Bootx64.efi

模拟NVRAM
开始之前先在这里澄清一些被广泛误解的理论并解释一些常见问题

什么是NVRAM:
非易失性随机存取存储器(NVRAM)是随机存取存储器(RAM)的一种;在依赖主板上CMOS电池时,即使断开电脑电源,该存储器仍可以保证存储的数据不丢失NVRAM里存有大量敏感参数,如:UEFI安全启动的KEK,PK,DB和DBX,因此NVRAM需要是一种提供随机访问功能的非易失性存储器,且需要通过特定的GUID读写

没有「原生NVRAM」的含义:
所谓“没有「原生」NVRAM”实际上指的是macOS在使用APTIO内存修复驱动的环境下NVRAM的「写入」依旧没有被修复,导致变量无法存入主板现在支持UEFI的主板都支持NVRAM,而且NVRAM在Windows或者Linux下完全正常工作macOS可以正常读取NVRAM,也就是说在Windows下给NVRAM中的7C436110-AB2A-4BBB-A880-FE41995C9F82:bootargs加上-v后重启进入macOS会直接进入啰嗦模式「没有原生NVRAM」很容易误解为这个主板如同传统BIOS+MBR引导的主板一样完全不支持NVRAM「原生NVRAM」实际上应该理解为macOS可以正常读写「硬件」NVRAM

没有原生或模拟NVRAM的影响:
无法使用偏好设置的启动磁盘为OpenCore指定默认引导项FakeSMC的部分SMCKey无法保存AsusSMC.kext会丢失键盘在上次关机时的亮度没有原生或模拟NVRAM完全不影响系统的正常运作,更不存在不模拟NVRAM就没法开机的谬论

哪些主板的硬件NVRAM在macOS下不正常工作:
部分X99和X299芯片组主板之前300系的NVRAM问题已经通过SSDT添加PMC设备的方式解决

验证你的主板的NVRAM在macOS下是否正常工作:
有时候只参考并不能得出准确的结论,实际试验一下更加准确
删除引导工具内的VariableRuntimeDxe.efi,EmuVariableRuntimeDxe.efi,EmuVariableUefi.efi删除NVRAM导出脚本LogoutHook(参考下文),RCScript(参考上文)删除EFI分区根目录下的nvram.plist重启在终端输入sudonvrammyvar=test再次重启在终端输入nvram-p|grep-imyvar如果终端成功输出了test那就说明你的主板在macOS下硬件NVRAM正常工作,反之就是「不」正常工作

模拟NVRAM是什么,LogoutHook扮演什么角色:
模拟NVRAM是通过VariableRuntimeDxe(EmuVariableRuntimeDxe/EmuVariableUefi)模拟出一个macOS可读写的重启「不记忆」NVRAM,里面的内容与硬件层面的NVRAM完全隔离,引导工具在加载完这个驱动后自身也会进入这个环境中并失去对硬件NVRAM的控制LogoutHook是一个在账户注销前运行的脚本,运行时会用nvram-x命令将NVRAM中的信息导出至EFI分区根目录的nvram.plist中,OpenCore在下一次开机时会读取nvram.plist里面的内容并写进硬件NVRAM中

可以直接使用别人生成的nvram.plist吗
使用别人的nvram.plist时,只有7C436110-AB2A-4BBB-A880-FE41995C9F82下的内容可以正常工作8BE4DF61-93CA-11D2-AA0D-00E098032B8C下的内容由于UUID不同完全无法工作,完全无法为OpenCore指定默认引导项即使不模拟NVRAM,OpenCore和FwRuntimeServices提供的7C436110-AB2A-4BBB-A880-FE41995C9F82模拟已经足以在nvram.plist中正确生成此项所以这么做完全没有意义

用LogoutHook模拟NVRAM并为OpenCore指定默认引导项
确认主板在macOS下NVRAM不正常工作后我们可以通过安装OpenCore提供的LogoutHook来模拟NVRAM
这里强烈建议在开始之前用OpenCore重置NVRAM并通过VariableRuntimeDxe.efi创建一个虚拟的可正常读写的NVRAM
如果严格按照这个流程执行且Config内BlessOverride和启动项的路径均已设置正确,那么理论上启动磁盘为OpenCore指定默认引导项的功能已经可以正常工作
如果OpenCore无法正确识别Windows建议先修复这个问题再模拟NVRAM

按照上文的方法清理Clover的RC脚本彻底删除之前安装的LogoutHook
终端输入:sudodefaultsreadcom.apple.loginwindowLogoutHook来获取LogoutHook的路径
如果终端输出的不是一串路径,而是
Thedomain/defaultpairof(com.apple.loginwindow,LogoutHook)doesnotexist
说明系统内没有安装LogoutHook,跳过下面的命令直接继续下一步Config的设置输入如下命令来删除LogoutHook.command并清空触发设置(请按顺序执行!!!)
1
2
3
4
5

Config中:
Booter→Quirks→DisableVariableWrite设置为YESMisc→Security→AllowNvramReset设置为YESMisc→Security→ExposeSensitiveData设置为3NVRAM→LegacyEnable设置为NO

删除引导工具内config.plist「和」Drivers目录下的VariableRuntimeDxe.efi,EmuVariableRuntimeDxe.efi删除EFI分区下的nvram.plist重启进入OpenCore然后选择引导界面的重置NVRAM选项「或者」按下快捷键Command+Option+P+R设备自动重启后,进入BIOS,Windows或者WinPE重新为OpenCore添加引导项
OpenCore重置NVRAM时相比Clover会重置更多的变量,理论上更干净,但是会导致UEFI引导项丢失进入macOS,在Config里将NVRAM→LegacyEnable设置为YES,UEFI→Drivers下添加VariableRuntimeDxe.efi
1
2
3
4
在EFI/OC/Drivers文件夹下放入VariableRuntimeDxe.efi再次重启进入macOS,打开偏好设置/启动磁盘,解锁后选择你的macOS分区然后「锁上」终端输入命令检查NVRAM变量是否成功写入:
1
如果输出的「结尾」部分包含SystemLibraryCoreServicesoot.efi我们可以继续执行下面的步骤如果显示nvram:Errorgettingvariable-'8BE4DF61-93CA-11D2-AA0D-00E098032B8C:Boot0080':(iokit/common)datawasnotfound说明模拟NVRAM没有成功,请回到第一步重来

在终端中输入sudo+空格然后将LogoutHook拉进终端的「窗口中」,按下回车,输入密码,再次回车(临时运行LogoutHook)终端中会出现一排上上步提到的错误,这是正常的因为我们没有其它的引导项(Boot0081~3)和上次引导的记录(BootCurrent)等等,只需要确保「没有任何关于」Boot0080和BootOrder的错误出现就可以了(BootNext也会报错但是实测没有影响)挂载EFI分区并打开根目录下的nvram.plist,检查Boot0080和BootOrder是否存在
1
2
3
4
5
6
7
8
如果没有问题,在终端输入如下命令「安装」LogoutHook:
1
2
3
如果使用10.12或更老的系统则需要将nvram.mojave也复制到$HOME下
mv(空格,把nvram.mojave拖窗口,然后再空格)$HOME再次删除引导工具内config.plist「和」Drivers目录下的VariableRuntimeDxe.efi非常重要!不要漏了而前功尽弃!

大功告成!修复OpenCore引导界面的显示问题
在Config中:

UEFI→ProtocolsConsoleControl=YES

UEFI→QuirksProvideConsoleGop=YESIgnoreTextInGraphics=YESSanitiseClearScreen=YES

Misc→BootConsoleMode=留空Resolution设置为显示器的正常分辨率,如4k:3840x2160

UEFI→OutputTextRenderer=BuiltinGraphics

如果OC界面出现在显示屏中央,即使画面没有扭曲也说明分辨率不正常
将ConsoleMode设置为Max并关闭SanitiseClearScreen在某些固件上也可以做到分辨率正确,但是这个方法官方「不」推荐使用
在OpenCore中启用FileVault文件保险箱
在Config中:

Misc→SecurityAuthRestart=YES

UEFI→InputKeySupport=YES

UEFI→ProtocalsFirmwareVolume=YESAppleSmcIo=YESProvideConsoleGOP=YESRequestBootVarRouting=YES(Haswell或更老的主板中(包括X99))HashServices=YES(在AptioIV固件的主板上,如果遇到了Stillwaitingforrootdevice)ExitBootServicesDelay=5

修改OpenCore引导界面的启动项名称
在与引导项的.efi文件的同一目录下添加纯文本文件.contentDetails可以修改对应启动项的名称
注意⚠️!!!启动项名称只能是ASCII字符!!!
下方的命令修改的是当前macOS的启动项名称,修改其它分区的macOS前需要先进入其目录,这里不再赘述
删掉.contentDetails就可以恢复原来的名称
终端输入:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
附录[1]–OpenCore支持的内核驱动(Kext)及其用途
参考https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/Kexts.md
GitHub项目的下载地址位于Release下,驱动具体支持的设备请进入项目地址查看
有线网卡

驱动及项目地址备注
AppleRTL8169Ethernet

驱动及项目地址备注
AtherosE2200Ethernet.kext

驱动及项目地址备注
AtherosL1cEthernet.kext

驱动及项目地址备注
IntelMausi.kext

驱动及项目地址备注
IntelMausiEthernet.kext

驱动及项目地址备注
NullEthernetInjector.kext

驱动及项目地址备注
RealtekR1000SL.kext

驱动及项目地址备注
RealtekRTL8100.kext

驱动及项目地址备注
RealtekRTL8111.kext

驱动及项目地址备注
Wi-Fi和蓝牙

驱动及项目地址备注
AirPortAtheros40.kext

驱动及项目地址备注
AirportBrcmFixup.kext

驱动及项目地址备注
ATH9KFixup.kext

驱动及项目地址备注
BrcmPatchRAM.kext

驱动及项目地址备注
BT4LEContinuityFixup.kext

驱动及项目地址备注
MT7610

驱动及项目地址备注
RT5370

驱动及项目地址备注
RTL8192CU

驱动及项目地址备注
键盘,鼠标和触摸设备

驱动及项目地址备注
ApplePS2SmartTouchPad.kext

驱动及项目地址备注
AsusSMC.kext

驱动及项目地址备注
NoTouchID.kext

驱动及项目地址备注
SerialMouse.kext

驱动及项目地址备注
VoodooI2C.kext

驱动及项目地址备注
VoodooPS2Controller.kext

驱动及项目地址备注
显卡和声卡

驱动及项目地址备注
AppleALC.kext

驱动及项目地址备注
NVIDIACUDAdrivers

驱动及项目地址备注
NVIDIAWeb-drivers

驱动及项目地址备注
SNBGraphicsMojaveInstaller

驱动及项目地址备注
VoodooHDA.kext

驱动及项目地址备注
WhateverGreen.kext

驱动及项目地址备注
Polaris22Fixup.kext

驱动及项目地址备注
CPU和SMC

驱动及项目地址备注
CPUFriend.kext

驱动及项目地址备注
FakeSMC.kextandsensors

驱动及项目地址备注
HWPEnabler.kext

驱动及项目地址备注
NullCPUPowerManagement.kext

驱动及项目地址备注
OpcodeEmulator.kext

驱动及项目地址备注
TSCAdjustReset.kext

驱动及项目地址备注
VirtualSMC.kext及传感器

驱动及项目地址备注
VoodooTSCSync.kext

驱动及项目地址备注
USB和其它接口

驱动及项目地址备注
IOElectrify.kext

驱动及项目地址备注
USBWakeFixup.kext

驱动及项目地址备注
SASMegaRAID.kext

驱动及项目地址备注
Sinetek-rtsx.kextata-draft-node="block"data-draft-type="table"data-size="normal"data-row-style="normal">

驱动及项目地址备注
VoodooSDHC.kext

驱动及项目地址备注
其它驱动

驱动及项目地址备注
AppleIntelInfo.kext

驱动及项目地址备注
HibernationFixup.kext

驱动及项目地址备注
Lilu.kext

驱动及项目地址备注
LiluFriend.kext

驱动及项目地址备注
RTCMemoryFixup.kext

驱动及项目地址备注
NightShiftUnlocker.kext

驱动及项目地址备注
WebCamera.kext

驱动及项目地址备注
附录[2]–UEFI驱动(.efi)及其用途
OpenCore支持的UEFI驱动

ApfsDriverLoaderAPFS文件系统引导驱动

AudioDxeOpenCore用于在UEFI环境播放音频的驱动

CrScreenshotDxe增加OpenCoreUI内截屏功能,快捷键为LCtrl+LAlt+F12(左Ctrl+左Alt+F12)

FwRuntimeServices通过支持只读和只写NVRAM变量来提高OpenCore和Lilu的安全性。有些设置项,例如RequestBootVarRouting,需要此驱动程序才能正常运行

HFSPlus苹果自带的闭源HFS驱动,不具有Bless和其它功能,但是启动速度比它的等效驱动VBoxHfs快3倍

HiiDatabase.efi用于给IvyBridge(3代酷睿)或更老代主板上支持UEFI字体渲染,UEFIShell中文字渲染异常时使用,新主板不需要

NvmExpressDxe从Broadwell开始的大多数固件中都包含此驱动程序。对于Haswell及更早的固件,如果安装了NVMeSSD就需要使用

MemoryAllocation.efi为Z390/X99等主板预留第一组512MB内存,帮助引导工具注入内核以及内核缓存至第一组512MB内存,需要配合FwRuntimeServices和引导标识符slide=1

AppleUsbKbDxe添加了对AppleKeyMapAggregator协议支持的USB键盘驱动,这是AppleGenericInput的等效驱动,根据固件的不同,实际效果会更好或更坏

VariableRuntimeDxeEDKII的NVRAM驱动,OpenCore中用于模拟NVRAM,需要配合FwRuntimeServices(.efi)和DisableVariableWrite(Quirk)

VBoxHfs具有bless支持的HFS文件系统驱动程序。该驱动程序可以等效替代Apple固件中常见的闭源HFSPlus驱动。此驱动虽然功能更加完善,但启动速度相比大约慢3倍,并且尚未经过安全审核

XhciDxe来自MdeModulePkg的XHCIUSB控制器支持驱动程序。从SandyBridge开始的大多数固件中都包含此驱动程序。在较旧的固件上可以用于支持USB3.0PCI卡

部分网上无法找到的UEFI驱动可以在这里下载


OpenCore不兼容的UEFI驱动

AppleGenericInput添加了对AppleKeyMapAggregator协议支持的用户输入驱动。此外,还解决了某些固件上的鼠标输入问题,这是AppleUsbKbDxe的等效驱动,根据固件的不同,实际效果会更好或更坏已合并入OpenCore

AppleImageCodec为Clover启动FileVault2解码PNG和BMP,OpenCore已集成

AppleKeyAggregator为Clover支持FileVault2启动UI的驱动,OpenCore已集成

AppleKeyFeeder为Clover支持FileVault2内PS/2键盘输入的驱动,OpenCore已集成

AppleUITheme为Clover支持FileVault2启动UI主题的驱动,OpenCore已集成

AptioInputFix&AppleGenericInput用于解决UEFI固件输入问题的驱动,已与OpenCore合并

AptioMemoryFixNVRAM和内存驱动,用于修复UEFI固件上的内存问题,已与OpenCore合并为FwRuntimeServices

CsmVideoDxe用于CloverGUI的显卡驱动,允许使用更多分辨率,基于UEFIBIOS中的CSM兼容模块,并将启用所需的CSM,OpenCore不兼容

DataHubDxemacOS必需的DataHub协议,OpenCore自带且提供了这个Quirk

EmuVariableUefiClover的模拟NVRAM驱动,OpenCore不兼容,替代品为VariableRuntimeDxe

EnglishDxe在UEFIShell中支持UnicodeCollation协议,OpenCore自带且提供了这个Quirk

EnhancedFatDxe这个驱动已存在于所有UEFI固件中,无法从OpenCore直接使用。由于很多固件的FAT支持都有问题,导致在尝试写入时会损坏文件系统。如果在引导过程中写入EFI分区出现问题,则需要将此驱动用UEFITool刷入固件中

FirmwareVolume为Clover启动FileVault2创建FirmwareVolume光标的驱动,OpenCore已集成

FSInjectClover用于注入内核驱动(Kext)的驱动,OpenCore自带且使用更先进的方法

HashServiceFix修复UEFIBIOS中的哈希支持,OpenCore自带且提供了这个Quirk

OsxAptioFixDrv旧的CloverNVRAM和内存驱动,用于修复UEFI固件上的内存问题,与FwRuntimeServices和OpenCore不兼容

OSXAptioFix2Drv-Free2000.efiClover的内存驱动,用于修复UEFI固件上的内存问题,作者已经声明会损坏硬件

OsxAptioFix3DrvCloverNVRAM和内存驱动,用于修复UEFI固件上的内存问题,与FwRuntimeServices和OpenCore不兼容

OsxFatBinaryDrvClover用于支持OSX10.9和更早版本的FATBinary可执行文件的驱动,与FwRuntimeServices和OpenCore不兼容

OsxLowMemFixDrv精简版的OsxAptioFixDrv,用于修复UEFI固件上的内存问题,与FwRuntimeServices和OpenCore不兼容

PartitionDxe用于支持非常规分区图的驱动,如:混合GPT/MBR或Apple分区图,OpenCore兼容性未知

Ps2MouseDxePS/2鼠标驱动,这个驱动已存在于所有UEFI固件中

SMCHelperUEFI层面的SMC驱动,用于与FakeSMC配合。与OpenCore不兼容

VirtualSmcUEFI层面的SMC驱动,已与OpenCore合并

其它未在本文中提到的UEFI驱动一律不兼容附录[3]–常用内核引导标识符合集

darkwake=0

OC是什么?

这个词经常出现在stiga——瑞典著名的乒乓球器材品牌上的。
它是底板的一个型号。
OC是它的一种型号,OC是英语OffensiveClassic(进攻经典)的缩写。
附送:一些其他字母。
CR是在球拍表面有一层涂层,可以增快出球的速度威胁更大.
wrb是一种技术,拍柄是空的,任何型号的底板都可以使用这种技术.可以使重心靠前.
还有,TUBE是在拍子中有管状的镂空.
举个例子
如果什么都没有用就叫OC.
如果OC使用了CR的技术就是叫OC-CR
如果他同时又加了空心柄的设计就叫OC-CR-WRB
有不懂再问。
懂了吧?选我哦!祝你成功!
祝中国乒乓再创辉煌!
祝王励勤、侯英超(国家队的削球手)更上一层楼!
祝我考上理想大学!
选我为最佳答案吧!

oc什么意思

超频的英文名称是“overclock”,是一种通过调整硬件设置提高芯片的主频来获得超过额定频率性能的技术手段。
 电脑的超频就是通过计算机操作者的超频方式将cpu、显卡、内存等硬件的工作频率提高,让它们在高于其额定的频率状态下稳定工作,以提高电脑的工作速度。

OC是什么意思?

1、OC,指的是outputcompare单片机相关的概念。输出比较的作用是用程序的方法在特定的时刻输出需要的电平,实现对外部电路的控制。详细资料可以见单片机里面的ETC模块。OC,Opera官方中文社区Operachina的简称。

2、OC(Objective-C),通常写作ObjC和较少用的Objective C或Obj-C,是扩充C的面向对象编程语言。它主要使用于MacOSX和GNUstep这两个使用OpenStep标准的系统,而在NeXTSTEP和OpenStep中它更是基本语言。

3、OC是废水中以碳计的有机物的含量,测试的指标常用TOC表示。我国在污水排放控制中也采用TOC指标。且TOC在线仪器对水样氧化比较彻底,操作和维护简便,不产生二次污染,能够满足连续在线监测的实际需要。

4、OC电子竞技俱乐部,由周日和与陈宇凌在2020年正式成立,旗下现主要经营英雄联盟手游项目。在顶级联赛夏季职业邀请赛中,经历26支战队单循环比赛赛制后,OC战队以2:0击败EDG结束最后一场比赛,最终位列积分总榜前三。 

5、OC,OpticalCarrier,光载波,SONET为光纤传输系统定义了同步传输的线路速率等级结构,传输速率以51.84Mb/s为基础,此速率对光信号称为第1级光载波,即OC-1。

当输入端加电信号时发光器发出光线,受光器接受光线之后就产生光电流,从输出端流出,从而实现了“电—光—电”转换。以光为媒介把输入端信号耦合到输出端的光电耦合器,由于它具有体积小、寿命长、无触点,抗干扰能力强,输出和输入之间绝缘,单向传输信号等优点,在数字电路上获得广泛的应用。


oc是什么意思?

oc,原创角色,originalcharacter的缩写。

OC作为“原创角色”经常被粉丝社区使用。OC是不属于现有知识产权的角色,是由在线人员创建的。您通常可以在同人作品中找到OC,作者或艺术家在其中开发新角色并将其放入现有世界。它们在诸如龙与地下城之类的角色扮演游戏中也很常见,其中大多数参与者都会创建一个新角色。

OC作为“原创角色”的定义近年来越来越流行,尤其是粉丝社区变得越来越大、越来越精细。OC不在源材料中,纯粹是作者和创作者的想象作品。例如,星球大战系列的粉丝,尤其是同人小说作家,经常创作适合星球大战宇宙的OC。

OC可用于多种用途。许多OC是同人故事的主要角色,并为熟悉的世界提供了不同寻常的视角。例如,有人可能会在哈利波特世界中写OC,但他去了一所完全不同的巫师学校。

一些OC还有助于促进其他角色的关系或充实背景故事。例如,您可以创建一个OC,它是一个流行电视节目中两个角色的孩子。除了同人小说,OC还可以体现在其他类型的艺术中。人们经常为他们的原始角色创作绘画、肖像和角色设计。


OC是什么意思?

OC即Over-The-CounterMarket。OC后缀代表股票的上市/挂牌地点是在场外市场股票交易所。

redherring在美国是指新发行证券的初步募股说明书,主要用于掌握市场对该种证券的兴趣,说明书的内容并不包括发行价格、利润和股息预测等关键数字。在美国,法律要求在说明书的正面必须印上红色的通知,“红鲱鱼”(redherring)一词因此而来。

RedHerring用于红头招股书、公开说明书初稿必须向美国证监会提交的注册文件,其中描述首次公开上市的细节及公司的前景。红头说明书中并无注明发行的价格或发行规模。

扩展资料:

OC是一个分散的无形市场。它没有固定的、集中的交易场所,而是由许多各自独立经营的证券经营机构分别进行交易的,并且主要是依靠电话、电报、传真和计算机网络联系成交的。

OC的组织方式采取做市商制。场外交易市场与证券交易所的差别在于不采取经纪制,投资者直接与证券商进行交易。

OC是一个拥有众多证券种类和证券经营机构的市场,以未能在证券交易所批准上市的股票和债券为主。由于证券种类繁多,每家证券经营机构只固定地经营若干种证券。

参考资料来源:百度百科-OC

参考资料来源:百度百科-场外市场


版权声明:本站内容由互联网用户投稿自发贡献或转载于互联网,文章观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至2024tuiguang@gmail.com举报,一经查实,本站将立刻删除。

合作:2024tuiguang@gmail.com