黑苹果的进阶操作

请保证在黑苹果已完全能够正常使用、并有足够能力理解相关术语后进行以下操作。

TODOS

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# OpenCore
https://forums.macrumors.com/threads/manually-configured-opencore-on-the-mac-pro.2207814/
https://forums.macrumors.com/threads/refindplus-opencore-by-mybootmgr.2231693/
https://dortania.github.io/OpenCore-Legacy-Patcher/START.html#patcher-warnings

# 长期更新教程
# 于2021-06-06阅读
https://dortania.github.io/OpenCore-Install-Guide/
https://dortania.github.io/OpenCore-Post-Install/
# 仍然保留的阅读内容
# config.plist,各平台都还没看
https://dortania.github.io/OpenCore-Install-Guide/config.plist/penryn.html#starting-point
https://dortania.github.io/OpenCore-Multiboot/oc/linux.html#method-a-chainloading-a-efi-bootloader-grub2-systemd-boot
# 看到这里
https://github.com/dortania/OpenCore-Install-Guide/blob/master/clover-conversion/Clover-config.md#graphics
# OpenCore-Post-Install看到这里
https://dortania.github.io/OpenCore-Post-Install/usb/system-preparation.html#checking-what-renames-you-need

资料

论坛和博客

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
https://dortania.github.io/
https://aserebln.blogspot.com/
http://netkas.org/
https://howtomacospc.wordpress.com/
https://hackintosh.com/
https://blog.skk.moe/
http://dosdude1.com/
https://blog.daliansky.net/
https://osxlatitude.com/forums/
https://www.tonymacx86.com/forums/
https://www.macos86.it/
https://www.hackintosh-forum.de/
https://www.reddit.com/r/hackintosh/
https://www.insanelymac.com/forum/
https://blog.neroxps.cn/
https://www.hackintosh-montreal.com/
https://www.applelife.ru/
https://www.misonsky.cn/
https://www.bugprogrammer.me/
https://fangf.cc/
https://blog.xjn819.com/
http://bbs.pcbeta.com/
http://mac.pcbeta.com/
https://www.itpwd.com/
https://www.penghubingzhou.cn/#blog
https://blog.zuiyu1818.cn/
https://change-y.github.io/
https://www.macrumors.com/
https://www.kancloud.cn/chandler/mac_os/480611
https://www.firewolf.science/
https://www.osx86.net/
http://yqp7js.coding-pages.com/
https://xstar-dev.github.io/
https://heipg.cn/
https://hamac.pl/
https://www.reddit.com/r/hackintosh/
https://pikeralpha.wordpress.com/
https://com-chris1111.github.io/
https://i.pcbeta.com/home.php?mod=space&uid=233039&do=thread&view=me&type=reply&order=dateline&from=space

硬件选择

1
2
3
4
5
6
7
https://wiki.osx86project.org/wiki/index.php/Main_Page
https://blog.daliansky.net/Mojave-Hardware-Support-List.html
https://www.tonymacx86.com/threads/guide-how-to-get-bluetooth-and-wifi-working.275962/
https://4pda.to/forum/index.php?showtopic=72333&st=7780
https://www.insanelymac.com/forum/topic/286092-guide-1st-generation-intel-hd-graphics-qeci/?hl=%20vertek
http://myoldmac.net/sitemap-e.htm
https://github.com/toleda/wireless_half-mini

显卡

1
2
3
4
5
6
7
https://applelife.ru/threads/ati-radeon-hd-4xxx-hd-5xxx-amd-radeon-hd-6xxx-hd-7xxx-r5-r7-r9-rx-vega.28890/
https://applelife.ru/threads/nvidia-gt-x-750-950-980-maxwell-1030-1080-pascal.1546195/
https://applelife.ru/threads/nvidia-gt-x-640-690-740-760-780-kepler.37131/
https://applelife.ru/threads/nvidia-gt-x-420-480-510-590-610-630-fermi.27607/
https://www.tonymacx86.com/threads/guide-general-framebuffer-patching-guide-hdmi-black-screen-problem.269149/
https://www.tonymacx86.com/threads/ati-mobility-radeon-34000-hd.21620/
https://www.insanelymac.com/forum/topic/139476-ati-mobility-radeon-hd-3400/

ACPI

1
2
3
4
5
https://uefi.org/specifications
https://uefi.org/sites/default/files/resources/ACPI_6_3_May16.pdf
https://uefi.org/sites/default/files/resources/ACPI_5.pdf
https://uefi.org/sites/default/files/resources/ACPI_4.pdf
https://uefi.org/specs/ACPI/6.4/19_ASL_Reference/ACPI_Source_Language_Reference.html

引导器

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# 还没看的
// Clover显卡相关
https://www.insanelymac.com/forum/topic/282787-clover-v2-instructions/?do=findComment&comment=1853010
https://www.insanelymac.com/forum/topic/282787-clover-v2-instructions/?do=findComment&comment=1853099
// CPU
https://www.insanelymac.com/forum/topic/282787-clover-v2-instructions/?do=findComment&comment=1853597
https://www.insanelymac.com/forum/topic/282787-clover-v2-instructions/?tab=comments#comment-1853640

// 睡眠
https://www.insanelymac.com/forum/topic/282787-clover-v2-instructions/?tab=comments#comment-1853603

// RAID
https://www.insanelymac.com/forum/topic/282787-clover-v2-instructions/?do=findComment&comment=1868751

// 选项
https://www.insanelymac.com/forum/topic/282787-clover-v2-instructions/page/2/?tab=comments#comment-1878476

// kexts
https://www.insanelymac.com/forum/topic/282787-clover-v2-instructions/?do=findComment&comment=1909550

// AAPL
https://www.insanelymac.com/forum/topic/282787-clover-v2-instructions/?do=findComment&comment=2020878

// Legacy
https://www.insanelymac.com/forum/topic/298027-guide-aio-guides-for-hackintosh/page/14/?tab=comments#comment-2097514

问题库

1
2
3
4
https://www.tonymacx86.com/threads/readme-common-problems-and-workarounds-on-10-14-mojave.255823/
https://wiki.osx86project.org/wiki/index.php/German_FAQ
https://www.tonymacx86.com/threads/faq-read-first-laptop-frequent-questions.164990/
https://www.insanelymac.com/forum/topic/280062-waiting-for-root-device-when-kernel-cache-used-only-with-some-disks-fix/

亮度修复

1
2
3
https://www.tonymacx86.com/threads/native-brightness-working-without-blinkscreen-using-patched-applebacklight-kext.121031/
https://www.tonymacx86.com/threads/fixing-brightness-with-custom-edid.219413/
https://www.tonymacx86.com/threads/guide-patching-dsdt-ssdt-for-laptop-backlight-control.152659/

电源管理

1
2
3
4
https://www.tonymacx86.com/threads/macos-native-cpu-igpu-power-management.222982/
https://www.tonymacx86.com/threads/mavericks-native-cpu-igpu-power-management.128926/
https://www.tonymacx86.com/threads/ml-native-ivy-bridge-cpu-and-gpu-power-management.86807/
http://bbs.pcbeta.com/viewthread.php?tid=632561&fromuid=512654

旧版系统

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
https://wiki.osx86project.org/wiki/index.php/Install_On_A_Partition_Simple_And_Accurate
https://emaculation.com/doku.php/sheepshaver_mac_os_x_setup
https://emaculation.com/doku.php/sheepshaver_setup
https://www.emaculation.com/doku.php/ppc-osx-on-qemu-for-osx
https://www.emaculation.com/doku.php/ppc-osx-on-qemu-for-windows
https://www.emaculation.com/forum/viewtopic.php?t=5275
https://emaculation.com/doku.php/basilisk_ii_setup
https://emaculation.com/doku.php/basiliskii_osx_setup
https://emaculation.com/doku.php/mini_vmac_setup
https://www.gryphel.com/c/minivmac/
https://www.emaculation.com/doku.php/basilisk_ii
https://www.emaculation.com/doku.php/sheepshaver
http://macintoshgarden.org/installing-software-your-emulator









Mac OSX Snow Leopard 10.6.6 Intel AMD Vmware Image
https://thepiratebay.org/description.php?id=6120172

SnowLeopardAMD
https://drive.google.com/file/d/18D9r0f40IGxo8f2llV1Nkl3DQux0sw9C/view
直接烧录到U盘即可
对于Intel,安装条走完即可
对于AMD,安装条走完后再进去一次安装程序,打开终端并输入以下命令
cd /Volumes/SnowLeopardAMD/PostInstall
sh post.sh



参考:
https://web.archive.org/web/20201129192905/https://amd-osx.com/forum/viewtopic.php?t=4482#p39746

其它

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
https://wiki.osx86project.org/wiki/index.php/Hardware_.kext_Patching_List
https://wiki.osx86project.org/wiki/index.php/Leopard_on_MBR_DualBoot
https://www.insanelymac.com/forum/topic/286092-guide-1st-generation-intel-hd-graphics-qeci/
https://www.olarila.com/topic/5693-guide-ssdt-with-pikes-pm-script-and-use-with-cpufriend/
https://applelife.ru/threads/fakesmc-virtualsmc-lan-sound-graphics-gde-vzjat-keksty.2942933/
https://osy.gitbook.io/hac-mini-guide/details/hades-canyon-nuc
http://www.contrib.andrew.cmu.edu/~somlo/OSXKVM/OLD/index-20131109.html#sec_1
https://github.com/dortania/clover-laptop-guide/blob/master/extras/dual-booting-with-bluetooth-devices.md
https://www.tonymacx86.com/threads/skylake-hwp-enable.214915/
https://blog.neroxps.cn/2017/03/07/BCM94352-5GHz-CN/
https://www.tonymacx86.com/threads/guide-usb-power-property-injection-for-sierra-and-later.222266/

// HD2000显存
https://www.insanelymac.com/forum/topic/298027-guide-aio-guides-for-hackintosh/page/17/?tab=comments#comment-2102367

// GPT Fdisk
https://www.insanelymac.com/forum/topic/298027-guide-aio-guides-for-hackintosh/page/15/?tab=comments#comment-2098111

https://forums.macrumors.com/threads/mp5-1-what-you-have-to-do-to-upgrade-to-mojave-bootrom-upgrade-instructions-thread.2142418/

引导器

在macOS中,可通过在终端上输入以下命令获取引导器路径。

1
nvram 4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102:boot-path

可通过在终端上输入以下命令获取OEM信息。

1
2
3
nvram 4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102:oem-product # SMBIOS Type1 ProductName
nvram 4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102:oem-vendor # SMBIOS Type2 Manufacturer
nvram 4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102:oem-board # SMBIOS Type2 ProductName

基本概念

更名补丁

一般不建议使用过多的更名补丁,尽可能只添加和Method名称有关的重命名,而且要通过SSDT确保在非Mac下要调用并返回原始函数,即原始DSDT行为不会被改变。所需要的SSDT一般在OC-little包中均可找到。

更名补丁 作用 替代方法
change EHC1/EHC2 to EH01/EH02 避免与内置USB注入器冲突 六代(Skylake)及以上的机器已经没有EHC控制器了,建议用SSDT-EHCx_OFF关闭EHC控制器、并把重命名删除,六代以下机器保留该重命名
change XHC1/XHCI to XHC 避免与内置USB注入器冲突 进行USB定制
change SAT0/SAT1 to SATA 实现潜在的SATA兼容性 实质上完全没用
change _OSI to XOSI 配合SSDT-XOSI.dsl启用系统操作补丁 除非某些硬件设备只能在Windows下工作(I2C触摸板只能在Windows下使用,或ThinkPad对 FreeBSD的特殊优化),否则完全没有必要使用,而且大部分情况下直接定制SSDT也可以解除某些硬件的操作系统限制
change OSID to XSID 配合SSDT-XOSI.dsl启用系统操作补丁 除非某些硬件设备只能在Windows下工作(I2C触摸板只能在Windows下使用,或ThinkPad对 FreeBSD的特殊优化),否则完全没有必要使用,而且大部分情况下直接定制SSDT也可以解除某些硬件的操作系统限制
change APSS to APXX 可能导致AppleIntelCPUPowerManagement出现紧急情况,如果ACPI中不存在APSS,则无需启用
change _DSM to XDSM 对于VoodooI2C可能是必需的 遍历SSDT补丁,若没有依赖_DSM,则应该删除(这个重命名涉及范围太大、太过于危险)
change LPC to LPCB 为macOS修补低引脚数总线
change _REG to XREG in EC0 对于电池状态可能是必需的
ALS: change Method(RALS,0,S) XALS 对于环境光传感器可能是必需的
Fix 300-series RTC Bug(Find A00A935354415301, Replace A00A910AFF0BFFFF) 修复300系主板的RTC问题
change HECI/HEC1/MEI to IMEI WhateverGreen能够处理这个问题
change IDER to MEID WhateverGreen能够处理这个问题
change GFX0 to IGPU WhateverGreen能够处理这个问题
change PEG0/PEGP to GFX0 WhateverGreen能够处理这个问题
change SL01 to PEGP WhateverGreen能够处理这个问题
change B0D3 to HDAU WhateverGreen能够处理这个问题
change EC0/H_EC/ECDV/PGEC to EC 对于台式机可使用仿冒EC补丁(随意重命名EC控制器可能会对硬件造成伤害)
change HDAS/CAVS/AZAL to HDEF AppleALC能够处理这个问题
change STAS to Noop 同时启用两个时钟设备(其中Mac下仅有RTC起作用),无法在BIOS中禁用AWAC时使用(Mac不支持新的时钟设备AWAC,因此需要使用传统的 RTC,在DSDT中有一个STAS变量使AWAC和RTC互锁,避免两个时钟设备同时启用,注意若该重命名在Windows下生效,则Windows下将会暴露两个时间设备,这对系统有害且违反ACPI规范) 用SSDT-AWAC替代
change PXSX to ANS1/ANS2 修复NVMe SSD的电源管理 用NVMeFix.kext
change PXSX to ARPT 修复Wifi 用AirportBrcmFixup
change LPC0 to LPCB 添加SMBUS支持 SBUS的SSDT注入补丁和MCHC设备补丁SSDT-SBUS-MCHC
change PC00 to PCIO 实质上完全没用
change FPU to MATH 实质上完全没用
change TMR to TIMR 实质上完全没用
change GBE1 to ETH0 实质上完全没用
change PIC to IPIC 实质上完全没用

驱动

内存管理驱动

固件会将内存分成小块,分配给计算机中的各种设备以及操作系统内核。Windows可以很好的适应这种机制,并会主动将NT内核映射到内存中。而Mac不仅需要更大的内存区块,非Mac设备的内置硬件设备数量也比Mac设备要更多,所以黑苹果需要在EFI中添加专门的驱动为Mac内核预留内存。若Mac无法获取正确的内存空间,将会造成内核无法加载。

一般而言,Mac将采用KASLR技术进行内存分配,即内核地址空间布局随机化,以防止攻击者获取重要对象在内存中的位置。但在内存太小或设备太多时,可能会因为内核所得到的内存空间大小而导致启动失败。此时需要让内核在内存固定区域。需要指出的是,KASLR找到需要操作的内存区域大约需要31ms,手动设置内存区域可节约该时间。

错误消息一般如下。若启动Mac时出现,则需要关闭CFG锁,更新引导和Whatevergreen,并修复内存分配。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 错误一
ERROR!!! Load prelinked kernel with status 0x8000000000000009

# 错误二
Couldn't allocate runtime area

# 错误三
+++++++++++++++++++++++++++++++

# 错误四
panic(cpu 6 caller 0xffffff801fc057ba): a freed zone element has been modified in zone kalloc.4096: expected 0x3f00116dbe8a46f6 but found 0x3f00116d00000000

# 错误五
Only 244/256 slide values are usable!

一般而言,采用固定内存分配时,内核被分配到0x100000+X*0x200000,其中X通过启动参数slide=X传递,称为slide值。slide=0代表隐式关闭,在安全模式下将无法启动系统。slide=0x1-0x7F代表内核被分配到0x100000+0x200000至0x100000+0xFE00000。对于Sandy Bridge或Ivy Bridge架构,slide=0x80-0xFF代表内核被分配到0x100000+0x20200000至0x100000+0x30000000,对于其它架构则为0x100000+0x10000000至0x100000+0x1FE00000。

各内存管理驱动如下,按照发行顺序从早到晚排序。

名称 对于Clover 对于OpenCore 备注
OsxLowMemFixDrv 精简版的OsxAptioFixDrv,用于修复UEFI固件上的低位内存问题,两个不能同时使用(针对Insyde H2O UEFI的笔记本,一般不使用) 不兼容(FwRuntimeServices和OpenCore) 自Clover r608版本后不再维护
OsxAptioFixDrv/OsxAptioFix2Drv 修复AMIAptioEFI内存映射(一般只用OsxAptioFixDrv) 不兼容(FwRuntimeServices和OpenCore) Clover r4368版本之前内置的内存分配驱动,不支持 NVRAM,其中OsxAptioFix2Drv是OsxAptioFixDrv 的简化的版本,去掉了内置内存分配算法,因此不能用在旧版本的Mac或者老硬件,但可以提供休眠支持
OsxAptioFix3Drv 修复AMIAptioEFI内存映射 不兼容(FwRuntimeServices和OpenCore) Clover r4369版本之后至今内置的内存分配驱动,提供了对NVRAM的支持,现在仍由Clover团队维护
OSXAptioFix2Drv-Free2000 内存驱动,用于修复UEFI固件上的内存问题,只适用于一些特定的硬件、特定的设备、特定的内存大小 不兼容(FwRuntimeServices和OpenCore) 作者已经声明会损坏硬件
https://www.reddit.com/r/hackintosh/comments/cfjyla/i_unleashed_a_plague_upon_you_guys_and_i_am_sorry/
AptioMemoryFix NVRAM和内存驱动,用于修复UEFI固件上的内存问题(6代及以上电脑推荐使用) 不兼容(已集成为FwRuntimeServices) Acidanthera团队开发,相比OsxAptioFix3Drv更好,AptioMemoryFix、AptioInputFix、CleanNvram合并发布为AptioFixPkg
OpenRuntime 通过OcQuirks使用,参见本章Clover部分 OpenCore最新的内存管理系统,原名FwRuntimeServices,用于实现OC_FIRMWARE_RUNTIME协议,允许隔离操作系统对所选变量的访问(如RequestBootVarRouting/ProtectSecureBoot),增强了OpenCore、Lilu以及Lilu插件的安全性(如VirtualSMC实现了AuthRestart支持),保护所有变量避免被不信任的操作系统写入(如DisableVariableWrite),UEFI Runtime Services内存保护管理以避开只读映射的问题(如EnableWriteUnprotector)。使用该驱动以替代以上所有驱动

对于OpenCore,使用最新的OpenRuntime即可。对于Clover,引导较新系统时应当使用OcQuirks以使用OpenRuntime。

在Clover上引导旧版系统时,可使用旧版驱动,其中应当按照AptioMemoryFix->OsxAptioFix3Drv->OsxAptioFix2Drv->OsxAptioFixDrv的顺序修复,每次只用一个,各驱动不能共用。

注意应当尽量避免使用slide启动参数。前三个驱动尝试不使用启动参数slide=#,若不行则使用该参数,而最后一个驱动必须使用启动参数slide=0

其中#的值需要通过计算。记录启动时出现的错误信息,例子如下。取pages前面的数字,此处为0x116F6。

1
Error allocating 0x0x116F6 pages at 0x00000000093eb000 alloc type 2

制作UEFI Shell并进入,输入以下命令。

【进阶】对于OpenCore

对于OpenCore,UEFI Shell可为OpenShell。注意需要在配置文件的Booter中修改以下内容。

1
2
3
4
5
6
AvoidRuntimeDefrag: YES
DevirtualiseMmio: YES
EnableSafeModeSlide: YES
ProtectUefiServices: NO
ProvideCustomSlide: YES
RebuildAppleMemoryMap: YES
1
2
3
4
memmap -b

# 也可通过以下命令将内容写入文件
memmap > memmap.txt

在第十行左右找到符合要求的数据,其中Type为Available,Pages的值不小于刚才记录的值即0x116F6,Start的值大于10000000。使用Start/200000+1计算出slide值,忽略小数点后数字,计算结果为十六进制,转换为十进制即可。注意,BIOS更新后可能需要重新计算该值。

【进阶】其它算法

取Start一列的最大值,设为X。计算(X-0x100000)/0x200000,得到slide值,设为Y。

若0x100000+(Y0x200000)=X,则slide值即为X。若0x100000+(Y0x200000)<X,则slide值为X+1。

若slide值大于256,则取Start一列的第二大值,重复以上操作,直至slide值小于256。若slide值类似-0.379150390625,则取为0。

注意,有时内存速度过快会出现系统无法进入的问题,此时可以通过BIOS调低内存频率。如i7 8700k上可以正常运行32GB 3000MHz,而出于稳定性方面的考虑,i7 6700k可能必须降至2666MHz。

【进阶】OpenCore的DevirtualiseMmio

DevirtualiseMmio采用MMIO区域并删除Runtime属性,扩大slide的范围,与ProvideCustomSlide搭配使用可保证slide的安全属性。

对于Threadripper TRX40 19H等问题严重的系统,需要指定不需要进行操作的区域,这些区域将在MmioWhitelist中被定义。以打开了DevirtualiseMmio的OpenCore调试版本引导系统,可在日志中看到如下类似内容。

1
2
3
4
5
6
7
8
21:495 00:009 OCABC: MMIO devirt start
21:499 00:003 OCABC: MMIO devirt 0x60000000 (0x10000 pages, 0x8000000000000001) skip 0
21:503 00:003 OCABC: MMIO devirt 0xFE000000 (0x11 pages, 0x8000000000000001) skip 0
21:506 00:003 OCABC: MMIO devirt 0xFEC00000 (0x1 pages, 0x8000000000000001) skip 0
21:510 00:003 OCABC: MMIO devirt 0xFED00000 (0x1 pages, 0x8000000000000001) skip 0
21:513 00:003 OCABC: MMIO devirt 0xFEE00000 (0x1 pages, 0x800000000000100D) skip 0
21:516 00:003 OCABC: MMIO devirt 0xFF000000 (0x1000 pages, 0x800000000000100D) skip 0
21:520 00:003 OCABC: MMIO devirt end, saved 278608 KB

将十六进制转换为十进制后,在配置文件中的Booter-MmioWhitelist下分别添加转换好的地址即可。

其它驱动

各驱动的作用和适用范围如下。

名称 对于Clover 对于OpenCore
LegacyRegion2Dxe 某些旧的UEFI BIOS需要
NTFS NTFS文件系统驱动程序(一般不使用,此模块与一些主板的UEFI不兼容) 同Clover
AppleEfiSignTool 验证AppleEFI二进制文件的开源工具(一般不使用)
AppleImageLoader 保护AppleEfiFat二进制驱动程序,将AppleEFI二进制文件安全加载到内存中(一般不使用)
AppleEvent 不兼容(已集成)
AppleImageCodec 为Clover启动FileVault 2解码PNG和BMP 不兼容(已集成)
AppleKeyMapAggregator 不兼容(已集成)
AppleUISupport 实现了FileVault支持,同时包含一些主板的哈希服务修复和unicode排序规则,替换了AppleKeyMapAggregator、AppleEvent、AppleUiTheme、FirmwareVolume、AppleImageCodec(一般不使用) 不兼容(已集成)
SMCHelper UEFI层面的SMC驱动,VirtualSmc.efi的替代品,与FakeSMC配合(不能与VirtualSMC.kext配合使用) 不兼容
HashServiceFix 修复UEFI BIOS中的哈希支持 不兼容(已集成且提供了这个Quirk)
FirmwareVolume 为启动FileVault 2创建FirmwareVolume光标 不兼容(已集成)
EnhancedFatDxe 无法直接从引导器调用,如果在引导过程中写入EFI分区出现问题,则需要将此驱动用UEFITool刷入固件中(除非EFI分区格式为FAT16且在开机过程中可能会往EFI分区写入文件时考虑使用) 同Clover
EnglishDxe 在UEFI Shell中支持Unicode Collation协议 不兼容(已集成且提供了这个Quirk)
CsmVideoDxe 用于Clover GUI的显卡驱动,允许使用更多分辨率,基于UEFI BIOS中的CSM兼容模块,并将启用所需的CSM(6代以前核显开CSM使用) 不兼容
AudioDxe 启动时播放声音的HDA驱动 在UEFI环境播放音频的驱动
AppleUITheme 为Clover支持FileVault 2启动UI主题的驱动 不兼容(已集成)
AppleKeyFeeder 为Clover支持FileVault 2内PS/2键盘输入的驱动 不兼容(已集成)
AppleKeyAggregator 为Clover支持FileVault 2启动UI的驱动 不兼容(已集成)
APFS/ApfsDriverLoader 从此容器加载已嵌入APFS容器中的apfs.efi驱动程序 不兼容(OpenCore 0.5.8始已集成)
Ps2KeyboardDxe 为三代以前机型准备的PS/2键盘驱动 不提供对AppleKeyMapAggregator的支持,因此需要启用KeySupport这个Quirk
PS2MouseDxe/PS2MouseAbsolute/UsbMouseDxe 使鼠标/触摸板在CloverGUI界面工作(已存在于所有UEFI固件,一般不使用,三代以前机型才考虑使用) 同Clover
Usb*/UHCI/EHCI/XHCI 解决依赖性关系不满足导致的内建驱动工作不正常的情况的一组驱动(一般不使用)
OsxFatBinaryDrv 允许macOS 10.9以下版本加载FAT模块(如boot.efi) 不兼容(FwRuntimeServices和OpenCore)
DataHubDxe macOS要求强制启动的协议(一般选用,不会引起冲突) 不兼容(已集成且提供了这个Quirk)
PartitionDxe/PartitionDxeLegacy 支持非常规分区图的驱动,用于加载旧版Mac(早于10.9)分区DMG映像文件的驱动(混合GPT/MBR或Apple分区图等,四代以前机型用PartitionDxeLegacy) 兼容性未知
EmuVariableUefi 对某些UEFI启动无法调用NVRAM的机器提供的NVRAM模拟(部分Skylake架构的机器需要,如Phoenix UEFI、DELL Vostro、ThinkPad,仅在必要时使用) 不兼容(替代品为VariableRuntimeDxe)
FSInject 加载第三方kexts 不兼容(已集成更先进的方法)
VBoxExt4 EXT4文件系统驱动,用于启动LinuxEFI系统 同Clover
VBoxExt3 EXT2/3文件系统驱动,用于启动LinuxEFI系统
AptioInputFix/AppleGenericInput 解决了某些固件上的鼠标输入问题(AppleUsbKbDxe的等效驱动),添加了对AppleKeyMapAggregator协议支持的用户输入驱动,为FileVault 2 GUI输入支持提供AMIAPTIO专有鼠标和键盘协议(通常修改的UsbKbDxe更好,一般不使用) 不兼容(已集成)
AppleDxeImageVerificationLib 为EFI二进制文件提供Apple的加密签名算法(一般不使用)
ExFatDxe/ExFatDxeLegacy 除非EFI/某个系统分区是ExFAT格式,否则不需要保留(在四代以前机型上由于缺少RDRAND指令支持,应使用ExFatDxeLegacy) 同Clover
HfsPlus/HfsPlusLegacy/VBoxHfs/OpenHfsPlus HFS+文件系统驱动程序,留其一即可(一般推荐用HfsPlus,四代以前机型由于缺少RDRAND指令支持应用HfsPlusLegacy,VBoxHfs/OpenHfsPlus性能较差) 同Clover
OpenPartitionDxe 启动10.7至10.9的恢复分区时必须,OpenDuet已内置该驱动
UsbKbDxe 当内置驱动程序不适用于固件时,用于Apple Hotkeys和FileVault支持,已被取代为OpenUsbKbDxe
AppleUsbKbDxe/OpenUsbKbDxe 给使用模拟UEFI的老主板在OpenCore界面正常输入用,添加了对AppleKeyMapAggregator协议支持的USB键盘驱动,是AppleGenericInput的等效驱动(仅在运行DuetPkg的旧系统上使用,勿在Ivy Bridge即三代酷睿及以上的主板使用,否则将造成硬件损害,现代机型应使用OpenCore中KeySupport这一Quirk)
NvmExpressDxe 四代(Haswell)以前机型使用的NVMe硬盘加载驱动,支持SSD连接到NVM Express总线,若安装了NVMe SSD则需要使用 同Clover
XhciDxe HCI USB控制器支持驱动程序,为二代(Sandy Bridge)以前的主板提供USB3支持(主要是Intel控制器) 同Clover
HiiDatabase 为四代以前的设备提供UEFI界面字体渲染支持,UEFI Shell中文字渲染异常时使用,Ivy Bridge(3代酷睿)或更老代主板上适用 同Clover
VirtualSmc 已被替代为AppleSmcIO这一Quirk
CrScreenshotDxe 增加OpenCore UI内截屏功能,快捷键为左Ctrl+左Alt+F12
OpenCanopy 加载第三方主题,实现图形引导界面
FwRuntimeServices 不兼容 通过支持只读/只写NVRAM变量提高OpenCore和Lilu的安全性,已被OpenRuntime替代
MemoryAllocation 为Z390/X99等主板预留第一组512MB内存,帮助引导工具注入内核以及内核缓存至第一组512MB内存,需要配合FwRuntimeServices和引导标识符slide=1(若要使用hibernation功能请勿使用)
UsbMouseDxe USB鼠标驱动程序(仅在运行DuetPkg的旧系统上使用)
VBoxExt2 EXT2文件系统驱动,用于启动LinuxEFI系统 同Clover
VBoxIso9600 ISO9600文件系统驱动 同Clover
GrubUDF 加载UDF文件系统 同Clover
GrubNTFS 加载NTFS文件系统 同Clover
GrubISO9660 加载ISO9660文件系统 同Clover
GrubEXFAT 加载NTFS文件系统 同Clover
TbtForcePower 启用ThunderBolt热插拔
VariableRuntimeDxe EDK II 的NVRAM驱动,OpenCore中用于模拟NVRAM,需要配合FwRuntimeServices(.efi)和DisableVariableWrite(Quirk)
BootChimeDxe 不兼容(已集成)

启动参数

普通参数

很多参数可以通过在内核或驱动程序代码中寻找PE_parse_boot_argn函数找到。

Core Dump指当程序运行的过程中异常终止或崩溃,操作系统将程序当时的内存状态记录下来,保存在文件中。

参数 对于Clover 对于OpenCore
内核与Lilu
-v 啰嗦模式(跑代码模式,用于排错)
-x 安全模式(忽略所有非必要的kext文件和引导设置,特别适用于黑苹果)
-s 单用户模式(命令行模式)
f 旧版安全模式
-D mach_init在正常模式下启动,启动的服务器不进行核心转储,不推荐使用
-d mach_init在调试模式下启动,并带有大量日志记录。核心转储用于所有启动的崩溃服务器。在10.4或更高版本上,此参数使启动的程序在初始化期间尽早进行守护进程
-f 启动时强制重建内核扩展(kext)缓存(只有从10.6到10.9的64位内核支持无缓存启动) 将Kernel-Scheme-KernelCache设置为Cacheless
-b 内核在其重新启动标志变量中设置RB_NOBOOTRC,以不执行/etc/rc.boot,不推荐使用
-l 日志中输出内存泄漏相关记录(osfmk/kern/startup.c)
-r mach_init将其自身注册在其先前运行的副本中,不推荐使用
-legacy 启动到32位内核
-liluoff 跳过Lilu.kext
-no-zp 区域推迟
-no_compat_check 关闭兼容性检查(适用于10.7以上的版本)
MountEFI=yes/diskX 挂载所有/某个EFI分区
config=A 用/Library/Preferences/SystemConfiguration/A.plist代替com.apple.Boot.plist
LogLineCount=0 设置日志文件最大行数(0为无限制)
LogLocation=PATH 日志文件保存路径
LogEveryBoot=yes/no 每次启动保存日志文件
dart=0 关闭64位硬件上的系统PCI地址映射器(DART),修复因开启VT-d导致系统启动错误,同时删除DMAR表,在10.15上需要禁用SIP(DART在拥有2GB以上物理内存的机器上是必需的,但在所有机器上无论内存大小,默认情况下都会启用DART) 不推荐使用,更改为Kernel-Quirks-DisableIoMapper
darkwake=no/0/1/2/3/4/8/10 禁止系统休眠/设定休眠模式为固定数值
kext-dev-mode=1 启用第三方驱动(不要在El Capitan及以上系统使用) 不需要(OpenCore使用了内核注入方法)
rootless=0 rootless模式(不要在El Capitan及以上系统使用)
arch=i386 以32位内核模式启动
arch=x86_64 以64位内核模式启动
-legacy 强制启动到32位用户区
-force64 强制启动到64位用户区(AMD CPU通常需要32位内核与64位用户区)
npci=0x2000 在旧设备上禁用 kIOPCIConfiguratorPFM64,解决独立显卡PCIconfiguration begin卡住不动的问题
npci=0x3000 解决独立显卡PCIconfiguration begin卡住不动
Kernel=mach_kernel 从系统内核启动
rd=disk0s1 强制指定启动分区
rd=*/PCI0@0/CHN0@0/@0:1 啟動PCI RAID卡,格式rd=*<IODeviceTree path>
rp 根目录位置
trace Kernel Trace缓冲区大小
initmcl 初始化mbuf集群
socket_debug 套接字调试
net_affinity 净亲和度
rte_debug=flags 路由调试
msgbuf 消息缓冲区
mseg 最大细分
mcache_flags 内存缓存标志
-rwroot_hack 挂载root读/写
mbuf_debug=1 MBuf调试
boot-uuid 引导UUID
config=foobar 加载/Library/Preferences/SystemConfiguration/foobar.plist以代替com.apple.Boot.plist
iog=0x0 强制Mac在笔记本上不使用Clamshell模式,当外接了显示器和键盘,合盖后笔记本不会睡眠,但内置显示器将会关闭
serverperfmode=1 在macOS Server中开启性能模式
_panicd_ip=11.4.5.14 设置一个Kernel Panic收集服务器的IP地址,日志将会通过UDP协议发送给这个IP的1069端口
panicd_port 修改日志发送端口(默认为1069)
-zc 自由区元素检查
keepsyms=1 保留KLD/Address-Symbol翻译,配合debug=0x100使用,使操作系统在内核崩溃时打印符号
artsize 指定要用于地址解析表(ART)的页数
dtrace_dof_mode=0/1/2/3 设置DTrace DOF模式
DisableFBT=1 关闭FBT
IgnoreFBTBlacklist=1 忽略FBT黑名单
BootCacheOverride=1 BootCache驱动程序被加载,但从网络启动时不会运行,设置BootCacheOverride=1可以覆盖此行为
diag 启用内核的内置诊断接口及其特定功能
serial 串行诊断控制台
io=# I/O Kit驱动调试位,设置为0x00200000(即kIOLogSynchronous)时会使IOLog()函数同步执行
novmx=1 禁用AltiVec
pcata=0 禁用板载PC ATA驱动器(加载轮询模式驱动程序可能可以开启)
_router_ip=11.4.5.14 使用跨局域网内核调试时指定网关IP
serial=1 启用串口调试
serialbaud 指定串行端口的波特率。kprintf()函数的初始化例程检查此参数
smbios=1 在SMBIOS驱动中启用详细的日志信息,仅限于32位机器
vmdx/pmdx 内核启动时在内存中创建一个分区,参数格式为base.size,其中base是对齐的内存地址,size是内存页面大小的倍数。vmdx指虚拟内存、pmdx指物理内存,创建成功后将会被分别挂载在dev/mdx和dev/emdx下
srv=1 在X Servers或macOS Server系统中使用这一参数时会修改内核的电源和网络参数,提升作为服务器的性能
ncl 集群数
nbuf BSD的缓冲区数
kmem=1 内核内存访问
nvram_paniclog=1 将Kernel Panic日志写入NVRAM
pmsafe_debug=1 将CPU置于安全电源模式
preempt 设置默认抢占率
unsafe 最大unsafe quanta
poll 最大poll quanta
yield Schedule poll yield shift
kextlog=# kext加载调试位
lapic_dont_panic=1 禁用AP内核的LAPIC Panic伪中断行为
smcdebug=# AppleSMC调试位
ctrc 限制对特定处理器的跟踪
kdp_match_mac 指定要由远程内核调试协议使用的MAC地址
kdp_match_name 指定远程内核调试协议将使用的BSD网络接口名称
mcklog 指定机器检查标志
tb 指定非默认的跟踪缓冲区大小。内核将事件跟踪到循环内存缓冲区。默认情况下,内核在调试模式下使用32页,在非调试模式下使用8页。取值范围为1-256
vmmforce 将虚拟机监视器VMM特性指定为特性位的逻辑或,对所有虚拟机实例都是强制的
wcte=1 在PowerPC不可缓存单元(NCU)中启用写入合并计时器(或存储收集计时器),默认禁用
debug=参数
将所需选项数字求和后作为参数
debug=0x1 DB_HALT,在引导时暂停,直到外部调试串口已经连接并被识别
debug=0x2 DB_PRT,将内核的printf()函数输出的信息打印到 Console.app
debug=0x4 DB_NMI,启用内核调试功能,包括生成非屏蔽中断(NMI),在Power Mac上只需简单地按下电源键就能产生NMI。在笔记本电脑上在按下电源键时必须按住命令键,如果按住电源键超过五秒钟,系统将关闭电源,在系统偏好设置中更改启动盘时,DB_NMI位将被清除
debug=0x8 DB_KPRT,将kprintf()产生的内核调试输出发送到远程输出设备,通常是一个调试串口(如果有的话),注意kprintf()的输出是同步的
debug=0x10 DB_KDB,使用KDB代替GDB作为默认的内核调试器。与GDB不同,KDB必须被显式编译到内核中,此外基于KDB的调试需要原生的串口硬件(而不是基于USB的串口适配器)
debug=0x20 SB_SLOG,启用将杂项诊断记录到系统日志中,设置了这个位后load_shared_file()内核函数会记录额外的信息
debug=0x40 DB_ARP,允许跨局域网调试内核
debug=0x80 DB_KDP_BP_DIS,已经被弃用,用于支持旧版的GDB
debug=0x100 DB_LOG_PI_SCRN,禁用五国而把Kernel Panic的相关数据直接打印在屏幕上,还可用于Core Dump
debug=0x200 DB_KDP_GETC_ENA,在 Kernel Panic 后启用快捷键(c继续,r重启,k进入KDB)
debug=0x400 DB_KERN_DUMP_ON_PANIC,当Kernel Panic时触发一次Core Dump
debug=0x800 DB_KERN_DUMP_ON_NMI,当产生NMI时触发一次Core Dump
debug=0x1000 DB_DBG_POST_CORE,等待调试器连接(如果使用GDB)或在NMI触发的内核转储后等待调试器(如果使用 KDB),如果没有设置DB_DBG_POST_CORE,内核在Core Dump后继续运行
debug=0x2000 只生成并发送Kernel Panic Log,不生成完整的Core Dump
内存
maxmem=# 将可寻址内存限制为#MB
slide=# 手动设置KASLR slide值为#
fill 指定一个整数值,启动时用这个整数填充所有内存
?memory= 显示系统内存信息
CPU,ACPI与电源
-xcpm 在Ivy Bridge系统里强制xcpm使用系统内核以实现CPU原生电源管理
cpus=# 启用#个CPU核心(cpus=1为使用单核模式)
himemory_mode 用于调试超过4GB系统的大型物理内存配置(0-所有页面可用,1-禁用高内存,2-首选高内存)
-nossse3bit 启用AMD CPU的SSSE3仿真
acpi 启用AppleACPIPlatform调试
acpi=off 关闭电源管理
acpi=ht 以ACPI boot table启动
acpi=force 强制启动ACPI
acpi=strict 限制ACPI
acpi=noirq 不设定ACPI使用的IRQ
acpi_sci={edge,level,high,low} 设定ACPI SCI中断
idlehalt=1 无视所有空闲进程,使CPU进入低功率模式,系统闲置一段时间会停止电源(0为关闭,1为启动)
panic_io_port=0x0(,0x1,…,0xffff) 从该I/O端口读取panic
cpuidle=1 CPU省电模式,CPU闲置一段时间后会停止电源(0为关闭,1为启动)
platform=X86PC 强制禁用ACPI电源管理
platform=ACPI 强制启用ACPI电源管理
fn=1 关闭强制休眠
fn=2 开启强制休眠
_fpu 禁用x86上的FPU功能,_fpu=387将禁用FXSR/SSE/SSE2,_fpu=se将禁用SSE2
immediate_NMI=1 强制立即使用NMI调试器
lcks 锁定统计信息
novmx=1 在Rosetta禁用altivec仿真
max_valid_dma_addr 最大有效DMA地址
maxbouncepool 最大反弹池大小
maxloreserve 最大低储备
npvhash 物理到虚拟的哈希映射
wpkernel=1 内核写保护
-no_shared_cr3 禁用64位用户的共享内核地址空间
-pmap_trace 为pmap启用内核跟踪
hfile 休眠文件的名称(这一参数也会修改sysctl中的kern.hibernatefile变量)
pmsx=1 在10.4.3上启用实验性电源管理(PMS)
busratio=# 规定CPU总线比率为20
acpi_layer=0xFFFFFFFF
acpi_level=0xFFFF5F 代表ACPI_ALL_COMPONENTS
acpi_sleep ACPI睡眠
nvdebug NVDAResman调试
nvrm NVDAResman
ndrv_debug_level NDRV调试级别(NVDAResman)
pstep 功率步调试(ACPI_SMC)
hpet AppleHPET
batman=# AppleSmartBatteryManager调试位
batman-nosmc=1 禁用AppleSmartBatteryManager SMC接口
ioaccel_debug=# IOAccelerator调试掩码
nvram-log=1 启用AppleEFINVRAM日志
显卡与Whatevergreen
forceRenderStandby=0 禁用RC6 Render Standby,避免NVMe内核panic以及KBL/CFL可在低功耗状态下由于显卡导致的系统不稳定
nv_disable=1 禁止加载Nvidia独显驱动
nvda_drv=1 让系统安装Nvidia官方WebDriver显卡驱动(10.12+失效,对于Clover在配置文件勾选System Parameters-NvidiaWeb,对于OpenCore在配置文件填写NVRAM->Add->7C436110-AB2A-4BBB-A880-FE41995C9F82->nvda_drv: <31>)
nvda_drv_vrl=1 Sierra和High Sierra中用于取代nvda_drv=1
romnd​​rv=1 允许使用本机图形驱动程序(ndrv),即使其创建日期早于预定义的最小日期2001年3月1日
-amd_no_dgpu_accel 关闭AMD显卡硬件加速(默认),替代WhateverGreen的-radvesa,用于较新的GPUs
-radvesa 强制GPU进入VESA模式(无GPU加速),有助于进行故障排除,苹果内置标志的版本是-amd_no_dgpu_accel
shiki-id=Mac-7BA5B2D9E42DDD94 使用iMacPro1,1交换boardID
shikigva=1 让iGPU处理硬件解码,在同时使用iGPU与dGPU时需要
shikigva=4 在新于Haswell的架构上支持硬件加速的视频解码
shikigva=40 使用iMac14,2交换boardID,允许Polaris,Vega和Navi GPU处理所有类型的渲染,对于希望使用iGPU、不需要Nvidia GPU的SMBIOS有效
agdpmod=vit9696 禁用board ID检查,完成引导后屏幕变黑时可能需要
agdpmod=pikera 重命名board-id为board-ix以有效地禁用board ID检查
-wegnoegpu 禁用除iGPU以外的所有GPU
-igfxnohdmi 禁用DisplayPort到HDMI音频转换
-cdfon 执行启用HDMI 2.0支持所需的众多补丁
-igfxvesa 强制GPU进入VESA模式(无GPU加速),有助于进行故障排除
igfxonln=1 强制所有显示联机,对于解决Coffee and Comet Lake 10.15.4+中的屏幕唤醒问题很有用
igfxfw=2 支持为iGPU加载Apple的GUC固件,需要第9代芯片组或更高版本(例如Z390)
-nehalem_error_disable 用于MacPro5,1以避免内核panic
panic_on_display_hang=1 显示设备挂起时触发Panic
panic_on_gpu_hang=1 GPU挂起时触发Panic
spin_wait_for_gpu=1 减少GPU高负载情况下的超时时间
“Graphics Mode”=”1024x768x32” 指定分辨率(WidthxHeightxColor Depth,如1024x768x32,或WidthxHeightxDepth@Refresh Rate,如640x480x32@60)
?video= 显示显卡支持的最高分辨率
USB
-uia_exclude_hs 从USB3.0端口中禁用HS端口(将无法在这些端口上使用USB2.0设备,使用USB鼠标/键盘切勿使用)
-uia_exclude_xhc 启用EH0x和相关集线器的USBInjectAll端口注入器,从而覆盖内置集线器端口注入器,但保持对XHC的DSDT控制
-uia_exclude_ssp 禁用SSP端口
-uia_exclude_ss 禁用SS端口
-uia_ignore_rmcf 禁用USBInjectAll的SSDT替代代码
uia_exclude=# 手动设置禁用的端口
-gux_defer_usb2 修复使用GenericUSBXHCI.kext导致的睡眠问题(仅在EHC控制器存在时可用,i7系列适用)
-gux_no_idle 终止英特尔芯片上的一些空闲模式(idle-mode)功能(i7系列适用)
-gux_nosleep 强迫睡眠使用shutdown/reset方法
-gux_nomsi 强迫使用中断(interrupt)而不是msi
声卡与AppleALC
-alcoff 跳过AppleALC.kext
其它硬件
fhrdl1=1 强制硬件恢复数据高速缓存级别1(L1 D-cache)错误,已被废弃,换用mcksoft
mcksoft=1 启用计算机检查软件恢复
novmx=1 禁用AltiVec
bluetoothHostControllerSwitchBehavior=never/always 蓝牙驱动程序是否切换插入的加密狗,要使外部加密狗在重启后仍为默认设置则使用always
仅适用于PPC
mtxspin Mutex spin
vmmforce VMM force
fn=0/1/2 强制小睡
pmsx=1 实验电源管理步进模式
ctrc 将跟踪设置为特定的CPU
tb 非默认跟踪缓冲区大小
wcte 开启组合写计时器
mcklog 清除机器检查标志
mcksoft 机器检查软件恢复
ht_shift=1 非默认哈希表大小
zsize 目标区域大小
colors 设置VM颜色
serialbaud 设置串行波特率
其它
urgency_notification_abstime

Busradio参数

Busratio=xx参数仅适用于无法正确启动的多核Core i系列处理器,在10.5.7及之后不再需要。一般在10.5.6中使用i7 CPU时需要该参数。

xx的值为Core Speed数值除以Bus Speed数值,四舍五入到最接近的整数。

工具

部分工具作用如下。

工具名称 原因/用途
BootKicker 调用Mac内置的引导界面,用于白苹果安装OpenCore,黑苹果无法使用,可直接删除(仅Mac同款显卡才可使用)
ChipTune 测试BeepGen协议,生成不同频率和长度的音频信号
CleanNvram NVRAM清理
FwProtect 解锁和回锁NVRAM保护,让其他工具在从OpenCore启动时能够获得完整的NVRAM访问权限
GopStop 停止显卡GOP,用于测试GraphicOutput协议(排错时使用)
KeyTester 在SimpleText模式下测试键盘输入
MemTest86 内存测试工具
OpenCore Shell 由OpenCore配置的UEFI Shell,与绝大部分固件兼容
PavpProvision 执行EPID配置(需要配置证书数据)
ResetSystem 执行系统重置(以重置类型作为参数,可为ColdReset/Firmware/WarmReset/Shutdown,默认为ColdReset)
RtcRw 读取和写入RTC(CMOS)存储器的使用程序
HdaCodecDump 导出声卡Codec,可用于定制声卡
VerifyMsrE2 用于检查主板上CFG锁的状态

系统启动标志位

即BooterConfig,具体含义如下。

Bit位 含义
0 RebootOnPanic,遇到内核崩溃自动重启
1 HiDPI,在启动过程中使用HiDPI模式显示
2 Black,在启动过程中不显示进度条
3 CSRActiveConfig,将读取当前生效的SIP控制标志位
4 CSRConfigMode,仅用于Recovery/安装环境,将允许对SIP进行配置
5 CSRBoot,仅用于Recovery/安装环境,SIP将完全禁用
6 BlackBg,在启动过程中使用黑色背景
7 LoginUI,在启动过程中使用登陆界面作为背景
8 InstallUI

kext补丁

修复外置硬盘识别为内置硬盘

RXh0ZXJuYWw=指External,SW50ZXJuYWw=指Internal。

1
2
3
Name: AppleAHCIPort
Find: 45787465 726E616C
Replace: 496E7465 726E616C

允许使用MacPro4,1或MacPro5,1的SMBIOS时不带ECC内存引导

1
2
3
Name: AppleTyMCEDriver
Find: 720A004D 61635072 6F342C31 004D6163 50726F35 2C310058
Replace: 720A0000 00000000 00000000 00000000 00000000 00000058

使用VoodooHDA时将系统偏好设置-声音-输出中的设备由Headphones改为Telephones

1
2
3
Name: VoodooHDA
Find: 48656164 70686F6E 657300
Replace: 54656C65 70686F6E 657300

IOAPIC修复

1
2
3
Name: AppleAPIC
Find: C1E8100F B6F0
Replace: BE170000 0090

添加TRIM支持

1
2
3
Name: IOAHCIBlockStorage
Find: 4150504C 45205353 44
Replace: 00000000 00000000 00

Intel HD3000连接器补丁

1
2
3
Name: AppleIntelSNBGraphicsFB
Find: 01020400 10070000 10070000 05030000 02000000 30000000 02050000 00040000 07000000 03040000 00040000 09000000 04060000 00040000 09000000
Replace: 01020300 10070000 10070000 03040000 00040000 09000000 02050000 00040000 07000000 04060000 00040000 09000000 00000000 00000000 00000000

kernel补丁

去除Lilu内核崩溃时的kexts输出

根据MatchOS的版本号选用更名补丁。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Comment: Disable panic kext logging on 10.15.4 Release kernel
Find: 008a0284c074
Replace: 008a0284c0eb
MatchOS: 10.14.4,10.14.5

Comment: Disable panic kext logging on 10.13 Release kernel
Find: 8A0284C07444
Replace: 8A0284C0EB44
MatchOS: 10.13

Comment: Disable panic kext logging on 10.14-10.14.3 Release kernel
Find: 8A0284C07442
Replace: 8A0284C0EB42
MatchOS: 10.14-10.14.3

Comment: Disable panic kext logging on 10.14.4 Release kernel
Find: 008A0284C074
Replace: 008A0284C0EB
MatchOS: 10.14.4

NVRAM

即易失性UEFI变量。macOS广泛使用NVRAM变量使操作系统、BootLoader、固件之间互通。

macOS使用的NVRAM如下。

GUID 宏定义 含义 说明
常用
4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14 APPLE_VENDOR_VARIABLE_GUID AppleVendor
7C436110-AB2A-4BBB-A880-FE41995C9F82 APPLE_BOOT_VARIABLE_GUID AppleBoot 默认GUID,通过nvram -p被调用
8BE4DF61-93CA-11D2-AA0D-00E098032B8C EFI_GLOBAL_VARIABLE_GUID EfiGlobal 非Apple GUID,由ACPI规范所制定
4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102 OC_VENDOR_VARIABLE_GUID
其它
9EBA2D25-BBE3-4AC2-A2C6-C87F44A1278C APPLE_PASSWORD_UI_EFI_FILE_NAME_GUID ApplePasswordUi
8D63D4FE-BD3C-4AAD-881D-86FD974BC1DF APPLE_CORE_STORAGE_VARIABLE_GUID AppleCoreStorage
F68DA75E-1B55-4E70-B41B-A7B7A5B758EA APPLE_TRB_SECURE_VARIABLE_GUID AppleTrbSecureVariable
5D62B28D-6ED2-40B4-A560-6CD79B93D366 APPLE_TRB_STAGING_COMMAND_GUID AppleTrbSecureCommand
FA4CE28D-B62F-4C99-9CC3-6815686E30F9 APPLE_EFI_PERSONALIZATION_VARIABLE_GUID AppleEfiPersonalization
36C28AB5-6566-4C50-9EBD-CBB920F83843 APPLE_EFI_NETWORK_VARIABLE_GUID AppleEfiNetwork
AF9FFD67-EC10-488A-9DFC-6CBF5EE22C2E APPLE_ACPI_VARIABLE_GUID AppleAcpi
FA4CE28D-B62F-4C99-9CC3-6815686E30F9 FA4CE28D
2660DD78-81D2-419D-8138-7B1F363F79A6 Custom GUID for Lilu variable storage LiluNormal
E09B9297-7928-4440-9AAB-D1F8536FBF0A Custom GUID for Lilu read-only variable storage (cannot be written from OS), implemented by AptioMemoryFix LiluReadOnly
F0B9AF8F-2222-4840-8A37-ECF7CC8C12E1 Custom GUID for Lilu write-only variable storage (cannot be read from OS), implemented by AptioMemoryFix LiluWriteOnly

变量

变量 作用
必需变量
4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14:FirmwareFeatures 32位FirmwareFeatures。存在于所有Mac上,用来避免额外解析SMBIOS表
4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14:FirmwareFeaturesMask 32位FirmwareFeaturesMask。存在于所有Mac上,用来避免额外解析SMBIOS表
4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14:MLB 存在于较新的Mac上(至少2013年以后),用来避免额外解析SMBIOS表,尤其是在boot.efi中
4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14:ROM 主要的网络适配器的MAC地址或替换值。存在于较新的Mac(至少2013年以后)上,用来避免访问特殊内存区域,尤其是在boot.efi中
建议变量
4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14:ExtendedFirmwareFeatures 结合FirmwareFeatures和ExtendedFirmwareFeatures。存在于较新的Mac上,用来避免额外解析SMBIOS表
4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14:ExtendedFirmwareFeaturesMask 结合FirmwareFeaturesMask和ExtendedFirmwareFeaturesMask。存在于较新的Mac上,用来避免额外解析SMBIOS表
4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14:HW_BID 硬件BoardProduct(如Mac-35C1E88140C3E6CF)。在真正的Mac上不存在,但可用于避免额外解析SMBIOS表,尤其是在boot.efi中
4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14:HW_MLB 硬件BoardSerialNumber。覆盖MLB,存在于较新的Mac上(至少2013年以后)
4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14:HW_ROM 硬件ROM。覆盖ROM,存在于较新的Mac上(至少2013年以后)
7C436110-AB2A-4BBB-A880-FE41995C9F82:security-mode 定义FireWire安全模式的ASCII字符串。这一变量旧版本才有,建议不要设置这个变量,这样可能会加快启动速度。设置为full等同于不设置该变量,设置为none将禁用FireWire安全性
其它变量
7C436110-AB2A-4BBB-A880-FE41995C9F82:AAPL,PanicInfo0000
7C436110-AB2A-4BBB-A880-FE41995C9F82:AAPL,PanicInfoLog
7C436110-AB2A-4BBB-A880-FE41995C9F82:ALS_Data UINT8, Present on 2016+ MBP; default is 03 (enables auto power-on on lid opening), 00 disables auto boot; reads SMC key “LIDB”, see AlertUI.efi in firmware
7C436110-AB2A-4BBB-A880-FE41995C9F82:AutoBoot UINT8[2]
7C436110-AB2A-4BBB-A880-FE41995C9F82:backlight-level
7C436110-AB2A-4BBB-A880-FE41995C9F82:backlight-regs
7C436110-AB2A-4BBB-A880-FE41995C9F82:bluetoothActiveControllerInfo
7C436110-AB2A-4BBB-A880-FE41995C9F82:bluetoothInternalControllerInfo
7C436110-AB2A-4BBB-A880-FE41995C9F82:boot-gamma
7C436110-AB2A-4BBB-A880-FE41995C9F82:boot-image-key UINT8[16], Boot image identifier, used for hibernation.
7C436110-AB2A-4BBB-A880-FE41995C9F82:boot-image
7C436110-AB2A-4BBB-A880-FE41995C9F82:boot-info-payload
7C436110-AB2A-4BBB-A880-FE41995C9F82:boot-signature UINT8[20], Boot image encryption key, used for hibernation.
7C436110-AB2A-4BBB-A880-FE41995C9F82:boot-switch-vars DATA, Legacy boot image identitifer and decryption key, corresponds to IORTCVariables, removed as of 10.13.6.
7C436110-AB2A-4BBB-A880-FE41995C9F82:bootercfg-once 在首次启动后删除Booter参数覆盖,否则等同于bootercfg
7C436110-AB2A-4BBB-A880-FE41995C9F82:BootCampHD
7C436110-AB2A-4BBB-A880-FE41995C9F82:BootCampProcessorPstates
7C436110-AB2A-4BBB-A880-FE41995C9F82:csr-data
7C436110-AB2A-4BBB-A880-FE41995C9F82:disable-network
7C436110-AB2A-4BBB-A880-FE41995C9F82:disable-network
7C436110-AB2A-4BBB-A880-FE41995C9F82:DisplayBackgroundColor
7C436110-AB2A-4BBB-A880-FE41995C9F82:edid-override AppleGraphicsPolicy (outdated?)
7C436110-AB2A-4BBB-A880-FE41995C9F82:efi-apple-recovery
7C436110-AB2A-4BBB-A880-FE41995C9F82:efi-apple-payload#
7C436110-AB2A-4BBB-A880-FE41995C9F82:efi-apple-payload#-data
7C436110-AB2A-4BBB-A880-FE41995C9F82:efi-boot-device-data
7C436110-AB2A-4BBB-A880-FE41995C9F82:efi-boot-device-data
7C436110-AB2A-4BBB-A880-FE41995C9F82:efi-boot-device
7C436110-AB2A-4BBB-A880-FE41995C9F82:efi-boot-file
7C436110-AB2A-4BBB-A880-FE41995C9F82:efi-boot-file-data
7C436110-AB2A-4BBB-A880-FE41995C9F82:efi-boot-next
7C436110-AB2A-4BBB-A880-FE41995C9F82:efi-boot-payload0
7C436110-AB2A-4BBB-A880-FE41995C9F82:efi-boot-payload0-data
7C436110-AB2A-4BBB-A880-FE41995C9F82:eft-boot-next-data
7C436110-AB2A-4BBB-A880-FE41995C9F82:efi-boot-mkext
7C436110-AB2A-4BBB-A880-FE41995C9F82:efi-boot-kernelcache
7C436110-AB2A-4BBB-A880-FE41995C9F82:efi-boot-kernelcache-data
7C436110-AB2A-4BBB-A880-FE41995C9F82:efi-legacy-drive-hint
7C436110-AB2A-4BBB-A880-FE41995C9F82:efi-legacy-drive-hint-data
7C436110-AB2A-4BBB-A880-FE41995C9F82:efiboot-perf-record 启用boot.efi中的性能日志保存功能。性能日志会被保存到物理内存中,并通过efiboot-perf-record-data和efiboot-perf-record-size变量进行指向。从 10.15.4开始,也可以在OpenCore开启AppleDebug,以保存到OpenCore日志
7C436110-AB2A-4BBB-A880-FE41995C9F82:EFIBluetoothDelay
7C436110-AB2A-4BBB-A880-FE41995C9F82:EFICapsule_Result
7C436110-AB2A-4BBB-A880-FE41995C9F82:run-efi-updater 覆盖macOS中对EFI固件更新(MultiUpdater、ThorUtil)等的支持。将此值设置为No或其他可以转换为布尔类型的值将能够禁用10.10起的macOS固件更新
7C436110-AB2A-4BBB-A880-FE41995C9F82:EnableEHCIMode
7C436110-AB2A-4BBB-A880-FE41995C9F82:StartupMute 开机时禁用固件引导提示音,8进制整数。0x00指代不静音,其他任何值(或缺少该值)表示静音
7C436110-AB2A-4BBB-A880-FE41995C9F82:ErrorToneTestVariable
7C436110-AB2A-4BBB-A880-FE41995C9F82:fmm-computer-name 当前保存的主机名称,格式为ASCII字符串
7C436110-AB2A-4BBB-A880-FE41995C9F82:fmm-mobileme-token-FMM
7C436110-AB2A-4BBB-A880-FE41995C9F82:gpu-active
7C436110-AB2A-4BBB-A880-FE41995C9F82:gpu-policy
7C436110-AB2A-4BBB-A880-FE41995C9F82:gpu-power-prefs
7C436110-AB2A-4BBB-A880-FE41995C9F82:HW_BOOT_DATA DATA, Boot data?
7C436110-AB2A-4BBB-A880-FE41995C9F82:KTSStatus
7C436110-AB2A-4BBB-A880-FE41995C9F82:KTSPrevious
7C436110-AB2A-4BBB-A880-FE41995C9F82:KTSResult
7C436110-AB2A-4BBB-A880-FE41995C9F82:LocationServicesEnabled
7C436110-AB2A-4BBB-A880-FE41995C9F82:manufacturing-enter-picker
7C436110-AB2A-4BBB-A880-FE41995C9F82:nv_efi_disable
7C436110-AB2A-4BBB-A880-FE41995C9F82:picker-show-delay
7C436110-AB2A-4BBB-A880-FE41995C9F82:platform-uuid
7C436110-AB2A-4BBB-A880-FE41995C9F82:prev-lang:kbd ASCII String, Define default keyboard layout. Format is lang-COUNTRY:keyboard (e.g. ru-RU:19456 for Mac keyboard, also short forms ru:19456 and ru:0. Full list of keyboards in AppleKeyboardLayouts-L.dat, decoded at https://www.applelife.ru/posts/763537
7C436110-AB2A-4BBB-A880-FE41995C9F82:recovery-boot-mode
7C436110-AB2A-4BBB-A880-FE41995C9F82:RemoteDisabled
7C436110-AB2A-4BBB-A880-FE41995C9F82:security-mode ASCII String, IOFireWireController security mode, setting to none may result in longer startup, full is recommended
7C436110-AB2A-4BBB-A880-FE41995C9F82:SystemAudioVolume 固件音频支持的系统音频音量等级,8进制整数。0x80指代静音,低位用于编码安装的音频编码解码器的音量范围。该值以MaximumBootBeepVolume AppleHDA layout值为上限,以避免固件中的音频播放声音过大
7C436110-AB2A-4BBB-A880-FE41995C9F82:SmcFlasherResult
7C436110-AB2A-4BBB-A880-FE41995C9F82:SystemAudioVolumeDB
7C436110-AB2A-4BBB-A880-FE41995C9F82:SystemAudioVolumeSaved
7C436110-AB2A-4BBB-A880-FE41995C9F82:target-mode
7C436110-AB2A-4BBB-A880-FE41995C9F82:tbt-dpdefault
7C436110-AB2A-4BBB-A880-FE41995C9F82:tbt-options
7C436110-AB2A-4BBB-A880-FE41995C9F82:UEFIWindowsBootCapable
7C436110-AB2A-4BBB-A880-FE41995C9F82:usb-options
7C436110-AB2A-4BBB-A880-FE41995C9F82:usb-cr-rec
4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14:AAPL,PathProperties0000
4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14:BackgroundClear
4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14:BBIF
4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14:BlackMode
4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14:current-network
4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14:FirmwareFeatures
4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14:FirmwareFeaturesMask
4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14:gfx-saved-config-restore-status
4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14:GR_CAUSE
4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14:HardwareBootMode
4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14:HW_BID ASCII String, Hardware board-id (e.g. Mac-35C1E88140C3E6CF). Not present on real Macs, but used for SMBIOS override and faster board-id lookup in boot.efi.
4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14:HW_BREV Hardware board-rev
4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14:HW_ICT
4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14:HW_MLB DATA, Hardware MLB. Override for MLB. Present on newer Macs (2013+ at least).
4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14:HW_ROM DATA, Hardware ROM. Override for ROM. Present on newer Macs (2013+ at least).
4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14:HW_SSN DATA, Hardware serial number. Override for SSN (unsure if SSN is used by anything).
4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14:IASCurrentInstallPhase
4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14:IASInstallPhaseList
4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14:IpAddr
4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14:MLB DATA, Motherboard Serial Number.
4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14:NetbootDefaultImage
4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14:NetbootDiagnostics
4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14:PickerEntryReason DATA, 4 = right shift, 3 = left shift, 2 = remote (menu), 1 = NVRAM key (manufacturing-enter-picker)
4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14:ROM
4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14:security-key
4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14:SSN
4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14:system-id
4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14:UIScale
AF9FFD67-EC10-488A-9DFC-6CBF5EE22C2E:AcpiGlobalVariable UINT8[8]
8D63D4FE-BD3C-4AAD-881D-86FD974BC1DF:last-oslogin-ident
8D63D4FE-BD3C-4AAD-881D-86FD974BC1DF:corestorage-passphrase
F68DA75E-1B55-4E70-B41B-A7B7A5B758EA:ResetNVRam
F68DA75E-1B55-4E70-B41B-A7B7A5B758EA:BootOrder
F68DA75E-1B55-4E70-B41B-A7B7A5B758EA:BootNext
F68DA75E-1B55-4E70-B41B-A7B7A5B758EA:DriverOrder
F68DA75E-1B55-4E70-B41B-A7B7A5B758EA:target-mode
F68DA75E-1B55-4E70-B41B-A7B7A5B758EA:CBF2CC32
F68DA75E-1B55-4E70-B41B-A7B7A5B758EA:3B3D2CF2
F68DA75E-1B55-4E70-B41B-A7B7A5B758EA:61B764CB
F68DA75E-1B55-4E70-B41B-A7B7A5B758EA:F89C7780
F68DA75E-1B55-4E70-B41B-A7B7A5B758EA:3E6D568B
F68DA75E-1B55-4E70-B41B-A7B7A5B758EA:BC9772C5
5D62B28D-6ED2-40B4-A560-6CD79B93D366:AAPLTrbCmd
FA4CE28D-B62F-4C99-9CC3-6815686E30F9:DisplayBackgroundColor
FA4CE28D-B62F-4C99-9CC3-6815686E30F9:DefaultBackgroundColor
FA4CE28D-B62F-4C99-9CC3-6815686E30F9:gpu-active
FA4CE28D-B62F-4C99-9CC3-6815686E30F9:wireless-boot-ssid
FA4CE28D-B62F-4C99-9CC3-6815686E30F9:wireless-boot-password
36C28AB5-6566-4C50-9EBD-CBB920F83843:current-network Once existed in AppleVendor, see: https://github.com/erikberglund/AppleNVRAM/blob/master/Apple/4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14.md
36C28AB5-6566-4C50-9EBD-CBB920F83843:preferred-count
36C28AB5-6566-4C50-9EBD-CBB920F83843:preferred-networks
8BE4DF61-93CA-11D2-AA0D-00E098032B8C:BootXXXX Boot0080, Boot0081, Boot0082, BootFFFF are used
8BE4DF61-93CA-11D2-AA0D-00E098032B8C:LEGACYVGAHANDLE
8BE4DF61-93CA-11D2-AA0D-00E098032B8C:agp-internal-edid
8BE4DF61-93CA-11D2-AA0D-00E098032B8C:GFXVENDOR
8BE4DF61-93CA-11D2-AA0D-00E098032B8C:_AGP_DISABLED AppleGraphicsPolicy
E09B9297-7928-4440-9AAB-D1F8536FBF0A:vsmc-status
F0B9AF8F-2222-4840-8A37-ECF7CC8C12E1:vsmc-key

重置

在Clover和OpenCore之间切换时,建议重置NVRAM。

通过Clover

删除Clover的drivers64UEFI目录下的EmuVariableUefi.efi,重启进入Clover引导项选择界面,按F11或Fn+F11,直到设备自动重启。

通过OpenCore

在OpenCore引导界面按空格显示隐藏条目,选择Reset NVRAM。此法将会丢失BIOS中的自定引导项。

通过终端

在终端输入以下命令即可。

1
sudo nvram -c

判断工作状态

删除引导工具内的VariableRuntimeDxe.efi、EmuVariableRuntimeDxe.efi和EmuVariableUefi.efi,删除NVRAM导出脚本LogoutHook和RC Script,删除EFI分区根目录下的nvram.plist,重启后输入以下命令。

1
sudo nvram myvar=test

再次重启后在终端输入以下命令,如果终端成功输出了test,则说明主板在Mac下NVRAM正常工作,反之为不正常。

1
nvram -p | grep -i myvar

SIP配置

SIP是Mac的安全保护机制,包括文件系统保护、运行时保护和内核扩展签名保护。

基本概念

csr-active-config

启动时控制SIP的参数。

BiT位 含义
0 [kext]允许加载不受信任的kext(与kext-dev-mode=1等效)
1 [fs]解锁文件系统限制
2 [debug]允许task_for_pid()调用
3 [N/A]允许内核调试 (官方的csrutil工具无法设置此位)
4 [internal]Apple内部保留位(csrutil默认会设置此位,实际不会起作用。设置与否均可)
5 [dtrace]解锁dtrace限制
6 [nvram]解锁NVRAM限制
7 [N/A]允许设备配置,用于Recovery/安装环境

修改

SIP可以防止将未签名的程序包注入内核,并可以防止应用程序覆盖NVRAM。通过Clover注入kext时不要求SIP禁用。

通过csrutil

在正常系统环境下,csrutil只能查询SIP状态,故需进入恢复模式更改。白苹果在启动时按command+R进入,黑苹果在Clover的引导菜单进入。按照需求输入以下命令即可。

1
2
3
4
5
6
7
8
9
10
11
12
13
// 查询状态
csrutil status

// 完全启用
csrutil enable
// 或csrutil clear

// 开关各项技术
csrutil enable [--without kext|fs|debug|dtrace|nvram] [--no-internal]

// 禁用
csrutil disable
// 或csrutil enable --without kext --without fs --without debug --without dtrace --without nvram
通过引导器

通过修改引导器中的CsrActiveConfig,可修改SIP状态。使用0x67或0x3E7以禁用,两者参数比较如下表。

参数 有效值
0x67 CSR_ALLOW_UNRESTRICTED_NVRAM
CSR_ALLOW_TASK_FOR_PID
CSR_ALLOW_UNRESTRICTED_FS
CSR_ALLOW_UNTRUSTED_KEXTS
0x3E7 CSR_ALLOW_UNAPPROVED_KEXTS
CSR_ALLOW_ANY_RECOVERY_OS
CSR_ALLOW_DEVICE_CONFIGURATION
CSR_ALLOW_UNRESTRICTED_NVRAM
CSR_ALLOW_UNRESTRICTED_DTRACE
CSR_ALLOW_UNTRUSTED_KEXTS
通过写入NVRAM

打开终端并输入以下命令即可。

1
sudo nvram 7C436110-AB2A-4BBB-A880-FE41995C9F82:csr-active-config=%13%00%00%00

EFI分区说明

APPLE文件夹

该文件夹用于更新实际Mac上的固件,无实际作用。

重定位块

即Relocation Block,是一个分配在低位4GB内存的缓冲区,EfiBoot使用该这部分内存加载内核和相关结构。在内核启动之前,重定位块的内容会被复制回位于低位的保留内存。

在没有更好的 slide(所有内存都被使用了)、强制slide=0(通过参数或安全模式设置)、不支持 KASLR(slide,macOS 10.7 及更旧的版本)时,将使用重定位块。

使用重定位块启动时不支持休眠。

内存映射限制

Apple内核在解析UEFI内存映射时存在限制。

内存映射的大小不能超过4096字节,因为Apple内核将其映射为一个4KiB页面。某些固件的内存映射大小非常大(大约超过100个条目),在其上Apple内核会在启动时崩溃。

内存属性表会被忽略。EfiRuntimeServicesCode内存静态获得RX权限,其他内存类型则获得RW权限。某些固件驱动会在运行时把数据写到全局变量中,在其上Apple内核在调用UEFI Runtime Services时会崩溃,除非驱动的.data部分有EfiRuntimeServicesData类型。

通用操作

填充PCI列表

通过Hackintool

打开Hackintool,选择PCI,点击右下角的导出按钮,即可得到PCI列表。插入Clover配置文件的Devices-Arbitrary即可。

通过Clover

以Clover为例,打开Clover Configurator,点击Boot.log-Generate log-Save boot.log to desktop,在桌面生成bootlog.txt文件。

打开Hackintool,记住要添加的设备的设备ID,在bootlog.txt中搜索此ID,并记录同一行下形如xx:xx.xx的字符串,称为pciaddr。如现有设备NVME SSD SM961,其设备ID为0xA804,pciaddr为04:00.00。

打开config.plist,点击Devices-Arbitrary,点击PciAddr栏左下角的+号以新建条目。其中PciAddr填写刚才查询的值,Comment可记录下该设备的类型。双击此条目,并点击Value Type右下角的+号,添加两个条目,内容如下。

Key Value Value Type
AAPL,slot-name 端口位置,可任意填写,如Slot-1 STRING
model 设备名称,可任意填写,最好与源设备名一致 STRING

完成后保存并重启即可。注意,显卡信息无法添加到PCI列表中,而声卡PCI属性的注入会导致layout-ID的覆盖,从而使声卡不工作。故若需注入声卡属性,需在config.plist下设置Devices-Audio-inject为No,在Boot-Arguments下添加alcid=[layout-id]

禁用USB2控制器

USB2的控制器在DSDT一般命名为EHC1/EHC2。可用以下SSDT禁用EHC1和EHC2。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
/*
* USB compatibility table for disable phantoms EHC1, EHC2.
*
* Attention!
* Only for 7,8,9-series chipsets and 10.11 and newer!
*
* To disable EHC1 and EHC2 - set an option "XHCI Mode" to "Enabled" in yours BIOS.
* If the "XHCI Mode" option is not available in yours BIOS or works incorrectly, then use this ACPI table.
* Disabling through BIOS is preferable whenever possible.
*
* WARN: for some motherboards you need to use either "EH1D = One" or "EH2D = One" but not both!
* This is because for some motherboards, device (EHC1 or EHC2) is used by macOS. Check the IOReg.
*/
DefinitionBlock ("", "SSDT", 2, "ACDT", "EHCx_OFF", 0x00001000)
{
Scope (\)
{
OperationRegion (RCRG, SystemMemory, 0xFED1F418, One)
Field (RCRG, DWordAcc, Lock, Preserve)
{
, 13,
EH2D, 1,
, 1,
EH1D, 1
}

Method (_INI, 0, NotSerialized) // _INI: Initialize
{
// In most cases this patch does benefit all operating systems,
// yet on select pre-Windows 10 it may cause issues.
// Remove If (_OSI ("Darwin")) in case you have none.
If (_OSI ("Darwin")) {
EH1D = One // Disable EHC1
EH2D = One // Disable EHC2
}
}
}
}

Clover

Clover支持从10.5开始的Mac。

部分说明

kexts注入

流程为修补SIP开启->修补程序以启用XNU僵尸代码->修补带有kext注入的race condition->注入kext->恢复SIP状态。该过程依赖FSInject.efi驱动程序,该驱动可以阻塞OSX缓存,并注入驱动程序到SLE,此时屏幕上会出现很多点。该过程中Clover调用了自10.7以来从未使用过的XNU的僵尸代码。

在启动时,kext的搜索顺序如下。对于重名的kext,会按照以下顺序加载第一个kext,无论该kext是否可用。

1
2
3
4
EFI/CLOVER/OEM/xxx/kexts/xx.y
EFI/CLOVER/OEM/xxx/kexts/Other
EFI/CLOVER/kexts/xx.y
EFI/CLOVER/kexts/Other

配置文件

默认配置文件路径为EFI/CLOVER/config.plist。

每个主题有独特的配置文件,如EFI/CLOVER/themes/black_green/theme.plist。主题配置文件示例如下。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Author</key>
<string>Slice</string>
<key>Year</key>
<string>2012</string>
<key>Description</key>
<string>Main metallic looking theme</string>
<key>Theme</key>
<dict>
<key>Badges</key>
<dict>
<key>Show</key>
<true/>
<key>Inline</key>
<false/>
<key>Swap</key>
<false/>
</dict>
<key>Background</key>
<dict>
<key>Path</key>
<string>MetalDragon.png</string>
<key>Type</key>
<string>Scale</string>
<key>Dark</key>
<false/>
<key>Sharp</key>
<string>0x80</string>
</dict>
<key>Banner</key>
<string>logo-trans.png</string>
<key>Font</key>
<dict>
<key>CharWidth</key>
<integer>10</integer>
<key>Path</key>
<string>BoG_LucidaConsole_10W_NA.png</string>
<key>Type</key>
<string>Load</string>
</dict>
<key>Selection</key>
<dict>
<key>Big</key>
<string>Select_trans_big.png</string>
<key>Color</key>
<string>0xF3F3F380</string>
<key>Small</key>
<string>Select_trans_small.png</string>
<key>OnTop</key>
<false/>
</dict>
<key>Anime</key>
<array>
<dict>
<key>ID</key>
<integer>1</integer>
<key>Path</key>
<string>logo_3D</string>
<key>Frames</key>
<integer>15</integer>
<key>FrameTime</key>
<integer>200</integer>
</dict>
</array>
</dict>
</dict>
</plist>

组件

内核

CLOVERX64.efi为Clover的内核。

提取

下载Clover的pkg安装包后,在Windows下可用7z打开,一路双击直到看到Clover相关文件即可。在Mac下则可用Suspicious Package。

更新

用新的CLOVERX64.efi覆盖EFI分区中旧的EFI/CLOVER/CLOVERX64.efi即可。

ACPI

ACPI/hotpatch是SSDT库,需应用的DSDT/SSDT要放到ACPI/patched。

DSDT搜索顺序

顺序如下。若希望每个操作系统使用不同的DSDT,则将相应的DSDT放到各自系统分区的根目录即可。

1
2
3
4
5
6
7
# 机器主板名称可在boot.log查看
# 以running on Inspiron 1525 ... with board 0U990C为例
# 可选用Inspiron 1525或0U990C
->[所引导的系统分区]/DSDT.aml
->[Clover所在分区]/EFI/CLOVER/OEM/[机器主板名称]/ACPI/patched/DSDT.aml
->[Clover所在分区]/EFI/CLOVER/ACPI/patched/DSDT.aml
->BIOS
重命名规律

Clover对ACPI的更名只对原有的ACPI表和ACPI/patched的DSDT起作用,而不对ACPI/patched的SSDT起作用。故若使用Clover的ACPI更名,则SSDT引用的变量需采用新名称而非旧名称。

DSDT调试

若打开DSDT的Debug功能,则会在/EFI/CLOVER/ACPI/origin下找到原始DSDT和修改过的DSDT。其中DSDT-or.aml表示原始DSDT,DSDT-pa0.aml表示第一次尝试修复的DSDT,DSDT-pa1.aml表示第二次尝试修复的DSDT,后面的同理。

引导界面

快捷键

若设置了跳过引导界面,在启动时点击空格即可重新唤出。

快捷键 含义
F1 帮助
F2 保存启动日志preboot.log到EFI/CLOVER/misc/
F3 显示被隐藏的入口
F4 提取DSDT到EFI/CLOVER/ACPI/origin/
F5 提取修正过的DSDT到EFI/CLOVER/ACPI/origin/
F6 提取显卡ROM的VideoBios到EFI/CLOVER/misc/
F10 截屏到EFI/CLOVER/misc/
F11 重置NVRAM
空格 制定菜单项的详细信息
A 关于Clover
O Clover选项
U 退出

Options

ACPI patching
选项 说明
Tables dropping 等同于Clover Configurator中ACPI选项卡的Drop Tables
Drop OEM _DSM 丢弃_DSM
DSDT fix mask DSDT修复遮盖,等同于Clover Configurator中ACPI选项卡的各种Fix选项
Custom DSDT patches 自定义的ACPI重命名
System Parameters
选项 说明
Booter Cfg Command 自定义的ACPI重命名

目录层级

Kexts

Kexts/10.x下的驱动,只有在Clover引导使用boot with injected kexts时才会加载。

Clover不能加载已经在SLE里的kexts。

Driver

r4986以后,Clover会先从EFI/CLOVER/drivers/UEFI加载驱动,若无则从EFI/CLOVER/drivers64UEFI加载。

OEM

OEM目录下可存储包含特定机型的配置文件,如EFI/CLOVER/OEM/Inspiron1525/config.plist或EFI/CLOVER/OEM/H61M-S1/UEFI/config.plist外加自定义DSDT.aml。其中有UEFI目录的为UEFI启动的配置文件。

OEM目录下的子目录名称是根据SMBIOS得到的。在Clover启动界面按F2保存日志文件preboot.log,在日志里搜索Cloverrevision,即可得知本机SMBIOS。

最简结构

推荐最简文件结构如下。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
├── ACPI
├── CLOVERX64.efi
├── config.plist
├── drivers
│ └── UEFI
│ ├── ApfsDriverLoader.efi
│ ├── AudioDxe.efi
│ ├── DataHubDxe.efi
│ ├── FSInject.efi
│ ├── HFSPlus.efi
│ ├── OpenRuntime.efi
│ └── VirtualSmc.efi
└── kexts
└── Other
├── Lilu.kext
├── VirtualSMC.kext
└── WhateverGreen.kext

基本配置

隐藏启动界面

确保系统正常运作后,打开Clover的config.plist,进行下列操作。

选项 操作
启动参数 取消-v
Hide Volume 添加Preboot和Recovery
Timeout 0以跳过倒计时(-1为停止倒计时)
Default Boot Volume Mac系统盘名称或GUID号或设备路径,如HD(1,GPT,57272A5A-7EFE-4404-9CDA-C33761D0DB3C,0x800,0xFF000)

找到Mac系统盘下的Library/Preferences/SystemConfiguration/com.apple.Boot.plist,复制到桌面后用文本编辑器打开,删除里面的-v参数,保存后拷贝回原来的位置以替换原始文件。重启,系统启动过程中将不会进入Clover界面和啰嗦模式。

若Driver文件夹中APFS驱动使用的不是ApfsDriverLoader.efi,则下载该驱动并用该驱动替换apfs.efi。重启,系统启动过程中将不会出现log代码。

主题配置

将下载好的主题文件夹以主题本身名字命名,并复制到EFI/CLOVER/themes下,在Gui-Theme下填写主题名称即可。

Mojave主题下载链接如下。

1
https://www.lanzous.com/i5e807e

播放开机音乐

下载BootAudio-Utility工具包,链接如下。

1
https://www.lanzous.com/i6ux0dc

将sound.wav和sound_night.wav放到EFI/CLOVER/themes/[当前使用主题]。确保UEFI文件夹下存在AudioDxe.efi和BootChimeDxe.efi,tools文件夹中存在BootChimeCfg.efi和HdaCodecDump.efi。

进入Clover的 UEFI Shell,输入以下命令配置BootChimeCfg。

1
2
3
4
# fs0是Clover所在ESP分区标号
fs0:
cd EFI\CLOVER\tools
BootChimeCfg.efi

引导生成

在Mac下可通过pkg安装包安装。也可将整个文件夹父知道EFI分区,然后手动添加引导项,路径为/EFI/Clover/CLOVERX64.efi。

配置文件生成

1
https://cloudclovereditor.altervista.org/cce/cce/index.php

配置文件详解

以下不建议的配置默认折叠。

ACPI

DSDT
选项 说明
ResetAddress 修复重启,默认为0x64(通过PS2控制器重新启动),0x0CF9为通过PCI导轨重新启动,0x0为使用默认的FACP值(可在Clover启动界面按F2后打开日志文件查找Address得到本值,如0000000000000CF9即为0xCF9)
ResetValue 修复重启,默认为0xFE(通过PS2控制器重新启动),0x06为通过PCI导轨重新启动,0x0为使用默认的FACP值(可在Clover启动界面按F2后打开日志文件查找Value to cause reset得到本值,如06即为0x06)
DsdtName dsdt.aml的名称
AddMCHC 在DSDT中添加Device ID=0X0044的设备,该项启用了IMEI修复程序才会起作用(匹配Intel Clarkdale平台,有些芯片需要这个装置来解决PCI的电源管理问题,一般不启用)
AddIMEI 用于intelHDxxx集成显卡,解决完美注入(需要开启fakeid-IMEI)
AddPNLF 添加PNLF设置代码,实现系统良好睡眠/唤醒
AddHDMI 修复HDMI音频输出
FixDarwin 使macOS系统(Darwin)被标识为Windows
FixDisplay 修复显卡代码(增加GFX0以及HDMI音频设置HADU)
FakeLPC 仿冒LPC以加载AppleLPC.kext(Intel and NForce 芯片建议勾选,特别是ICH7/ICH9等老芯片组)
-> 以下四条修复IRQ,消除可能导致触摸板和音频设备无法正常工作的任何潜在IRQ冲突
FixIPIC 从decice IPIC移除中断语句(IRQ(2)),有利于某些笔记本电源按钮的工作
FixRTC 从RTC装置中删除IRQ(0),作用与patch里的防RTC重置类似
FixTMR 从TMR装置中删除IRQ(8),适用于较早的dos设备
FixHPET 添加IRQ(0,8,11)代码,加载原生电源管理(10.9+无需勾选)
<-
FixIDE 修复在10.6时五国出现的AppleIntelPIIXATA错误(一般不启用)
FixSBUS 增加SMBusControlle到设备树种,可修复因缺失SBUS控制而在系统log中出现的警告
FixDisplay 此补丁将影响所有视频卡,包括嵌入式英特尔GFX
FixIntelGfx 开启对IntelGFX显卡的新补丁设置(需配合imei)
FixWAK 消除警告
FixADP1 将设备AC0重命名为ADP1,效果与直接用ACPI更名等效
FixS3D 修正_S3Dmethods函数,解决睡眠/唤醒问题
FixACST 重命名ACST,常用于华硕主板以避免冲突(ACST项对于华硕是AC适配器状态,对于苹果是CPU闲置休眠状态的功能)
FixRegions 修正BIOS中的浮动区域(每次BIOS设置更改时OperatingRegions的地址会被更改的区域,在某些BIOS中会存在这种情况,即OperationRegion (GNVS, SystemMemory, 0xDE6A5E18, 0x01CD)中0xDE6A5E18会不断变化)
FixHeaders 清理标头,用于MACH重启修复,使用不会带来冲突
FixHDA 修复声卡代码(修正AZAL为HDEF/HDAU,且增加layout -id和pinconfig/MaximumBootBeepVolume属性)
FixLAN 修复网卡代码(注入网卡属性,修改网卡为内建)
FixAirport 修复无线网卡代码(为支持Airport的无线网卡注入属性,以开启Airport功能)
Fixshutdown 修复关机断电代码(主要是添加_PTS函数,判断寄存器arg0值是否为5并防止设置SLP_SMI_EN=1,华硕主板建议勾选)
FixUSB 修复USB代码(包含EHCI代码,注入USB属性,帮助内建USB,是完成睡眠的关键)
FixFirewire 修复1394火线代码(在火线控制装置中增加fwhub属性,一般不启用)
FixSATA 内建磁盘,修复SATA代码(用ICH6的ID匹配,可修复硬盘图标显示为橙黄色问题)
PatchAPIC 修复MADT表
HaltEnabler 在OSX系统启动时设置SLP_SMI_EN=0,断电重启补丁,与OpenHaltRestart.kext作用相同
UseSystemIO 在生成的_CST表中对Register (FFixedHW, Register (SystemIO,进行选择
SlpSmiAtWake 在_WAK方法添加SLP_SMI_EN=0,可能有助于解决UEFI引导时的睡眠和关机问题
SuspendOverride 将睡眠模式扩展为状态3、4、5
ReuseFFFF 将诸如Name (_ADR, 0xFFFF)的设备转换为(ADR,0)并重新用于注入(如FakeID)
Rtc8Allowed 设置RTC长度为8字节
Debug 打开后会在EFI/CLOVER/ACPI/origin看到未修补的DSDT-or.aml、经过第一次修补尝试后的DSDT-pa0.aml、经过第二次修补尝试后的DSDT-pa1.aml,一直生成,直至系统能够启动为止
SSDT
选项 说明
DeleteUnuse 从DSDT中删除无用设备
Double First State CPU功耗相关(Ivy Bridge专用)
Drop OEM 获取内建SSDT表单,删除与OEM CPU相关的SSDT以避免在为处理器生成包含P State和C State的SSDT时发生冲突,使用自定义DSDT则默认值为false,使用BIOS.aml则默认值为true(对于Sandy Bridge及较旧硬件使用,非必须勿用)
Generate CStates 开启C-State功能,可以修复启动时ACPI_SMC_PlatformPlugin错误
Generate PStates 开启P-State功能
Plugin Type 值为0时用ACPI_SMC_PlatformPlugin,为1时用X86PlatformPlugin(Ivy Bridge专用)
PLimit Dict 限制CPU频率,0为不开启,1为降低一级,2为降低两级
UnderVolt Step 限制CPU功率,只针对core 2,对i系列CPU无效,0为不开启,设为2可能死机
Min Multiplier 最小变频数
Max Multiplier 最大变频数
smartUPS 若打开,在系统概述的电源项中UPS已安装显示为是(只起修饰作用)
PatchAPIC 在SSDT中添加CPUS=1,解决ACPI表单中NMI丢失时macOS启动可能五国的问题
EnableC2/C4/C6/C7 在SSDT中添加_CST函数以启用C2/C4/C6/C7休眠
CpuPm/Cpu0Ist 与CPU电源管理有关
DMAR 防止Vt-d出现问题,修复10.8.2中的AppleACPIPlatform.kext启动问题
MATS 此表可能包含无法打印的字符以导致内核崩溃,打开该选项可修复ACPI_SMC_PlatformPlugin错误
BGRT 删除BIOS内置的启动图片
HPET / MCFG 获取MCFG表单
RenameDevices

以将_SB.PCI0.RP02.PSXS修改为_SB.PCI0.RP02.ARPT为例。

选项 说明
Find Device _SB.PCI0.RP02.PSXS
Rename Device ARPT
DropTables

通过签名和/或表标识符删除OEM ACPI表。Signature、TableID和Length都可以在原SSDT表头找到,注意Length需转换为十进制。

ResetAddress/ResetValue

默认值分别为0x64和0xFE。若重启不断电,则根据ACPI表中FACP.aml的值更改,其中ResetAddress对应Address,ResetValue对应Value to cause reset,无需转换进制。

C3功能

开启C3功能需要C3Latency的值小于1000(0x3e8),可在FACP.aml搜索C3 Latency得到。若大于1000,则在Clover中将C3Latency设为0x3E7,对于支持Turbo技术的CPU可设置为0xFA。

BOOT

选项 说明
DefaultVolume 指定默认启动项,可以为卷名(Macintosh)、分区UUID(ABCDEFGH-ZXCV-ASDF-QWER-ASDFGHJKLPOIU)或设备路径(HD(1,GPT,ABCDEFGH-ZXCV-ASDF-QWER-ASDFGHJKLPOIU,0xAAA,0xBBBBB))
DefaultLoader 指定加载器路径(如BOOTX64.efi)
XMPDetection 当检测到XMP内存时读取最佳预设参数或禁止检测XMP内存
Debug 生成调试输出/EFI/CLOVER/misc/debug.log(大大增加加载时间)
IgnoreNVRAMBoot 忽略启动磁盘面板的设置并允许始终启动到同一操作系统
Secure 在启用安全启动时使用Clover(需要签署Clover的二进制文件并加载证书)
Legacy 加载旧版本Windows/Linux
LegacyBiosDefaultEntry 指定以Legacy模式启动的硬盘(在Legacy选项选中后才会显示)
Timeout 0为直接跳过引导界面,-1为停止倒计时
RtcHibernateAware 在从休眠状态唤醒时启用RTC内存擦除,等同于启用AppleRTC补丁并使用HibernationFixup.kext(至少在Ivy Bridge和更高版本上使用,非必要请勿使用)
SignatureFixup 为True时签名值来自休眠映像,为False时签名值为零,内核将其复制到映像中

Boot Graphics

选项 说明
UI Scale 高分辨率显示器可设置为2

CPU

选项 说明
Frequency MHz CPU频率(如3300-3.3GHz,建议不要使用)
BusSpeed kHz 主频(如133330,代表133MHz)
Type CPU类型(如0x0901,代表i3)
QPI CPU的总线速度(如5000-i3 2120,装饰作用)
C2/C4/C6 启用CPU的Turbo功能
Type CPU类型(修饰功能)
Latency 进入C3状态时发出的C3进入等待时间,最大为0x3E8(1000),0x3E9表示SpeedStep未打开,笔记本用户可用0x00FA以启用电源管理

Devices

选项 说明
ResetHDA 音频控制器初始化,在操作系统重新引导时将编解码器恢复为中立状态,以使在冷启动后无法正常工作、但重启或唤醒后仍可以工作时使用,等效于使用CodecCommander.kext,或OpenCore配置文件的UEFI-Audio-ResetTrafficClass,或启动参数alctsel=1,或使用JackFix
AFGLowPowerState 消除空闲模式后音频输出上的刺耳声音,等效于DeviceProperties-Add-PCIRoot…-AFGLowPowerState-<01000000>
USB/ixOwnership 使USB注入保持启用状态而仅关闭所有权修复,解决卡Enabling Legacy Matching问题(也可在BIOS启用XHCI Hand Off解决)
USB/AddClockID 启用良好的深度睡眠(无法通过键盘或鼠标输入/退出),需要配合USBInjection启用,等效于DeviceProperties-Add-PCIRoot…-AAPL,clock-id
USB/HighCurrent 为iPad充电等提供更多电源(不适用于10.11及更新版本),等效于DeviceProperties-Add-PciRoot…-AAPL, HighCurrent
UseIntelHDMI 如果为TRUE,hda-gfx=onboard-1将被注入到GFX0和HDEF设备中,另外如果存在ATI或Nvidia HDMI设备,它们将被分配给onboard-2;如果为FALSE,则ATI或Nvidia设备以及HDAU设备(如果存在)将在onboard-1上
NoDefaultProperties 影响DSDT修复程序,并强制它们生成空的_DSM,仅适用于显示、声音、LAN和WiFi
IntelMaxValue 需开启SetIntelBacklight和SetIntelMaxBacklight,建议Sandy/IvyBridge用1808,Haswell/Broadwell用2776,Skylake/Kabylake用1295

Gui

选项 说明
ConsoleMode 将控制台驱动程序切换到请求的控制台模式,供shell、boot.efi、dumpueficalls等使用,0(默认)为禁用,Min/Max为最低/最高模式,分别适合慢速/快速控制台,输入数字为选择特定模式,在boot.log中可查,非必要不打开
Mouse/Mirror 单轴负移动速度
ShowOptimus 在某些BIOS中启用或禁用Optimus的情况下为其供电
KbdPrevLang 修复旧macOS使用英语以外的语言时弹出窗口中使用混合语言的问题,会导致启动Recovery HD时始终保持英语(仅在使用AptioMemoryFix/OsxAptioFixV3且无EmuVariableUefi时可用)
PlayAsync 同步声音播放
CustomIcons 自定义磁盘图标(将会在启动界面显示Mac中磁盘简介的图标)
Entries

自定义启动项。示例如下。

选项 内容 说明
Path \EFI\path\to\file.efi 启动的EFI文件路径
Title 启动项名称
Type 启动项类型
Volume 磁盘GUID(无用时可删除该项)
Comment 注释(可不填)

Graphics

Clover检测到Intel iGPU时,如果config.plist中不存在Graphics部分,则会自动启用Intel显卡注入。

选项 说明
VRAM 设置显存(单位为MB)
Load VBios 从EFI/CLOVER/OEM/[model]/ROM或EFI/CLOVER/ROM/[vendor]_[device].rom加载视频BIOS(用于不带任何外部文件的移动Radeon卡,或向仅包含UEFI视频BIOS的卡提供旧版视频BIOS)
DualLink 设为0可解决某些机型显示四分之一屏幕问题
Patch VBios 获得最高监视器分辨率支持(若分辨率不满足需求,可安装驱动CsmVideoDxe.efi)
HorizontalSyncPulseWidth 注入32可解决某些机型出现八个苹果的问题
VideoPorts 显卡上的端口数量(包括TVO和/或HDMI)
FBName 选择帧缓冲区名称
NVCAP 注入NVCAP(仅对Nvidia视频卡有效)
display-cfg 显卡CFG(仅对Nvidia视频卡有效)
RadeonDeInit 取消初始化Radeon卡(解决AMD Radeon HD6xxx及更高版本在睡眠后无法唤醒的问题)

Kernel and Kexts Patches

选项 说明
KernelCpu 消除某些与旧系统中不受支持的CPU(例如Yonah,Atom或Haswell)相关的内核混乱
AppleRTC 修复RTC问题,确保重启后不会重置BIOS
KernelLapic HP笔记本电脑存在Lapic问题,可以通过使用boot参数cpus=1或使用此选项来解决
KernelHaswellE 阻止Haswell-E兼容性检查
ATI Connectors Controller 修改AMD视频卡控制器从而驱动AMD卡
KernelPM 阻止写入MSR 0xe2(适用于10.8.5和10.9内核),防止在使用XCPM时在启动时引起内核恐慌
AppleIntelCPUPM 与KernelPM相同,但是使用AppleIntelCPUPowerManagement时
KernelXCPM 适用于IvyBridge CPU的XCPM补丁
InfoPlistPatch 修补kext的Info.plist

Rt variables

选项 说明
BooterConfig 一般为0x28
CsrActiveConfig 0x0-启用SIP,0x3-部分禁用SIP(允许加载未签名的kexts),0x3E7-完全禁用SIP
ROM / UseMacAddr0 将板载MAC地址作为ROM

SMBIOS

选项 说明
Trust 优先考虑在SMBIOS或SPD中找到的内存描述符值(Mac中的内存描述不正确时需禁用)
Slots AAPL injections 填充PCI列表(一般不使用此法)

System Paramaters

选项 说明
BacklightLevel 监控亮度水平,最大值为0xFFFF(全背光),最小值为0x0(无),默认值为0x0501(只有部分系统会受到此参数的影响,台式机可忽略)
InjectSystemID 设置为YES时注入设备树ID(IODeviceTree:/efi/platform/system-id),NO时注入运行时变量(IODeviceTree:/options/platform-uuid)
InjectKexts 是否从EFI/CLOVER/kexts/10.xx中注入kexts

配置文件简化

自动生成

在终端输入以下命令自动生成config.plist,位置默认在个人文件夹目录。

1
/usr/local/bin/clover-genconfig >config.plist

手动修改

选项 操作
ACPI 禁用所有更名补丁
Gui Scan处只勾选Entries和Tool以在引导界面出现UEFI Shell和Boot Options菜单
Kernel and Kext Patches 禁用四个选项卡中所有的自带项
System Parameters 删除BacklightLevel

OcQuirks

Clover 5120移植了OpenCore的OpenRuntime.efi以替代较旧的内存管理驱动,Big Sur需要使用该方法驱动。需更新Clover Configurator至5.16及以上以适配新增的OcQuirks选项。

下载链接如下。

1
https://github.com/ReddestDream/OcQuirks

移除UEFI目录中的内存管理驱动,包括AptioMemoryFix、OsxAptioFix3Drv、OsxAptioFix2Drv、OsxAptioFixDrv、OsxLowMemFixDrv、OsxAptioFix2Drv-free2000。

将OcQuirks.efi、OpenRuntime.efi和OcQuirks.plist放到Clover的Drivers文件夹中,重启即可。若未找到OcQuirks,则采用以下默认值。

Quirk 默认值 说明
AvoidRuntimeDefrag True 开启后会修复UEFI的运行服务,例如日期、时间、NVRAM、电源控制等
DevirtualiseMmio False 开启后会减少Stolen内存占用空间,扩大Slide=N值的范围,适用于大多数主板
DisableSingleUser False 开启后会禁止Cmd+S和-s的使用,使设备更加接近于T2白苹果
DisableVariableWrite False 开启后会禁止NVRAM写入,在Z390/HM370等没有原生macOS支持NVRAM的主板上需要开启
DiscardHibernateMap False 开启后会重用原始休眠内存映射,仅某些旧硬件需要
EnableSafeModeSlide True 开启后会允许在安全模式下使用Slide值
EnableWriteUnprotector True 开启后会在执行期间删除CR0寄存器中的写入保护
ForceExitBootServices True 开启后会确保ExitBootServices即使在MemoryMap发生更改时也能调用成功(除非有必要,否则请勿使用)
MmioWhitelist Array 设计为用plist dict值填充,描述使用DevirtualiseMmio的Quirk时对特定固件功能至关重要的地址
ProtectMemoryRegions False 开启后会用于修复人为制造和睡眠唤醒的问题(AvoidRuntimeDefrag已经修复了这个问题,所以尽可能避免使用这个Quirk)
ProtectSecureBoot False 避免操作系统对UEFI安全启动变量(db/dbx/PX/KEK)进行写入(主要用于避免Insyde主板和MacPro 5,1的NVRAM问题)
ProtectUefiServices False 保护UEFI服务不被固件覆盖
ProvideConsoleGopEnable True 控制台句柄缺少图形输出协议时需要
ProtectCsmRegion False
ProvideCustomSlide True 如果Slide值存在冲突,此选项将强制macOS使用一个伪随机值(只有在遇到OnlyN/256slidevaluesareusable!时需要)
RebuildAppleMemoryMap True 生成与macOS兼容的内存映射
SetupVirtualMap True 开启后会将SetVirtualAddresses调用修复为虚拟地址
SignalAppleOS False 通过OS Info将macOS加载的信息报告给其它操作系统,用于在Windows中为MacBook启用iGPU
SyncRuntimePermissions True 同步运行时环境的内存权限
ShrinkMemoryMap False
QuirksProvideConsoleGopEnable True

主题设置

1
https://www.insanelymac.com/forum/topic/282787-clover-v2-instructions/page/3/?tab=comments#comment-2645125

相关资源

配置文件在线编辑

1
https://cloudclovereditor.altervista.org/cce/index.php

编译源码

1
https://www.insanelymac.com/forum/topic/282787-clover-v2-instructions/page/2/?tab=comments#comment-2250955

OpenCore

OpenCore是取代Clover的新引导程序,从0.6.2版本起支持从10.4开始的操作系统,可使Mac拥有更快的启动速度。OpenCore也支持包括MacPro 5,1和虚拟机在内的大部分较新的Mac型号。

注意,OpenCore不支持MBR,只支持GPT。OpenCore不支持基于UEFI的VBIOS补丁,但该补丁可在Mac中完成。

下载链接如下。

1
https://github.com/acidanthera/OpenCorePkg/

OpenCore与Clover一个很重要的不同在于,每个SSDT和kext都需要在config.plist中指定启动顺序。因此每次对ACPI和Kexts文件夹进行变动时,都需要修改config.plist。

在OpenCore主界面,点击空格以显示全部驱动器及辅助选项。

【过时】AppleSupportPkg

包括ApfsDriverLoader、FwRuntimeServices、VBoxHfs、VerifyMsrE2。

1
https://github.com/acidanthera/AppleSupportPkg

在macOS中,可通过在终端上输入以下命令获取OpenCore版本信息。

1
nvram 4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102:opencore-version

部分说明

kexts注入

流程为使现有的预链接内核和kexts做好注入准备->使用新的kexts在EFI环境中重建缓存->添加此新缓存。

操作系统不可知的预链接内核格式自10.6(v2)以来一直保持不变,且所涉及的修补少,因此该方法稳定性高。OpenCore还支持预链接内核(v1,10.4/10.5),无缓存,支持Mkext和KernelCollections,因此支持所有Intel版本的Mac。

不能从OpenCore注入IO80211Family,否则将导致内核panic。

SMBIOS与ACPI

默认情况下,OpenCore将假定对所有操作系统注入ACPI和SMBIOS信息,以提供BootCamp支持。要启用仅限Mac的SMBIOS注入,需设置Kernel-Quirks-CustomSMBIOSGuid为True,PlatformInfo-UpdateSMBIOSMode为Custom。这两个quirk在未来可能会无法使用。

DEBUG和RELEASE

DEBUG版本可以极大地帮助调试启动问题,但是会增加一些明显的启动时间延迟。RELEASE版本引导时间短,但是在OpenCore中没有提供有用的调试信息,这使得故障排除更加困难。

从Clover转移

搭建引导

将下载的OpenCore压缩包解压,打开后将EFI文件夹复制到EFI分区下。

VBoxHfs和AudioDxe已和OpenCorePkg打包在一起,因此已经无需再额外下载AppleSupportPkg(同时该项目已经存档),只需下载OpenCorePkg和OcBinaryData即可。

复制Docs下的Sample.plist到EFI/OC,并更名为config.plist。若模拟2011年即以前的Mac机型,则复制SampleFull.plist。按照需求,将OpenCorePkg、OcBinaryData中的驱动放入Drivers文件夹,将OcBinaryData中Resources内的文件放入Resources文件夹。

开始时配置应尽量简单,建议初始配置如下。务必保证所有kexts均为最新版。完成文件放置后,根据配置文件详解部分,以Clover的config.plist为基础,配置OpenCore的config.plist。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
├── ACPI
├── Resources
│ └── OcBinaryData
├── Drivers
│ ├── HfsPlus.efi
│ └── OpenRuntime.efi
├── Kexts
│ ├── Lilu.kext
│ ├── VirtualSMC.kext
│ └── WhateverGreen.kext
├── Tools
│ ├── ChipTune.efi
│ ├── ...
│ └── VerifyMsrE2.efi
├── OpenCore.efi
└── config.plist
【进阶】Drivers的选择

对于UEFI机器,使用以下驱动即可。

1
2
HfsPlus
OpenRuntime

对于BIOS机器则需要以下驱动。

1
2
3
OpenUsbKbDxe
HfsPlusLegacy
OpenPartitionDxe # OpenDuet用户(即没有 UEFI)将内置此驱动程序,仅在10.7-10.9使用

对于使用32位CPU的机器,还需要HfsPlus32,下载链接如下。

1
https://github.com/acidanthera/OcBinaryData/blob/master/Drivers/HfsPlus32.efi
【进阶】OpenRuntime的说明

若使用OpenRuntime,且想获得和AptioMemoryFix类似的行为,需要使用以下Quirks。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
ProvideConsoleGop(UEFI Quirk)
AvoidRuntimeDefrag
DiscardHibernateMap
EnableSafeModeSlide

ForceExitBootServices

ProvideCustomSlide


// 需根据机型自行尝试是否启用
SyncRuntimePermissions
SetupVirtualMap
ProtectMemoryRegions
EnableWriteUnprotector
RebuildAppleMemoryMap


// 可选,建议启用
DevirtualiseMmio
ProtectUefiServices

// 可选,不建议启用
DiscardHibernateMap
ForceExitBootServices

kexts转移

OpenCore支持Clover下使用的大部分kexts,但有部分kexts已经被集成,具体如下。

名称 备注
NullCPUPowerManagement 整合到Kernel-Emulate-DummyPowerManagement
BT4LEContinuityFixup 整合到Kernel-Quirks-ExtendBTFeatureFlags

消除冲突

打开终端并输入以下命令。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# 删除Clover设置面板
sudo rm -rf /Library/PreferencePanes/Clover.prefPane

# 删除ESP分区下的NVRAM.plist
rm -rf /Volumes/[ESP分区]/NVRAM.plist

# 删除RC脚本
rm -rf "/etc/rc.clover.lib"
rm -rf "/etc/rc.boot.d/10.save_and_rotate_boot_log.local"
rm -rf "/etc/rc.boot.d/20.mount_ESP.local"
rm -rf "/etc/rc.boot.d/70.disable_sleep_proxy_client.local.disabled"
rm -rf "/etc/rc.boot.d/80.save_NVRAM_plist.local"
rm -rf "/etc/rc.shutdown.local"
rm -rf "/etc/rc.boot.d"
rm -rf "/etc/rc.shutdown.d"

# 删除Clover新开发的NVRAM守护程序CloverDaemonNew
launchctl unload '/Library/LaunchDaemons/com.slice.CloverDaemonNew.plist'
rm -rf '/Library/LaunchDaemons/com.slice.CloverDaemonNew.plist'
rm -rf '/Library/Application Support/Clover/CloverDaemonNew'
rm -rf '/Library/Application Support/Clover/CloverLogOut'
rm -rf '/Library/Application Support/Clover/CloverWrapper.sh'

# 获取logoutHook路径并删除LogoutHook.command
sudo defaults read com.apple.loginwindow LogoutHook
sudo rm -rf $(sudo defaults read com.apple.loginwindow LogoutHook)

# 清空LogoutHook的触发设置
sudo defaults delete com.apple.loginwindow LogoutHook

完成后可重启并重置一次NVRAM,然后通过OpenCore引导,查看是否成功。

若成功,则可复制Clover的kext到Kexts文件夹,并继续以下操作完善。若由于SSDT/DSDT而无法进入系统,即应当通过以下操作修复。

修改SSDT/DSDT

由于OpenCore中的SSDT、DSDT、SMBIOS等将会对所有操作系统生效,因此需要修改SSDT和DSDT以使其只对Mac生效。具体方法为在代码生效部分加上以下框架。

1
2
3
4
If (_OSI ("Darwin"))
{
// 原本的代码
}

若不是自己编写的SSDT,可直接用OC-little包中的SSDT替换。

修改后的文件在各引导器通用。为验证效果,将修改过的SSDT和DSDT放回Clover中,重启后在终端输入以下命令。如果日志中不存在ACPI Error,则修改成功,可将文件复制到OpenCore的ACPI文件夹。

1
log show --last boot | grep -Ei "ACPI"

摆脱ACPI Quirks

OpenCore没有Clover众多的ACPI Quirks,需要通过相关SSDT实现,列表如下。

ACPI Quirks 取代方法
FixIPIC OC-little声卡IRQ补丁中的SSDT-IPIC
FixSBUS OC-little注入设备中的SBUS_SMBU补丁(或SSDT-SBUS-MCHC)
FixShutdown OC-little的PTSWAK综合补丁,需要添加其中的EXT1插件补丁
或应用_PTS到ZPTS补丁并使用FixShutdown-USB-SSDT
FixDisplay 使用WhateverGreen和定制缓冲帧补丁
FixIPIC 使用SSDTTime的FixHPET-Patch out IRQ Conflicts
FixAirport 使用AirportBrcmFixup
AddMCHC OC-little添加缺失的设备中的SSDT-MCHC/SSDT-SBUS-MCHC
FixHDA AppleALC能够处理这个问题
FakeLPC 配置文件中DeviceProperties-Add-PciRoot…-device-id
FixHPET/FixRTC/FixTMR OC-little声卡IRQ补丁中的SSDT-HPET_RTC_TIMR-fix
或SSDTTime的FixHPET-Patch out IRQ Conflicts
FixSATA 开启OpenCore中名为ExternalDiskIcons的Quirk,也可使用innie.kext
FixADP1 见下方说明
FixRTC OC-little的声卡IRQ补丁
FixTIMR OC-little的声卡IRQ补丁
AddPNLF OC-little注入设备中的PNLF注入方法(SSDT-PNLF)
AddIMEI 使用WhateverGreen或SSDT-SBUS-MCHC
对于Z77上的Sandy Bridge或Z67上的IvyBridge,需用SSDT-IMEI仿冒IMEI
FixIntelGfx 使用WhateverGreen
AddHDMI 使用WhateverGreen
DropTables 配置文件中ACPI-Delete
DisableASPM 在设备属性(DeviceProperties)中分别添加相关设备的PCI总线位置并注入属性pci-aspm-default | DATA | <00>
HaltEnabler 配置文件中ACPI-Quirks-FadtEnableReset设为True
PluginType OC-little注入X86中的SSDT-PLUG补丁
NeverHibernate 配置文件中Misc-Boot-HibernateMode-None
Generate P/C States 六代以前CPU才需要设置,可用ssdtPRGen.sh生成对应的SSDT
降压和超频 使用sVoltageShift
AFGLowPowerState 在设备属性(DeviceProperties)中注入属性AFGLowPowerState | DATA | <01000000>
ResetHDA 安装JackFix以及配套的守护进程
flagstate 若设置为0,则在配置文件中的NVRAM-Add-4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14添加flagstate | Data | <00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000>
UIScale 可设置为1/2,在配置文件中的NVRAM-Add-4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14添加UIScale | Data | <01(02)>
CPU Type 配置文件中PlatformInfo-Generic-ProcessorType
HWPEnable 使用HWPEnable.kext,手动设置MSR 0x770
ForceHPET 配置文件中UEFI-Quirks-ActivateHpetSupport

对于FixADP1,可直接执行重命名change AC0_ to ADP1。根据原始DSDT中对AC0_设备的定义,可能还需要用SSDT为ADP1设备注入Name (_PRW, Package (0x02) {0x1C,0x03}),SSDT代码如下。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
DefinitionBlock ("", "SSDT", 2, "SUKA", "FixADP1", 0x00001000)
{
External (_SB_.ADP1, DeviceObj)
External (_SB_.AC0_, DeviceObj)
If (_OSI ("Darwin"))
{
Scope (\_SB)
{
Device (ADP1)
{
Name (_ADR, Zero)
Name (_PRW, Package (0x02) {
0x1C,
0x03
})
Method (_STA, 0, NotSerialized)
{
Return (0x0F)
}
}
}
}
}

也可不进行重命名,直接使用以下SSDT。注意该SSDT已注入Name (_PRW, Package (0x02) {0x1C,0x03})。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
DefinitionBlock ("", "SSDT", 2, "SUKA", "FixADP1", 0x00001000)
{
External (_SB_.ADP1, DeviceObj)
External (_SB_.AC0_, DeviceObj)
If (_OSI ("Darwin"))
{
Scope (\_SB)
{
Scope (AC0_)
{
Method (_STA, 0, NotSerialized)
{
Return (Zero)
}
}

Device (ADP1)
{
Name (_ADR, Zero)
Name (_PRW, Package (0x02) {
0x1C,
0x03
})
Method (_STA, 0, NotSerialized)
{
Return (0x0F)
}
}
}
}
}
【进阶】对于以上SSDT的说明

以上SSDT用于在不使用更名补丁的情况下进行更名,模版如下。

1
https://github.com/dortania/OpenCore-Install-Guide/blob/master/extra-files/Rename-SSDT.dsl

修改补丁形式

KernelToPatch和KextToPatch在OpenCore中的条目与在Clover有所不同。

具体而言,在OpenCore中,InfoPlistPatch没有奇偶校验,MatchOS被替换为MinKernel和MaxKernel,TgtBridge被替换为Base。同时,KernelToPatch和KextToPatch都被放置于配置文件的Kernel-Patch下,需要使用Identifier标示是适用于Kernel还是Kext。若适用于Kernel,直接填写kernel即可。若适用于kext,则填写kext的标识符,如com.apple.iokit.IOGraphicsFamily

注意以下Quirk会应用对应的Patch。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# Kernel Patches
# Kernel-Quirks-AppleXcpmCfgLock
MSR 0xE2 _xcpm_idle instant reboot

# Kernel-Quirks-AppleXcpmExtraMsrs
_xcpm_bootstrap
xcpm_pkg_scope_msrs
_xcpm_SMT_scope_msrs 1
_xcpm_SMT_scope_msrs #2
_xcpm_core_scope_msrs
_xcpm_performance_patch
xcpm MSR Patch 1 and 2
/0x82D390/MSR_PP0_POLICY 0x63a xcpm support patch 1 and 2

# Kext Patches
# Kernel-Quirks-PanicNoKextDump
Disable Panic Kext logging

# Kernel-Quirks-ExternalDiskIcons
AppleAHCIPort External Icon Patch1

# Kernel-Quirks-ThirdPartyDrives
SSD Trim Enabler

# Kernel-Quirks-XhciPortLimit
USB Port Limit Patches

# AppleALC+WhateverGreen
FredWst DP/HDMI patch

# Kernel-Quirks-IncreasePciBarSize
IOPCIFamily Patch

# WhateverGreen
Disable board-ID check

# AppleALC
AppleHDA Patch

# NVMeFix
# High Sierra及更新系统无需该Patch
IONVMe Patches

引导更新

下载新的引导包后,覆盖EFI分区中的EFI/BOOT/BOOTx64.efi,EFI/OC/OpenCore.efi,EFI/OC/Drivers/OpenRuntime,并更新其它Drivers。

通过以下脚本比较新版配置文件与旧版的区别。

1
https://github.com/corpnewt/OCConfigCompare

也可在终端输入以下命令进行。

1
diff [文件1] [文件2] 

完成后可通过ocvalidate检查是否符合规范。在终端输入以下命令即可。

1
2
3
cd [OC文件夹路径]/Utilties/ocvalidate
chmod +x ocvalidate
./ocvalidate [配置文件名称]

配置文件生成

可通过工具自动生成。

1
2
3
4
5
# Opencore Gen-X
https://github.com/Pavo-IM/OC-Gen-X

# AXIVO OpenCore Plistlib Generator
http://github.com/axivo/opencore

配置文件详解

用Xcode或ProperTree打开config.plist,也可使用OpenCore Configurator。根据以下内容进行配置。

【进阶】ProperTree的Clean Snapshot功能

通过该功能,可将路径下的所有SSDT、Kexts和Drivers添加到路径中。

ACPI

对ACPI的修补按照Patch-Delete-Add-Quirks的顺序执行。所有对ACPI的更改会在所有操作系统上生效。

Add

此处需添加EFI/OC/ACPI下的DSDT/SSDT路径。以添加电池热补丁SSDT-BAT0.aml为例,格式如下。

选项 设置 说明
Comment Battery 注释(可不填)
Enabled True 启用/禁用
Path SSDT-BAT0.aml DSDT/SSDT路径

注意应把DSDT放到最前面,而SSDT的顺序一般可以随意。

Delete

禁用某个ACPI表,常用于禁用DAMR来关闭VT-d,一般无需修改。

当序列需要在多处替换的时候,注意不要指定表的签名。

选项 说明
All 设置为true则所有符合条件的ACPI表都会被舍弃,否则只舍弃第一个匹配到的
Comment 注释(可不填)
Enabled 启用/禁用
OemTableId 将表的OEM ID匹配为此处所填的值,全部为0时忽略
TableLength 将表的大小匹配为此处所填的值,填0时忽略
TableSignature 将表的签名匹配为此处的值,全部为0时忽略
Patch

对DSDT(SSDT)的内容进行查找和替换,相当于Clover里的改名补丁。Find和Replace的长度必须完全一样,否则ACPI表可能会被破坏、导致系统不稳定。必要时可使用NOP填充剩余区域。

如EC0->EC补丁,书写格式如下。

选项 设置 说明
Base / 为重命名补丁指定一个ACPI路径,让OC通过取得该路径的偏移量来查找(或替换)重命名补丁,留空时忽略。只有正确的绝对路径被支持,如\_SB.PCI0.LPCB.HPET,目前支持的Object类型有Device、Field、Method
BaseSkip / 在重命名补丁被应用之前跳过多少次Base指定的路径,如果将此值设置为0,补丁将会被应用于指定Base中的所有匹配
Comment change EC0 to EC Comment
Count 0 执行次数(0代表不限制)
Enabled True 启用/禁用
Find 4543305F 寻找的十六进制内容
Limit 0 要搜索的最大字节数(0代表遍历整个ACPI表)
Mask / 查找比较期间使用的数据按位掩码,通过忽略未屏蔽(设置为零)位来进行模糊搜索。可以设置为空数据以忽略,否则此值的长度必须和Replace的长度相等
OemTableId / 将表的OEM ID匹配为此处所填的值,全部为0时忽略
Replace 45435F5F 替换为的十六进制内容
ReplaceMask / 替换数据期间使用的数据按位掩码,通过忽略未屏蔽(设置为零)位来进行模糊搜索。可以设置为空数据以忽略,否则此值的长度必须和Replace的长度相等
Skip 0 跳过前N个,0表示不跳过
TableLength 0 将表的大小匹配为此处所填的值,填0时忽略
TableSignature / 将表的签名匹配为此处的值,全部为0时忽略

通过Count和Skip的应用,可以达成Clover下Tgtbridge的效果。具体而言,若想将DSDT中的某一特定字段重命名,则可在Skip下填写在该字段之前有多少个同名字段,在Count下填写该改名规则需执行几次。如现需将DSDT中的第54和55个_PRW改为XPRW,则Skip填53,Count填2。

对于华擎、华硕、微星主板,可能会遇到RTC问题而无法进入系统。此时可应用以下补丁。

选项 设置
Comment RTC fix
Count 0
Enabled True
Find A00A9353 54415301
Limit 0
Mask /
OemTableId /
Replace A00A910A FF0BFFFF
ReplaceMask /
Skip 0
TableLength 0
TableSignature /
Quirks
选项 设置 说明
FadtEnableReset NO 在FADT表中提供寄存器复位标志,用于在旧硬件上修复重启和关机(如果遇到关机变重启可尝试打开,非必要不启用)
NormalizeHeaders NO 清除ACPI头字段以解决macOS ACPI实现错误导致的引导崩溃(macOS 10.13/某些主板需要打开)
RebaseRegions NO 尝试试探性地重新定位ACPI内存区域,使用自定义DSDT则必须开启(换硬件、升级BIOS等对硬件的操作会对ACPI表产生影响)
ResetHwSig NO 将FACS表中HardwareSignature的值重置为0,休眠相关(重启后因无法维持硬件签名而导致从休眠中唤醒的硬件需要开启,台式机不需要)
ResetLogoStatus NO 将BGRT表中Displayed状态字段重置为 false,适用于提供BGRT表、但随后无法处理屏幕更新的固件,无法在有BGRT表的系统上显示OEM Windows标志的硬件需要开启

Booter

MmioWhitelist

描述在启用DevirtualiseMmio这个Quirk时特定固件能够运作的关键地址。

默认的第一项是为Haswell芯片提供的内存寻址修复,第二项是ACPI、PCI device同时释放到内存时发生0x1000内存地址被占用而卡在PCI Configration的问题修复。一般无需修改,如果开机卡在PCI…可以尝试开启Item 1下的Patch。

选项 说明
Address 排除在外的MMIO地址,其内存描述符应被DevirtualiseMmio虚拟化(保持不变),该值所在的区域会被分配一个虚拟地址,在操作系统运行期间固件能够直接与该内存区域进行通信。这里写入的地址必须是内存映射的一部分,具有EfiMemoryMappedIO类型和EFI_MEMORY_RUNTIME属性(最高 bit),可使用调试日志找到可能的地址
Comment 注释(可不填)
Enabled 启用/禁用
Patch

在启动器中执行二进制补丁。

选项 说明
Arch 启动器补丁架构,可为Any/i386/x86_64
Comment 注释(可不填)
Count 执行次数(0代表不限制)
Enabled 启用/禁用
Find 要查找的数据,必须与Replace的大小相等
Identifier Apple代表macOS启动器(通常是boot.efi),带有后缀的名称(如 bootmgfw.efi)代表特定的启动器,Any或空字符串(默认)代表任何启动器
Limit 搜索的最大字节数,设置为0来查找整个启动器
Mask 在查找比较的过程中使用数据位掩码。允许通过忽略未被屏蔽的bit(设置为0)进行模糊搜索。若留空则代表忽略,否则其大小必须等于Find
Replace 一个或多个字节的替换数据
ReplaceMask 替换时使用的数据位掩码。允许通过更新掩码(设置为非0)来进行模糊替换。若留空则代表忽略,否则其大小必须等于Replace
Skip 在替换前要跳过的发现事件数
Quirks
选项 内容 说明
AllowRelocationBlock NO 允许通过重定位块来启动macOS,需要同时启用ProvideCustomSlide(必需)和AvoidRuntimeDefrag(通常情况下)。不兼容某些硬件及macOS 11,可能需要用EnableSafeModeSlide来替代
AvoidRuntimeDefrag YES 修复UEFI Runtime服务,提供对可变存储的支持(日期/时间/NVRAM/电源控制等)。除Apple和VMware固件外,都需要启用此选项
DevirtualiseMmio NO 从选定的MMIO区域中删除Runtime属性,通过删除已知内存区域的Runtime bit减少Stolen内存占用空间,扩大Slide=N值的范围,通常释放64-256MB的内存,具体数值会显示在调试日志中。若要添加slide=1以使用连续性的内存注入方式则关闭,不一定与目标主板兼容,通常对所有固件都有用(除了一些非常古老的固件,如Sandy Bridge)
DisableSingleUser NO 禁用单用户模式,更接近基于T2的计算机
DisableVariableWrite YES 禁止NVRAM写入,需要OpenRuntime.efi提供的OC_FIRMWARE_RUNTIME协议的实现,在Z390/HM370等没有原生macOS支持NVRAM的主板上需要开启
DiscardHibernateMap NO 开启后会重用原始休眠内存映射,强制XNU内核忽略新提供的内存映射、认定设备从休眠状态唤醒后无需对其更改。仅某些旧硬件需要(Insyde固件的Ivy Bridge笔记本电脑,如Acer V3-571G),引导Windows时必须启用(因为Windows要求S4唤醒后保留运行内存的大小和位置)
EnableSafeModeSlide NO 修补引导加载程序以在安全模式下启用KASLR,允许在安全模式下使用Slide值(默认情况下安全模式会使用slide=0),只有当ProvideCustomSlide启用后才可以启用本Quirks。启动到安全模式失败时启用
EnableWriteUnprotector YES 在执行期间删除CR0寄存器中的写入保护(WP bit),绕过其代码页的RX权限,保证NVRAM能正常写入而不受到UEFI内的一些服务的影响。需要配合OpenRuntime.efi里的OC_FIRMWARE_RUNTIME协议来实现,可能会破坏固件安全性,若固件支持内存属性表MAT,应优先使用RebuildAppleMemoryMap
ForceExitBootServices NO 在失败时用新的内存映射(Memory Map)重试ExitBootServices,确保ExitBootServices即使在MemoryMap发生更改时也能调用成功,让非常老旧的主板也能使用内存寻址(是否启用这个Quirk取决于是否遇到了Early Boot故障,非必要勿使用)
ProtectMemoryRegions NO 与AvoidRuntimeDefrag类似,保护内存区域免于不正确的读写(是否启用这一Quirk取决于是否遇到了休眠、睡眠无法唤醒、启动失败或其他问题,一般只有非常旧的固件才需要启用)
ProtectSecureBoot YES 保护UEFI安全启动被写入,尝试从操作系统写入db、dbx、PK和KEK时生成报告。避免碎片整理导致的NVRAM相关问题,如Insyde或MacPro5,1
ProtectUefiServices YES 保护UEFI服务不被固件覆盖。某些现代固件(包括硬件和 VMware 之类的虚拟机)可能会在加载驱动及相关操作的过程中,更新UEFI服务的指针,这一行为会直接破坏其他影响内存管理的Quirk,如DevirtualiseMmio、ProtectMemoryRegions、RebuildAppleMemoryMap。该Quirk解决Z390系列主板卡开机卡++++的问题(在VMware上是否需要开启这个Quirk取决于是否有Your Mac OS guest might run unreliably with more than one virtual core.这样的消息)
ProtectCsmRegion NO 开启后会用于修复人为制造和睡眠唤醒的问题(AvoidRuntimeDefrag已经修复了这个问题,故避免使用)
ProvideCustomSlide YES 为低内存设备提供自定义KASLR slide 值,如果Slide值存在冲突,此选项将强制macOS使用一个伪随机值,同时确保slide参数不会被传递给操作系统(遇到Only N/256 slide values are usable!时需要)
ProvideMaxSlide YES 当更大的KASLR slide值不可用时,手动提供最大KASLR slide值。当ProvideCustomSlide启用、并且随机化的slide落入不可用的范围时,如果出现随机的启动失败,则有必要开启这个Quirk
RebuildAppleMemoryMap NO 重新生成内存地图来匹配苹果系统,遇到内存问题导致无法开机时可尝试使用。与EnableWriteUnprotector存在冲突关系,若开启此项则需关闭另一项,同时此项需要与SyncRuntimePermissions搭配使用。根据是否遇到第一阶段启动失败决定是否启用这一Quirk,在支持内存属性表MAT的平台上使用,在使用OpenDuetPkg时一般不需要启用这个Quirk,但如果要启动macOS 10.6或更早的版本则可能需要启用
SetupVirtualMap YES 建立虚拟内存并对物理内存进行映射,将SetVirtualAddresses调用修复为虚拟地址(是否启用这个Quirk 取决于是否遇到了Early Boot故障,具有内存保护支持的新固件不支持该Quirk)
ShrinkMemoryMap NO 有巨大且不兼容内存映射的主板需要开启(非必要勿使用)
SignalAppleOS NO 通过OS Info将macOS加载的信息报告给其它操作系统。总是向OS Info报告启动的是macOS,适用于Mac设备,用于在Windows中启用iGPU
SyncRuntimePermissions NO 更新运行时环境的内存权限。通过更新内存映射和内存属性表修正硬件在注入内存时无法注入权限的问题。是否开启这一Quirk取决于是否遇到Early Boot故障,一般此类问题存在2018年后的主板

注意,当AvoidRuntimeDefrag不起作用时,可使用以下内核补丁。

类型
Comment String AvoidRuntimeDefrag workaround
Base String _acpi_count_enabled_logical_processors
Count Integer 1
Enabled Boolean True
Find Data
Identifier String Kernel
Limit Integer 0
Mask Data
MaxKernel String
MinKernel String 20.0.0
Replace Data B804000000C3
ReplaceMask Data
Skip Integer 0

DeviceProperties

Add

添加的属性只有在不存在且未被屏蔽的情况下才会被设置。

此处内容可以用Hackintool生成后直接复制,注意设备路径的修改。主要路径如下。

路径 用途
PciRoot(0x0)/Pci(0x1f,0x3) 注入音频Layout ID
PciRoot(0x0)/Pci(0x2,0x0) 注入缓冲帧补丁

主要属性列表如下。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# 硬盘
built-in

# USB
device-id
device_type
device_type

# IMEI
device-id
vendor-id

# WIFI
name
compatible

# LAN
device-id
compatible
vendor-id

# XHCI
device-id
device_type: UHCI
device_type: OHCI
device_type: EHCI
## 以下适用于device_type: EHCI
device-id
AAPL,current-available
AAPL,current-extra
AAPL,current-available
AAPL,current-extra
AAPL,current-in-sleep
built-in
## 以下适用于device_type: XHCI
device-id
AAPL,current-available
AAPL,current-extra
AAPL,current-available
AAPL,current-in-sleep
built-in

可通过设置外置硬盘的build-in属性为00以设置为内建。其中外置硬盘的设备路径可以通过gfxutil找到,具体为在系统PCI列表中找到类似AHCI Controller或NVM Express Controller的PCI名称,然后输入以下命令。

1
2
# pci0000,0000为上面找到的PCI名称
gfxutil -f pci0000,0000

添加该条目,并设置以下键即可。

类型
built-in Data AA==
Delete

删除/屏蔽设备属性,等同于Clover里的ACPI重命名_DSM→XDSM=>TgtBridge。一般无需修改。

常见属性
属性 说明
device-id 设备标识符
vendor-id 供应商标识符
AAPL,ig-platform-id Intel GPU缓冲帧标识符,用于在Ivy Bridge上选择缓冲帧区域
AAPL,snb-platform-id Intel GPU缓冲帧标识符,用于在Sandy Bridge上选择缓冲帧区域
layout-id AppleHDA的音频布局

Kernel

Add

此处需要填写kexts的具体内容,OpenCore会按照顺序执行,故需确保Lilu.Kext始终在第一位。其他优先级高的为Lilu的插件,如VirtualSMC、AppleALC、WhateverGreen等。

若不知道kexts的加载顺序或加载内容,可在Clover Configuration中选择boot.log选项卡,并点击Generate log生成启动日志,在日志中搜索对应kext即可。

也可以通过检查Kext驱动中Info.plist的OSBundleLibraries值的方法来确定其依赖驱动的加载顺序,OSBundleLibraries中的任何依赖驱动都必须在此Kext之前加载。

选项 内容 说明
Arch Any kext架构(Any/i386/x86_64)
BundlePath Lilu.kext kext的名称,对于直接位于EFI/OC/Kexts下的kext直接填写名字,对于某一个内核拓展的子拓展则填写具体路径
Comment 注释(可不填)
Enabled YES 启用/禁用
ExecutablePath Contents/MacOS/Lilu 隐藏在kext中的实际可执行文件的路径,可通过右键单击并选择显示包内容 查看,通常为 Contents/MacOS/[kext]),没有可执行文件的空壳kexts则留空(如USBPorts.kext)
MaxKernel 支持的最大系统版本(19为10.15,18为10.14),一般留空
MinKernel 支持的最小系统版本
PlistPath Contents/Info.plist 隐藏在kext中的Info.plist路径

当Plugins内有kexts时,需一并加载,格式如下。

选项 内容
BundlePath A.kext/Contents/PlugIns/B.kext
ExecutablePath Contents/MacOS/B
PlistPath Contents/Info.plist

此处需注意VoodooPS2Controller与VoodooI2C的注入。注入顺序如下,注意需放到kexts加载的最后。

1
2
3
4
5
6
7
8
9
10
VoodooPS2Controller.kext
VoodooPS2Controller.kext/Contents/PlugIns/VoodooInput.kext
VoodooPS2Controller.kext/Contents/PlugIns/VoodooPS2Keyboard.kext
VoodooPS2Controller.kext/Contents/PlugIns/VoodooPS2Mouse.kext
VoodooPS2Controller.kext/Contents/PlugIns/VoodooPS2Trackpad.kext
VoodooI2C.kext/Contents/PlugIns/VoodooGPIO.kext
VoodooI2C.kext/Contents/PlugIns/VoodooI2CServices.kext
VoodooI2C.kext/Contents/PlugIns/VoodooInput.kext // 需禁用该项,防止与VoodooPS2Controller中的VoodooInput冲突
VoodooI2C.kext
VoodooI2CHID.kext
Block

屏蔽系统里的kext。

选项 内容 说明
Arch Any kext架构(Any/i386/x86_64)
Comment 注释(可不填)
Enabled YES 启用/禁用
Identifier Kext Bundle标识符
MaxKernel 支持的最大系统版本(19为10.15,18为10.14),一般留空
MinKernel 支持的最小系统版本

在Identifier中输入kext的捆绑包标识符即可,一般为com.apple.driver.[kext],可在关于本机-系统报告…-功能扩展中查到。部分kext的捆绑包标识符如下。

名称 捆绑包标识符 备注
AppleIntelLpssI2C com.apple.driver.AppleIntelLpssI2C
AppleIntelLpssI2CController com.apple.driver.AppleIntelLpssI2CController
AppleRTC com.apple.driver.AppleRTC 禁用RTC关机校验(Base为__ZN8AppleRTC14updateChecksumEv)
Emulate

一般无需使用。

EAX、EBX、ECX、EDX值的序列,用来取代XNU内核中的CPUID(1)调用。通常来讲只需要处理EAX的值,因为它代表完整的CPUID,剩余的字节要留为0。

用于对不支持的CPU型号启用支持(如奔腾、赛扬),或对不支持的CPU Variant启用XCPM支持,或对电源管理不支持(比如虚拟机)的CPU型号启用支持。

选项 内容 说明
CpuidMask FF FF FF FF 00 00 00 00 00 00 00 00 00 00 00 00 化为二进制,某位为1代表该位数值需用CpuidData的对应数值替换,否则不需要
CpuidData C3 06 03 00 00 00 00 00 00 00 00 00 00 00 00 00 CPU的被仿冒位(填写时需要使用小端规则,即该示例对应的CPUID为0x0306C3)
DummyPowerManagement NO 禁用AppleIntelCpuPowerManagement原生电源管理,用于更好的替代NullCpuPowerManagement.kext,AMD CPU一般需要使用
MaxKernel 模拟CPUID,并在指定的或更低的macOS版本上使用DummyPowerManagement
MinKernel 模拟CPUID,并在指定的或更高的macOS版本上使用DummyPowerManagement

仿冒示例如下。

选项 内容
Haswell-E(0x0306F2) to Haswell(0x0306C3)
CpuidMask FF FF FF FF 00 00 00 00 00 00 00 00 00 00 00 00
CpuidData C3 06 03 00 00 00 00 00 00 00 00 00 00 00 00 00
Broadwell-E (0x0406F1) to Broadwell (0x0306D4)
CpuidMask FF FF FF FF 00 00 00 00 00 00 00 00 00 00 00 00
CpuidData D4 06 03 00 00 00 00 00 00 00 00 00 00 00 00 00
Force

如果内核驱动没有被缓存,则从磁盘强制加载内核驱动。

依赖其他驱动的驱动程序不能被缓存,该部分着重解决了这种驱动程序注入的难点。这个问题会映像到旧的操作系统,在旧的操作系统中存在各种依赖性的Kext,比如IOAudioFamily和IONetworkingFamily,可能默认不存在于内核缓存中。内核驱动的加载是有顺序的,因此依赖驱动应该排在前面。

Force的驱动不会被检查,因此,使用安全启动时不应使用此功能。此功能可能无法在较新的操作系统的加密分区上工作。

选项 内容 说明
Arch Any kext架构(Any/i386/x86_64)
BundlePath System/Library/Extensions/IONetworkingFamily.kext kext路径
Comment 注释(可不填)
Enabled YES 启用/禁用
ExecutablePath Contents/MacOS/IONetworkingFamily 隐藏在kext中的实际可执行文件的路径
Identifier com.apple.iokit.IONetworkingFamily kext 标识符
MaxKernel 支持的最大系统版本(19为10.15,18为10.14),一般留空
MinKernel 支持的最小系统版本
PlistPath Contents/Info.plist 隐藏在kext中的Info.plist路径
Patch

用于添加系统内核补丁、Kext补丁、AMD CPU补丁等,等同于Clover的KextToPatch和KernelToPatch。默认的第一、二项用于修复Apple RTC,若华硕主板出现RTC错误而无法开机,可以尝试打开这两个中的其中一个(一次只用一个)以修复华硕主板重启丢失BIOS设置以及需要按F1跳过安全模式的问题。

选项 内容 说明
Arch Any kext架构(Any/i386/x86_64)
Base / 通过获取所提供的Symbol名称的地址来选择Symbol匹配的Base进行补丁查找(或直接替换),可设置为空字符串以忽略
Comment Comment
Count 0 执行次数(0代表不限制)
Enabled True 启用/禁用
Find 寻找的十六进制内容。可留空,在Base处直接替换。若不留空,其大小必须等于Replace
Identifier Kext Bundle标识符
Limit 要搜索的最大字节数(0代表遍历整个ACPI表)
Mask / 查找比较期间使用的数据按位掩码,通过忽略未屏蔽(设置为零)位来进行模糊搜索。可以设置为空数据以忽略,否则此值的长度必须和Replace的长度相等
MaxKernel 支持的最大系统版本(19为10.15,18为10.14),一般留空
MinKernel 支持的最小系统版本
Replace 替换为的十六进制内容
ReplaceMask / 替换数据期间使用的数据按位掩码,通过忽略未屏蔽(设置为零)位来进行模糊搜索。可以设置为空数据以忽略,否则此值的长度必须和Replace的长度相等
Skip 0 跳过前N个,0表示不跳过
Quirks
选项 内容 说明
AppleCpuPmCfgLock NO 禁用AppleIntelCPUPowerManagement.kext中的PKG_CST_CONFIG_CONTROL (0xE2)修改,从而避免早期Kernel Panic。若设备的CFG-Lock开启则设置为YES(尽可能用Grub关闭BIOS的CFG-Lock以避免开启,与Clover的AppleIntelCPUPM对应)
AppleXcpmCfgLock NO 禁用XNU内核对PKG_CST_CONFIG_CONTROL (0xE2)修改,从而避免早期Kernel Panic。若设备的CFG-Lock开启则设置为YES,10.7及更旧系统无需使用(与Clover的KernelPM对应)
AppleXcpmExtraMsrs NO 对于没有XCMP支持的设备,禁用对选定CPU的多MSR访问。通常将其与Haswell-E/Broadwell-E/Skylake-SP和类似CPU的Emulate结合使用,10.7及更旧系统无需使用(与Clover的KernelXCPM对应)
AppleXcpmForceBoost NO 强制拉高睿频,建议在长期高负载的专业设备上使用,Xeon系列的处理器开启这个选项会受益,10.7及更旧系统无需使用
CustomSMBIOSGuid NO 对UpdateSMBIOSMode自定义模式执行GUID修补,用于戴尔笔记本电脑(等同于Clover的DellSMBIOSPatch)
DisbaleIOMapper NO 禁用XNU(VT-d)中的IOMapper支持,需要绕过VT-d且BIOS中无法禁用时使用,10.7及更旧系统无需使用(相比直接在ACPI表中删除DMAR的做法,本Quirk更好)
DisableLinkeditJettison NO 禁止丢弃__LINKEDIT,让Lilu.kext和其他一些功能以最佳性能运行,而不需要keepsyms=1启动参数,适用于11及更高系统
DisableRtcChecksum NO 越过两条RTC检查0x58及0x59(一般卡RTC应当先使用RTCMemoryFixup.kext而非开启该项,https://github.com/acidanthera/RTCMemoryFixup)
ExtendBTFeatureFlags NO 将FeatureFlags设置为0x0F,以实现蓝牙的全部功能(包括连续互通功能),用于替代BT4LEContinuityFixup.kext,适用于10.8及更高系统
ExternalDiskIcons NO 硬盘图标补丁,修补AppleAHCIPort.kext图标,使macOS将所有AHCI存储设备显示为内部硬盘(macOS将内部硬盘视为外接硬盘时使用,对于Z87及以下版本的NVMe,只需通过DeviceProperties添加内置属性)
ForceSecureBootScheme NO 强制采用x86方案进行IMG4核查,在虚拟机上使用x86legacy以外的SecureBootModel时需要开启此选项,适用于11及更高系统
IncreasePciBarSize NO 将IOPCIFamily中32位PCI Bar的大小从1GB增加到4GB,适用于10.10及更高系统(在BIOS中启用Above4GDecoding是一种更加干净和安全的方法,某些X99板可能需要开启,这些主板通常会在IOPCIFamily上遇到内核崩溃)
LapicKernelPanic NO 禁用由AP核心lapic中断造成的内核崩溃,通常用于惠普电脑,适用于10.6(64-bit)及更高系统(等同于Clover的KernelLapic)
LegacyCommpage NO 默认的64位commpage bcopy的实现需要SSSE3,这个选项把它替换为不需要SSSE3的实现,防止因不存在不需要SSSE3的64位bcopy 函数而导致的commpage no match for last Panic,适用于10.4-10.6
PanicNoKextDump YES 在发生内核崩溃时阻止输出Kext列表,适用于10.13及更高系统(与Clover的PanicNoKextDump对应)
PowerTimeoutKernelPanic YES 修复macOS Catalina中由于设备电源状态变化超时而导致的内核崩溃,适用于10.15及更高系统(相当于启动参数setpowerstate_panic=0)
SetApfsTrimTimeout -1 为SSD上的APFS文件系统设置微秒级的trim超时时间,可通过设置为一个非常高的值如4294967295以确保所有区块均被trim处理,或设置一个非常低的值如999以禁止trim操作,适用于10.14及更高系统
ThirdPartyDrives NO 修补IOAHCIDeleteStorage.kext,以在第三方驱动器启用TRIM、硬盘休眠等功能,适用于10.6及更高系统(NVMe SSD通常无需这一修改,AHCI SSD,如SATA SSD可使用trimforce)
XhciPortLimit NO 修补AppleUSBXHCI.kext、AppleUSBXHCIPCI.kext、IOUSBHostFamily.kext以移除15端口限制,适用于10.11及更高系统(不建议依赖,建议定制USB)
Scheme

通过参数来定义内核空间的操作模式,对于旧版macOS操作系统尤为重要。

FuzzyMatch

使用校验值不同的kernelcache。

在10.6和更早的版本中,kernelcache文件名有一个校验值,由于ACPI或硬件的特殊性,UEFI和macOS的EfiBoot设备路径不同,使得kernelcache的校验和总是不同。这一设置可以在无后缀的kernelcache不可用时,将最新的kernelcache与合适的架构进行匹配,从而提高10.6在多个平台上的启动性能。

KernelArch

优先选择指定的内核架构,选项如下。按x86_64、i386、i386-user32顺序选择参数可以获得最佳的架构支持。

不支持用热键3+2和6+4来选择偏好架构,因为这个热键由EfiBoot处理,很难正确地检测到。

选项 含义
Auto 自动选择
i386 32位内核
i386-user32 32位内核,并在64位处理器上强制使用32位用户空间,对应-legacy内核启动参数(对于64位固件上运行的10.4和10.5系统不可用,一般用于不支持SSSE3指令集的64位处理器如奔腾,因为macOS默认64位处理器支持SSSE3)
x86_64 64位内核
KernelCache

优先选择指定的内核缓存(Kernel Cache)类型,可为Auto、Cacheless、Mkext、Prelinked。

可用内核缓存类型及其当前在OpenCore中的支持情况列表如下。

系统版本 i386 NC (NoCache) i386 MK (Mkext) i386 PK (Prelinked) x86_64 NC (NoCache) x86_64 MK (Mkext) x86_64 PK (Prelinked) x86_64 KC
10.4-10.5 YES YES (V1) NO (V1) - - - -
10.6 YES YES (V2) YES (V2) YES YES (V2) YES (V2) -
10.7 YES - YES (V3) YES - YES (V3) -
10.8-10.9 - - - YES YES (V3) -
10.10-10.15 - - - - - YES (V3) -
11+ - - - - - YES (V3) YES

Misc

BlessOverride
选项 内容 说明
Item 0(String) \EFI\Microsoft\Boot\bootmgfw.efi 用于覆盖Windows的bootmgfw.efi的位置,以便识别Windows引导项,OpenCore和Windows的引导文件在同一硬盘的同一ESP分区下时使用
Item 1(String) \EFI\debian\grubx64.efi 用于Debian引导
Boot
总述
选项 内容 说明
ConsoleAttributes 0 给引导选择界面添加特效,填入字体颜色和背景颜色的值的16进制之和
HibernateMode None 与系统内的休眠模式配合,引导进系统会还原休眠前的状态,会影响SSD寿命(None-关闭休眠支持,Auto-自动检测RTC和NVRAM模式,RTC-从RTC检测,NVRAM—从NVRAM检测)
HideAuxiliary YES 隐藏辅助条目,包括macOS恢复分区、在自定义引导项时定义为Auxiliary的引导项、在 Tools中添加的工具(如Clean NVRAM)、macOS时间机器分区
LauncherOption Disabled 在固件偏好设置中注册启动器选项(Disabled-禁用,Full-在UEFI变量存储中创建或更新最高优先级的启动项,必须同时开启RequestBootVarRouting,Short-创建一个短的、非完整的启动项,对于某些无法处理完整设备路径的固件如Insyde很有用)
LauncherPath Default LauncherOption的启动引导路径(Default-引导OpenCore.efi,其它路径如\EFI\Launcher.efi可用来提供自定义加载器)
PickerAttributes 0 设置开机引导菜单的属性(0x0004-简化主题图标下的文字,0x0008-使用老式的图标)
PickerAudioAssist NO 朗读屏幕上选择项的内容
PollAppleHotKeys NO 允许在引导过程中使用苹果原生快捷键Modifier Hotkey(需要与Quirk中KeySupport=Yes或UsbKbDxe.efi结合使用,具体体验取决于主板固件,可能会导致选择分区时卡住)
ShowPicker YES 显示OpenCore的UI,用于查看可用引导项(可以在启动时按住OPT键或连续点按Escape来实现)
TakeoffDelay 0 在启动前延迟n毫秒,提升键盘快捷键识别的正确率,比如启动到恢复模式(n的有效范围为5000-10000,32bit以内的正整数)
Timeout 0 设置引导项等待时间(0为关闭倒计时,相当于Clover的-1),设置为NO可以跳过倒计时
PickerMode Builtin 使用OpenCore的默认GUI(External-使用其它GUI,Apple-使用原生GUI,黑苹果不支持)
PickerVariant Auto 选择启动管理器所使用的图标集(Auto—基于DefaultBackground的设置自动选择相应的图标集,Default—常规图标集,无前缀,Old—复古图标集,文件名有Old前缀,Modern—新颖图标集,文件名有Modern前缀,其他值—自定义图标集,需要在Resources中添加相应图标集)
ConsoleMode Max 设置控制台模式为最大允许分辨
ConsoleBehaviourOs ForceGraphics 修复OC引导界面
ConsoleBehaviourUi ForceText 修复OC引导界面
HideSelf NO 在OpenCore的启动选择中隐藏自身EFI分区的启动项
Resolution 1920x1080 屏幕的最大分辨率
ConsoleAttributes

ConsoleAttributes的颜色代码含义如下。

颜色代码 宏定义 指代颜色
字体颜色
0x00 EFI_BLACK
0x01 EFI_BLUE
0x02 EFI_GREEN 绿
0x03 EFI_CYAN
0x04 EFI_RED
0x05 EFI_MAGENTA 品红
0x06 EFI_BROWN
0x07 EFI_LIGHTGRAY 浅灰
0x08 EFI_DARKGRAY 深灰
0x09 EFI_LIGHTBLUE 浅蓝
0x0A EFI_LIGHTGREEN 浅绿
0x0B EFI_LIGHTCYAN 浅青
0x0C EFI_LIGHTRED 浅红
0x0D EFI_LIGHTMAGENTA 浅品红
0x0E EFI_YELLOW
0x0F EFI_WHITE
背景颜色
0x00 EFI_BACKGROUND_BLACK
0x10 EFI_BACKGROUND_BLUE
0x20 EFI_BACKGROUND_GREEN 绿
0x30 EFI_BACKGROUND_CYAN
0x40 EFI_BACKGROUND_RED
0x50 EFI_BACKGROUND_MAGENTA 品红
0x60 EFI_BACKGROUND_BROWN
0x70 EFI_BACKGROUND_LIGHTGRAY 浅灰
PickerAttributes

PickerAttributes可以用属性掩码来设置引导菜单的不同属性,其中掩码包含OpenCore 的预留值(BIT0-BIT15)和OEM特定值(BIT16-BIT31)。

预留值0x0001为OC_ATTR_USE_VOLUME_ICON,表示为启动项提供自定义图标。OpenCore会优先加载以下自定义图标,不存在时回退到默认图标。启用此功能后可能会难以区分外部可移除硬盘和内部不可移除硬盘的图标。

选项 自定义图标路径
Tools
ResetNVRAM Resources\Image\ResetNVRAM.icns
其它工具 Tools<TOOL_RELATIVE_PATH>.icns
Entries
启动项 .icns
其它
APFS卷宗 .VolumeIcon.icns(置于Preboot卷宗目录下-置于Preboot根目录下)
其他文件系统 .VolumeIcon.icns(置于其卷宗根目录下)

预留值0x0002为OC_ATTR_USE_DISK_LABEL_FILE,表示为启动项的标题提供自定义渲染。预渲染标签可用disklabel实用工具或bless命令来生成。当预渲染标签被禁用或者缺失时,将以文本标签.contentDetails/.disk_label.contentDetails代为渲染。

预渲染标签 说明
.disk_label(.disk_label_2x) 与bootloader文件放在同一目录,适用于所有文件系统
.lbl(.l2x) 与工具文件放在同一目录,适用于Tools

预留值0x0004为OC_ATTR_USE_GENERIC_LABEL_IMAGE,表示为没有自定义条目的启动项提供预定义的标签图像。

预留值0x0008为OC_ATTR_HIDE_THEMED_ICONS,表示优先选择特定图标集的图标,以配合主题风格,比如可以强制显示特定图标集内置的Time Machine图标。需要同时启用OC_ATTR_USE_VOLUME_ICON。

预留值0x0010为OC_ATTR_USE_POINTER_CONTROL,表示在启动选择器中启用指针控制,如可利用鼠标或触摸板来控制UI元素。

PollAppleHotKeys

已知的Modifier Hotkey如下。

按键 说明
CMD+C+MINUS 禁用主板兼容性检查
CMD+K 从RELEASE版本的内核启动,类似于kcsuffix=release参数
CMD+R 从恢复分区启动
CMD+S 启动至单用户模式
CMD+S+MINUS 禁用KASLR slide,需要事先禁用SIP
CMD+V 启用-v
X 启动到第一个找到的Apple操作系统
Shift 启用安全模式
Debug

一般无需修改。若需开启Debug功能,建议使用DEBUG或NOOPT版本。

选项 内容 说明
AppleDebug NO 将boot.efi调试日志保存到OpenCore日志,适用于10.15.4及更高系统
ApplePanic NO 将Kernel Panic保存到OpenCore根分区
DisableWatchDog NO 某些固件启动操作系统的速度可能不够快(尤其是调试模式下),看门狗定时器会因此中止引导过程。此选项用来关闭看门狗定时器。若macOS在启动时卡在某些地方,可设置为YES以排除错误干扰
DisplayDelay 0 屏幕上打印每行输出之间的延迟
DisplayLevel 2147483714 与屏幕显示相关的EDK II调试级别的位掩码(总和),除非Target启用了控制台在屏幕上输出日志,否则屏幕上的调试输出将不可见。0为隐藏所有Debug信息,2147483714为在屏幕上显示所有Debug信息
SerialInit NO 执行串行端口初始化
SysReport NO 需要OpenCore DEBUG版,在EFI分区中保存系统报告(ACPI、SMBIOS和音频编解码器的调试信息,其中保存音频编解码器信息需要加载音频后端驱动)
Target 19 启用日志记录目标的位掩码(总和)。0为关闭日志记录,3为允许屏幕输出日志,19为允许屏幕输出UEFI变量日志,65为在ESP分区根目录生成日志文件但屏幕上不显示日志

DisplayLevel的内容含义如下。

内容 说明
0x00000001 DEBUG_INIT
0x00000002 DEBUG,NOOPT和RELEASE中的DEBUG_WARN
0x00000004 DEBUG_LOAD
0x00000008 DEBUG_FS
0x00000010 DEBUG_POOL
0x00000020 DEBUG_PAGE
0x00000040 DEBUG,NOOPT中的DEBUG_INFO
0x00000080 DEBUG_DISPATCH
0x00000100 DEBUG_VARIABLE
0x00000400 DEBUG_BM
0x00001000 DEBUG_BLKIO
0x00004000 DEBUG_NET
0x00010000 DEBUG_UNDI
0x00020000 DEBUG_LOADFILE
0x00080000 DEBUG_EVENT
0x00100000 DEBUG_GCD
0x00200000 DEBUG_CACHE
0x00400000 在自定义版本中的DEBUG_VERBOSE
0x80000000 DEBUG,NOOPT和RELEASE中的DEBUG_ERROR

一般开启0x00000002、0x00000040和0x80000000。0x00000002+0x00000040+0x80000000=0x80000042,转换为十进制为2147483714,填入此值即可。

Target的内容含义如下。

内容 说明
0x01 启用日志记录
0x02 启用屏幕调试
0x04 启用日志记录到Data Hub
0x08 启用串行端口日志记录
0x10 启用UEFI变量日志记录
0x20 启用非易失性UEFI变量日志记录
0x40 启用在ESP分区生成日志文件

一般开启0x01、0x02、0x10和0x40。0x01+0x02+0x10+0x40=0x53,转换为十进制为83,填入此值即可。

Entires

指定OpenCore无法自动找到的无规律引导路径。

选项 内容 说明
Arguments / 对该引导条目使用的引导参数
Auxiliary NO 隐藏引导项
Name CustomOS OpenCore启动项中显示的名称
Comment Not signed for security reasons 注释(可不填)
Enabled YES 启用/禁用
Path PciRoot(0x0)/Pci(0x1,0x1)/Pci(0x0,0x0)/NVMe(0x1,11-22-33-44-55-66-77-88)/HD(1,GPT,00000000-0000-0000-0000-000000000000,0x800,0x64000)/EFI/BOOT/BOOTX64.EFI 引导磁盘的PCI路径,可以通过OpenCoreShell 的map命令或在Clover引导项找到。也可添加Tools,直接输入在OC/Tools目录的文件名即可,如OpenShell.efi
RealPath NO 启动时将完整的路径传递给工具传递目录可能会使工具在没有检查文件完整性的情况下就意外地访问了文件,降低了安全性,因此通常应该禁用。需要启用该项的情况有:工具需要外部文件来正常工作;工具需要外部文件来更好地实现某些功能(如 memtest86 的记录和配置功能,Shell 自动执行脚本的功能)。此属性的开关仅对工具有效,对于引导项该属性始终为true)
TextMode NO 以文本模式而非图形模式运行条目。某些需要文本输出的旧工具需要用到此项。默认情况下所有工具都以图形模式启动
Security
总述
选项 内容 说明
AllowNvramReset YES 允许在引导选择界面和快捷键Cmd+Opt+P+R按下时重置NVRAM,重置NVRAM后未经过bless工具备份过的开机项(如Linux)会被全部删除,BootCamp Windows因为符合bless模型而不受影响。注意极少数笔记本(如Thinkpad X1 Extreme Gen2)重置NVRAM后可能会无法开机
AllowSetDefault YES 允许使用Ctrl+Enter和Ctrl+数字锁定默认启动项
ApECID 0 Apple Enclave标识符,设为非零值将允许使用个性化的Apple安全启动标识符,可取SystemUUID的前8个字节(该方法即为没有T2芯片的Mac的macOS 11的操作)。如果这个值设置妥当,并且SecureBootModel值有效且不是Disabled,那么就可以实现Apple安全启动的完整安全性
AuthRestart NO 启用与VirtualSMC兼容的authenticated restart,允许重启FileVault2分区时无需再次输密码(可在终端输入sudo fdesetup authrestart手动执行authenticated restart)
BlacklistAppleUpdate NO 忽略某些用于更新Apple外设固件的启动项(如MultiUpdater.efi)以禁用固件更新
DmgLoading Signed 定义用于macOS Recovery的DMG加载策略(Disabled-除Recovery分区外,不允许加载存储在com.apple.recovery.boot目录中的DMG磁盘映像,Signed-仅加载Apple签名的DMG磁盘映像,Any-任何DMG磁盘映像都会作为普通文件系统挂载,当激活了Apple安全启动时会导致启动失败)
EnablePassword NO 为敏感操作启用密码保护
ExposeSensitiveData 3 用于向操作系统暴露敏感数据的位掩码(总和),用NVRAM.plist则必须填3来为boot-path变量提供OpenCore EFI分区的UUID(2-原生NVRAM,11-在3的基础上添加主板OEM信息,HWMonitorSMC2和NVMeFix需要主板OEM信息才能正常工作)
HaltLevel 2147483648 EDK II调试级别的位掩码(总和),使CPU在获得HaltLevel消息后中止(停止执行)。可能的值与DisplayLevel值相匹配
PasswordHash all zero 密码使用的哈希值
PasswordSalt empty 密码使用的盐值(Salt)
Vault Optional OpenCore自身的加密和安全保护(Optional-不强制要求vault.plist和 vault.sig文件存在,不设置Vault,不安全,Basic-强制要求vault.plist存在,提供了基本的文件系统完整性验证,Secure-强制要求vault.sig签名文件和vault.plist存在)
ScanPolicy 0 定义操作系统检测策略,0表示允许扫描所有可用的硬盘,983299表示显示当前系统分区
SecureBootModel Default Apple安全启动的机型
BootProtect Bootstrap 保证opencore.efi的永久性,以免遭到其他操作系统对开机顺位的破坏(需保证RequestBootVarRouting开启),可设置为Bootstrap(新主板)、BootstrapShort(Haswell及更早主板)、None。升级OpenCore前建议设为None,升级完成后再设置为Bootstrap。每次启动都会在BIOS出现新的OpenCore引导项时,可使用BootstrapShort
RequireSignature NO 黑苹果的Vault加密方式
RequireVault NO 是否开启黑苹果加密
ExposeSensitiveData

位掩码如下。根据加载顺序,暴露的启动器路径指向OpenCore.efi或其引导器。

位掩码 含义
0x01 将可打印的引导器路径作为UEFI变量暴露出来
0x02 将OpenCore版本作为UEFI变量暴露出来
0x04 将OpenCore版本暴露在启动选择菜单的标题位置
0x08 将OEM信息作为一组UEFI变量暴露出来
ScanPolicy

对于ScanPolicy值,设为0可允许所有存在的源都启动,但通过简单的计算,可得到更大范围的灵活性与安全性。

计算ScanPolicy值时只需将所有十六进制值相加即可,全部累加后需要将此十六进制值添加到ScanPolicy(首先需要将其转换为十进制值,粘贴时Xcode会自动将其转换)。

位置 宏定义 含义
0x00000001 (bit 0) OC_SCAN_FILE_SYSTEM_LOCK 将扫描限制于仅扫描此策略定义的已知文件系统,已知文件系统的前缀为OC_SCAN_ALLOW_FS_
0x00000002 (bit 1) OC_SCAN_DEVICE_LOCK 将扫描限制于仅扫描此策略定义的已知设备类型,已知设备类型的前缀为OC_SCAN_ALLOW_DEVICE_
0x00000100 (bit 8) OC_SCAN_ALLOW_FS_APFS 允许扫描APFS文件系统
0x00000200 (bit 9) OC_SCAN_ALLOW_FS_HFS 允许扫描HFS文件系统
0x00000400 (bit 10) OC_SCAN_ALLOW_FS_ESP 允许扫描EFI系统分区文件系统
0x00000800 (bit 11) OC_SCAN_ALLOW_FS_NTFS 允许扫描NTFS文件系统
0x00001000 (bit 12) OC_SCAN_ALLOW_FS_EXT 允许扫描EXT文件系统
0x00010000 (bit 16) OC_SCAN_ALLOW_DEVICE_SATA 允许扫描SATA设备
0x00020000 (bit 17) OC_SCAN_ALLOW_DEVICE_SASEX 允许扫描SAS和Mac NVMe设备
0x00040000 (bit 18) OC_SCAN_ALLOW_DEVICE_SCSI 允许扫描SCSI设备
0x00080000 (bit 19) OC_SCAN_ALLOW_DEVICE_NVME 允许扫描NVMe设备
0x00100000 (bit 20) OC_SCAN_ALLOW_DEVICE_ATAPI 允许扫描CD/DVD和旧的SATA设备
0x00200000 (bit 21) OC_SCAN_ALLOW_DEVICE_USB 允许扫描USB设备
0x00400000 (bit 22) OC_SCAN_ALLOW_DEVICE_FIREWIRE 允许扫描FireWire设备
0x00800000 (bit 23) OC_SCAN_ALLOW_DEVICE_SDCARD 允许扫描读卡器设备

默认值为0xF0103,十进制为983299,是以下各项的组合。

1
2
3
4
5
6
7
OC_SCAN_FILE_SYSTEM_LOCK 
OC_SCAN_DEVICE_LOCK
OC_SCAN_ALLOW_FS_APFS
OC_SCAN_ALLOW_DEVICE_SATA
OC_SCAN_ALLOW_DEVICE_SASEX
OC_SCAN_ALLOW_DEVICE_SCSI
OC_SCAN_ALLOW_DEVICE_NVME

建议添加OC_SCAN_ALLOW_DEVICE_USB,变为0x00200000,转换为十进制为3080451。

SecureBootModel

选项如下。PlatformInfo和SecureBootModel是相互独立的,因此可以在任何SMBIOS上启用Apple安全启动。将SecureBootModel设置为除Disabled以外的任意有效值,相当于实现了Apple安全启动的中等安全性。如要实现完整安全性,还需要指定ApECID值。不建议同时使用ApECID和Default值。

选项 含义
Default 最近的可用型号,目前设置为j137
Disabled 无机型,禁用Apple安全启动
j137 iMacPro1,1 (December 2017). Minimum macOS 10.13.2 (17C2111)
j680 MacBookPro15,1 (July 2018). Minimum macOS 10.13.6 (17G2112)
j132 MacBookPro15,2 (July 2018). Minimum macOS 10.13.6 (17G2112)
j174 Macmini8,1 (October 2018). Minimum macOS 10.14 (18A2063)
j140k MacBookAir8,1 (October 2018). Minimum macOS 10.14.1 (18B2084)
j780 MacBookPro15,3 (May 2019). Minimum macOS 10.14.5 (18F132)
j213 MacBookPro15,4 (July 2019). Minimum macOS 10.14.5 (18F2058)
j140a MacBookAir8,2 (July 2019). Minimum macOS 10.14.5 (18F2058)
j152f MacBookPro16,1 (November 2019). Minimum macOS 10.15.1 (19B2093)
j160 MacPro7,1 (December 2019). Minimum macOS 10.15.1 (19B88)
j230k MacBookAir9,1 (March 2020). Minimum macOS 10.15.3 (19D2064)
j214k MacBookPro16,2 (May 2020). Minimum macOS 10.15.4 (19E2269)
j223 MacBookPro16,3 (May 2020). Minimum macOS 10.15.4 (19E2265)
j215 MacBookPro16,4 (June 2020). Minimum macOS 10.15.5 (19F96)
j185 iMac20,1 (August 2020). Minimum macOS 10.15.6 (19G2005)
j185f iMac20,2 (August 2020). Minimum macOS 10.15.6 (19G2005)
x86legacy Macs and VMs without T2 chip. Minimum macOS 11.0.1 (20B29)
Tools

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

选项 内容 说明
Arguments /
Name VerifyMsrE2 OpenCore启动项中显示的名称
Comment Verify CFG Lock 注释(可不填)
Enabled YES 启用/禁用
Path VerifyMsrE2.efi Tools文件夹下的文件名

可在此处添加bootx64.efi以引导UEFI Shell(刷BIOS)、添加shellx64.efi以引导Grub Shell(改BIOS条目)等。

NVRAM

某些NVRAM变量可通过PlatformNVRAM或PlatformInfo节的Generic子节添加,注意不要与现有变量发生冲突。

Add

创建的变量会设置EFI_VARIABLE_BOOTSERVICE_ACCESS和EFI_VARIABLE_RUNTIME_ACCESS的属性。变量只有在不存在且未被屏蔽的情况下才会被设置,也就是说,如果想要覆盖一个现有的变量值,请将该变量的名称添加到Delete部分,这种方法能够提供一个默认的值,直到操作系统接手为止。

4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14

表示Booter Path。

选项 内容 说明
UIScale 01 OpenCore UI和引导第一阶段缩放(01为正常大小,等效于Clover中BooterConfig的0x28,02为HIDPI,等效于Clover中BooterConfig的0x2A)
DefaultBackgroundColor 00000000 控制第一阶段苹果标志后面的背景颜色,格式为16进制颜色RGBA(黑色为00000000,灰色为BFBFBF00)
EFILoginHiDPI /
flagstate /
UIScale /
7C436110-AB2A-4BBB-A880-FE41995C9F82

表示SIP。

选项 内容 说明
boot-args -v debug=0x100 nv_disable=1 slide=1 vsmcgen=1 引导参数(vsmcgen=1为MacOS 11专用,用于暴露SMC部件)
bootercfg log=0 Booter参数,类似于boot-args,但用于boot.efi。在不同阶段,boot.efi会请求不同的调试(日志)模式(例如,在ExitBootServices之后它只会打印到串行调试接口)。有些Booter参数会控制这些请求是否成功,如log=这一参数接受一组十六进制的64位值,带或不带0x
nvda_drv 删除 设为31时启用NVIDIA WebDrivers(仅限10.13.6以下系统),无N卡应删除此项
prev-lang:kbd 7A682D48616E733A323532 将默认语言设置为简体中文(留空为英文)。也可为lang-COUNTRY:keyboard的格式,如ru-RU:252代表俄语和ABC键盘。也接受简短形式,如ru:252或ru:0(美国键盘,兼容10.9)。在10.14上使用非拉丁语键盘将无法启用ABC键盘,因此使用10.14版本则不建议使用这一变量
SystemAudioVolume 0x46 0x80为静音

bootercfg的log参数列表如下。

参数 含义 说明
0x00 INIT
0x01 VERBOSE 强制控制台记录日志,AppleLoggingConOutOrErrSet/AppleLoggingConOutOrErrPrint (classical ConOut/StdErr)
0x02 EXIT AppleLoggingStdErrSet/AppleLoggingStdErrPrint (StdErr or serial?)
0x03 RESET:OK
0x04 RESET:FAIL 如未知的board-id/休眠错配/Panic循环等,AppleLoggingFileSet/AppleLoggingFilePrint (BOOTER.LOG/BOOTER.OLD file on EFI partition)
0x05 RESET:RECOVERY
0x06 RECOVERY
0x07 REAN:START
0x08 REAN:END
0x09 DT 不再将日志记录到设备树
0x0A EXITBS:START 仅强制的串行调试接口
0x0B EXITBS:END 仅强制的串行调试接口
0x0C UNKNOWN

bootercfg的其它参数列表如下。可能不适用于10.15.4之前的版本。

参数 取值 取值说明 参数含义
boot-save-log=VALUE 正常启动时的调试日志保存模式
0
1
2 默认
3
4 保存到文件
wake-save-log=VALUE 休眠唤醒时的调试日志保存模式
0 禁用
1
2 默认
3 不可用
4 保存到文件,不可用
breakpoint=VALUE 错误时的调试中断
0 禁用(默认)
1 启用
console=VALUE 控制台日志记录
0 禁用
1 当缺少调试协议时启用(默认)
2 无条件启用(不可用)
embed-log-dt=VALUE 设备树日志记录
0 禁用
1 启用
kc-read-size=VALUE 网络或磁盘缓冲I/O的数据块大小,用于预链接内核读取和相关用途
0x100000 1MB(默认)
log-level=VALUE 日志等级位掩码
0x01 启用跟踪记录(默认)
serial=VALUE 串行控制台日志记录
0 禁用(默认)
1 从EXITBS:END开始启用
2 从EXITBS:START开始启用
3 当缺少调试协议时启用
4 无条件启用
timestamps=VALUE 时间戳日志记录
0 禁用
1 启用(默认)
debug=VALUE 10.15开始弃用
1 启用输出到BOOTER.LOG,如果出现了被精简过的代码,则可能发生过崩溃
2 启用性能日志(Perf Log),记录到 /efi/debug-log
4 为调用printf启用时间戳输出
level=VALUE 10.15开始弃用。DEBUG输出的详细程度,默认除0x80000000以外,其他内容都会被精简掉

prev-lang:kbd中的键盘布局数字代码如下。

数字 键盘布局
30778 cs - Czech-QWERTY
30776 cs - Czech
30764 et - Estonian
30767 hu - Hungarian-QWERTY
30763 hu - Hungarian
30765 lv - Latvian
30761 lt - Lithuanian
30788 pl - Polish Pro
30762 pl - Polish
30777 sk - Slovak
30779 sk - Slovak-QWERTY
19529 bg - Bulgarian - Phonetic
19528 bg - Bulgarian
19517 be - Byelorussian
19523 mk - Macedonian
19457 ru - Russian - Phonetic
19456 ru - Russian
19458 ru - RussianWin
19521 sr-Cyrl - Serbian
195138 uk - Ukrainian-PC
19518 uk - Ukrainian
12825 en - Colemak
16302 en - Dvorak - Left
16303 en - Dvorak - Right
16300 en - Dvorak
16301 en - DVORAK - QWERTY CMD
16384 ja - KANA
251 fr - ABC-AZERTY
253 de - ABC-QWERTZ
252 en - ABC
15 en_AU - Australian
92 de_AT - Austrian
6 nl_BE - Belgian
128 pt_BR - Brazilian-ABNT2
72 pt_BR - Brazilian - Pro
71 pt_BR - Brazilian
250 en_GB - British-PC
2 en_GB - British
80 fr_CA - Canadian - CSA
29 en_CA - Canadian
9 da - Danish
26 nl - Dutch
17 fi - Finnish
60 fr - French-PC
1111 fr - French - numerical
1 fr - French
3 de - German
50 en - Irish
223 it - Italian - Pro
4 it - Italian
12 nb - Norwegian
10 pt_PT - Portuguese
87 es - Spanish - ISO
8 es - Spanish
7 sv - Swedish - Pro
224 sv - Swedish
18 fr_CH - Swiss French
19 de_CH - Swiss German
88 to - Tongan
0 en_US - U.S
15000 en_US - USInternational-PC
-17409 ko - 2SetHangul
-2902 fa - Afghan Dari
-2904 ps - Afghan Pashto
-2903 uz-Arab - Afghan Uzbek
-20000 ta - Anjal
-17940 ar - Arabic-AZERTY
-17923 ar - Arabic-North_Africa
-18000 ar - Arabic-QWERTY
-17920 ar - Arabic
-17921 ar - Arabic PC
-28161 hy - Armenian-HM QWERTY
-28164 hy - Armenian-Western QWERTY
-49 az-Latn - Azeri
-22529 bn - Bangla-QWERTY
-22528 bn - Bangla
-16899 zh-Hant - CangjieKeyboard
-26112 chr - Cherokee-Nation
-26113 chr - Cherokee-QWERTY
-68 hr - Croatian
-69 hr - Croatian-PC
-20481 hi - Devanagari-QWERTY
-20480 hi - Devanagari
-47 fo - Faroese
-17 fi - Finnish Extended
-18 fi - FinnishSami-PC
-27650 ka - Georgian-QWERTY
-18944 el - Greek
-18945 el - Greek Polytonic
-21505 gu - Gujarati-QWERTY
-21504 gu - Gujarati
-20993 pa - Gurmukhi-QWERTY
-20992 pa - Gurmukhi
-50 haw - Hawaiian
-18500 he - Hebrew-QWERTY
-18432 he - Hebrew
-18433 he - Hebrew-PC
-21 is - Icelandic
-30604 iu - Inuktitut-Nunavut
-30602 iu - Inuktitut-Nutaaq
-30600 iu - Inuktitut-QWERTY
-30603 iu - Inuttitut Nunavik
-500 ga - Irish Extended
-19000 ms-Arab - Jawi-QWERTY
-24065 kn - Kannada-QWERTY
-24064 kn - Kannada
-19501 kk - Kazakh
-26114 km - Khmer
-17926 ckb - Kurdish-Sorani
-24577 ml - Malayalam-QWERTY
-24576 ml - Malayalam
-501 mt - Maltese
-51 mi - Maori
-25601 my - Myanmar-QWERTY
-20484 ne - Nepali
-1200 se - Northern Sami
-12 nb - Norwegian Extended
-13 nb - NorwegianSami-PC
-22017 or - Oriya-QWERTY
-22016 or - Oriya
-1959 fa - Persian-QWERTY
-17960 fa - Persian
-2901 fa - Persian-ISIRI 2901
-38 ro - Romanian-Standard
-39 ro - Romanian
-1201 se - Sami-PC
-19521 sr-Latn - Serbian-Latin
-25089 si - Sinhala-QWERTY
-25088 si - Sinhala
-66 sl - Slovenian
-15 sv - SwedishSami-PC
-20001 ta - Tamil99
-23553 te - Telugu-QWERTY
-23552 te - Telugu
-26626 th - Thai-PattaChote
-26624 th - Thai
-26628 bo - TibetanOtaniUS
-26625 bo - Tibetan-QWERTY
-2398 bo - Tibetan-Wylie
-36 tr - Turkish-QWERTY-PC
-35 tr - Turkish-QWERTY
-23 tr - Turkish-Standard
-24 tr - Turkish
-2 en - US Extended
-1 - Unicode Hex Input
-17925 ur - Urdu
-27000 ug - Uyghur
-31232 vi - Vietnamese
-790 cy - Welsh
-16900 zh-Hant - Zhuyin Bopomofo
Delete

强制重写NVRAM变量,由于Add不会覆盖NVRAM中已经存在的值,boot-args需要利用此项来刷新。

LegacyEnable

允许从ESP分区的根目录中的NVRAM.plist中读取NVRAM变量。没有原生NVRAM的设备或macOS下硬件NVRAM工作不正常的设备设置为YES,工作正常的设备设置为NO。

NVRAM.plist应包含以下字段。

字段 类型 说明
Version plist integer 文件版本,必须设定为1
Add plist dictionary 等同于config.plist中的Add
LegecyOverwrite

允许nvram.plist中的变量覆盖现有NVRAM的变量,只有操作系统访问的到的变量会被覆盖。一般选择NO。

LegacySchema

用于分配NVRAM变量,与LegacyEnable配合使用。允许设置的变量必须指定于LegacySchema中。可用*值来接受所有用来选择GUID的变量。

打开7C436110-AB2A-4BBB-A880-FE41995C9F82这一栏,添加以下两个item。

名称 类型 内容
item 11 String efi-boot-device
item 12 String efi-boot-device-data
WriteFlash

允许将所有添加的变量写入闪存,在某些系统运行时不能将易失性变量转换为非易失性变量的UEFI固件上可开启此项。一般选择NO。

PlatformInfo

总述
选项 内容 说明
Auto YES 自动注入机型信息(基于Generic属性而非DataHub/NVRAM/SMBIOS)
CustomMemory 使用在Memory部分所填写的自定义内存配置。该选项将完全取代SMBIOS中任何现有的内存配置,只有当UpdateSMBIOS设置为true时才生效
Generic 在Automatic模式下更新所有字段。当Automatic为false时将自动忽略此部分,但不可将此部分整段删除
DataHub 在非Automatic模式下更新Data Hub字段。当Automatic为true时将自动忽略此部分,但不可将此部分整段删除
Memory 设置自定义的内存配置。当CustomMemory为false时将自动忽略此部分,但不可将此部分整段删除
PlatformNVRAM 在非Automatic模式下更新platform NVRAM字段。当Automatic为true时将自动忽略此部分,但不可将此部分整段删除
SMBIOS 在非Automatic模式下更新SMBIOS字段。当Automatic为true时将自动忽略此部分,但不可将此部分整段删除
UpdateDataHub YES 更新DataHub(根据Automatic的值,这些字段会从Generic或DataHub中读取)
UpdateNVRAM YES 更新NVRAM中关于机型信息的相关字段(根据Automatic的值,这些字段会从Generic或PlatformNVRAM中读取,所有其他字段都将在NVRAM部分中指定。设置为false则可以使用nvram部分更新上述变量,设置为true而同时nvram部分存在任何字段则会产生未定义行为)
UpdateSMBIOS YES 更新SMBIOS(根据Automatic的值,这些字段会从Generic或SMBIOS中读取。Dell笔记本可能需要改为Custom,相当于Clover的DellSMBIOSPatch的一部分)
UpdateSMBIOSMode Create 用新分配的EfiReservedMemoryType替换原有的表,戴尔笔记本需要使用Custom并开启CustomSMBIOSGuid
UseRawUuidEncoding 对SMBIOS的UUID使用Apple原始编码(Big Endian),关闭时使用Little Endian

UpdateSMBIOSMode选项含义如下。注意,使用Custom时SMBIOS设置只对macOS生效。

选项 说明
TryOverwrite 如果新的数据大小小于等于按页对齐的原始数据,且对解锁legacy region没有影响,则选择Overwrite方式,否则选择Create方式
Create 在AllocateMaxAddress将表替换为新分配的EfiReservedMemoryType,没有回退机制
Overwrite 如果数据大小合适则覆盖现有的gEfiSmbiosTableGuid和gEfiSmbiosTable3Guid,否则将以不明状态中止
Custom 把第一个SMBIOS表即gEfiSmbios(3)TableGuid写入gOcCustomSmbios(3)TableGuid,以此来解决固件在ExitBootServices覆盖SMBIOS内容的问题,否则等同于Create。需要AppleSmbios.kext和AppleACPIPlatform.kext打补丁来读取另一个GUID”EB9D2D31”-“EB9D2D35”in ASCII,这一步由CustomSMBIOSGuid这一Quirk自动完成。设置为Custom可避免OEM激活失效
Generic
选项 内容 说明
SpoofVendor YES 仿冒制造商为Acidanthera以避免冲突(在SMBIOS的Vendor字段中使用Apple是危险的)
AdviseWindows 在FirmwareFeatures中强制提供Windows支持,允许重启到ESP分区不是磁盘中第一个分区的磁盘中的Windows
MaxBIOSVersion 将BIOSVersion设置为9999.999.999.999.999,建议使用Automatic选项的旧款Mac设置,在运行非官方支持的macOS版本时可避免BIOS升级
SystemMemoryStatus 用来表示内存是否可以更换和升级,控制关于本机-内存选项卡的可见性
ProcessorType
SystemProductName MacBookPro15,3 系统型号(从Clover复制)
SystemSerialNumber C02Z5TZ6LVCG 系统序列号(从Clover复制)
SystemUUID 0CC4E03F-2998-4685-A433-B5ACAB56E9C3 硬件UUID(从Clover复制)
MLB C029314044N0000CB MLB(从Clover复制)
ROM 3631A456E9C3 ROM(从Clover复制)

AdviseWindows向FirmwareFeatures中添加两个bit,FW_FEATURE_SUPPORTS_CSM_LEGACY_MODE (0x1)和FW_FEATURE_SUPPORTS_UEFI_WINDOWS_BOOT (0x20000000)。

如果没有FW_FEATURE_SUPPORTS_CSM_LEGACY_MODE,且EFI分区不是硬盘中的第一个分区,或如果没有FW_FEATURE_SUPPORTS_UEFI_WINDOWS_BOOT,且EFI分区是硬盘中的第一个分区,则无法重新启动到硬盘里的Windows系统。

SystemMemoryStatus选项含义如下。注意在某些型号的Mac上,SPMemoryReporter.spreporter会自动忽略PT_FEATURE_HAS_SOLDERED_SYSTEM_MEMORY,并认为其内存是不可升级的,如MacBookPro10,x和所有的MacBookAir

选项 说明
Auto 使用原始的PlatformFeature值
Upgradable 显式取消设置PlatformFeature中PT_FEATURE_HAS_SOLDERED_SYSTEM_MEMORY (0x2)
Soldered 显式设置PlatformFeature中PT_FEATURE_HAS_SOLDERED_SYSTEM_MEMORY (0x2)

对于SystemUUID,一般应使用主板UUID,以免破坏Windows的激活环境。

主板的UUID可以在BIOS中查看,如果BIOS中看不到,可以通过传统方式启动Windows(不能是OC引导),在命令行中查看。打开cmd,输入以下命令即可。

1
2
wmic
csproduct list full
DataHub
选项 内容 说明
PlatformName 在gEfiMiscSubClassGuid中设置name。在Mac上找到的值为ASCII码形式的platform
SystemProductName 在gEfiMiscSubClassGuid中设置Model。在Mac上找到的值等于Unicode形式的SMBIOS SystemProductName
SystemSerialNumber 在gEfiMiscSubClassGuid中设置SystemSerialNumber。在Mac上找到的值等于Unicode形式的SMBIOS SystemSerialNumber
SystemUUID 在gEfiMiscSubClassGuid中设置system-id。在Mac上找到的值等于SMBIOS SystemUUID(字节顺序调换)
BoardProduct 在gEfiMiscSubClassGuid中设置board-id。在Mac上找到的值等于ASCII码形式的SMBIOS BoardProduct
BoardRevision 在gEfiMiscSubClassGuid中设置board-rev。在Mac上找到的值似乎与Internal Board Revision相对应(如01)
StartupPowerEvents 在gEfiMiscSubClassGuid Sets中设置StartupPowerEvents。在Mac上找到的值是Power Management State位掩码,通常为0
InitialTSC 在gEfiProcessorSubClassGuid中设置InitialTSC。设置初始TSC值,通常为0
FSBFrequency 在gEfiProcessorSubClassGuid中设置FSBFrequency。此值等于CPU主频除以最高总线比率,以Hz为单位(不用于Skylake或更新平台)
ARTFrequency 在gEfiProcessorSubClassGuid中设置ARTFrequency。晶体时钟频率,为Skylake或更新的平台独有,以Hz为单位,Client Intel segment通常为24MHz,Server Intel segment通常为25MHz,Intel Atom CPUs通常为19.2MHz。10.15及以下均默认为24MHz
DevicePathsSupported 在gEfiMiscSubClassGuid中设置DevicePathsSupported。必须设置为1才能确保 AppleACPIPlatform.kext将SATA设备路径添加到Boot####和efi-boot-device-data变量。所有新款Mac都设置为1
SmcRevision 在gEfiMiscSubClassGuid中设置REV。自定义属性由VirtualSMC/FakeSMC读取,用于生成SMC REV key
SmcBranch 在 gEfiMiscSubClassGuid中设置RBr。自定义属性由VirtualSMC/FakeSMC读取,用于生成SMC RBr key
SmcPlatform 在gEfiMiscSubClassGuid中设置RPlt。自定义属性由VirtualSMC/FakeSMC读取,用于生成SMC RPlt key
Memory
选项 内容 说明
DataWidth 指定内存的数据宽度,以位为单位。DataWidth为0且TotalWidth为8时,表示改设备仅用于提供8个纠错位
Devices 指定要添加的自定义内存设备,用plist dictionary来描述每个内存设备。应该填写所有的内存插槽,包括没有插内存的插槽
ErrorCorrection 指定内存支持的主要硬件纠错或检测方法
FormFactor 指定内存的规格。在Mac上通常是DIMM或SODIMM。当CustomMemory设置为 false 时,该值会根据所设置的 Mac 机型自动设置
MaxCapacity 指定系统支持的最大内存量,以字节为单位
TotalWidth 指定内存的总宽度,以位为单位,包括任何检查或纠错位。如果没有纠错位,则这个值应该等于DataWidth
Type 指定内存类型
TypeDetail 指定附加的内存类型信息

ErrorCorrection的选项如下。

选项 说明
0x01 Other
0x02 Unknown
0x03 None
0x04 Parity
0x05 Single-bit ECC
0x06 Multi-bit ECC
0x07 CRC

FormFactor的选项如下。

选项 说明
0x01 Other
0x02 Unknown
0x09 DIMM
0x0D SODIMM
0x0F FB-DIMM

Type的选项如下。

选项 说明
0x01 Other
0x02 Unknown
0x0F SDRAM
0x12 DDR
0x13 DDR2
0x14 DDR2 FB-DIMM
0x18 DDR3
0x1A DDR4
0x1B LPDDR
0x1C LPDDR2
0x1D LPDDR3
0x1E LPDDR4

TypeDetail的选项如下。

选项 说明
Bit 0 Reserved, set to 0
Bit 1 Other
Bit 2 Unknown
Bit 7 Synchronous
Bit 13 Registered (buffered)
Bit 14 Unbuffered (unregistered)
Memory Device
选项 内容 说明
AssetTag 指定该内存的资产标签
BankLocator 指定内存设备所在的物理标签库
DeviceLocator 指定内存设备所在的物理标签插槽或主板上的位置
Manufacturer 指定该内存设备的制造商
PartNumber 指定该内存设备的部件号
SerialNumber 指定该内存设备的序列号
Size 指定内存设备的大小,以兆字节为单位。0表示该插槽未插入内存
Speed 指定设备的最大速度,单位为每秒百万传输量(MT/s)。0表示未知速度
PlatformNVRAM
选项 内容 说明
BID 指定NVRAM变量4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14:HW_BID
ROM 指定NVRAM变量4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14:HW_ROM和4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14:ROM
MLB 指定NVRAM变量4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14:HW_MLB和4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14:MLB
FirmwareFeatures 与FirmwareFeaturesMask配对使用,指定NVRAM变量4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14:FirmwareFeatures、4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14:ExtendedFirmwareFeatures
FirmwareFeaturesMask 与FirmwareFeatures配对使用,指定NVRAM变量4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14:FirmwareFeaturesMask、4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14:ExtendedFirmwareFeaturesMask
SystemUUID 指定NVRAM变量4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14:system-id的值,仅用于启动服务。在Mac上找到的值等于SMBIOS SystemUUID
SMBIOS
选项 内容 说明
BIOSVendor BIOS供应商。SystemManufacturer的所有规则都适用
BIOSVersion 固件版本。在较旧的固件中看起来类似于 MM71.88Z.0234.B00.1809171422,在较新的固件中看起来类似于 236.0.0.0.0 或 220.230.16.0.0 (iBridge: 16.16.2542.0.0,0)。iBridge版本从BridgeOSVersion变量读取,并且只在具有T2芯片的Mac上显示
BIOSReleaseDate 固件发布日期。格式类似12/08/2017
SystemManufacturer 特定主板的OEM制造商。非必要不设定,不要包含Apple Inc.字样,否则会混淆操作系统中的大量服务(固件更新、eficheck、Lilu及其插件),还可能导致某些操作系统(如Linux)无法引导
SystemProductName 选择偏好的Mac机型来把设备标记为系统支持的机型。如果SystemProductName与目标操作系统不兼容,可用引导参数-no_compat_check来覆盖。若未指定,则默认值会被设定为MacPro6,1
SystemVersion 产品迭代版本号。类似于1.1
SystemSerialNumber 按照格式定义的产品序列号
SystemUUID 唯一标识符
SystemSKUNumber Mac主板ID,在旧型号的机器类似于Mac-7BA5B2D9E42DDD94或Mac-F221BEC8。有时可以直接留空
SystemFamily 机型名称。类似于iMac Pro
BoardManufacturer 主板制造商。SystemManufacturer的所有规则都适用
BoardProduct Mac主板ID,在旧型号的机器类似于Mac-7BA5B2D9E42DDD94或Mac-F221BEC8
BoardVersion 主板版本号
BoardSerialNumber 主板序列号
BoardAssetTag 资产标签号。可留空或填Type2 - Board Asset Tag
BoardType 板类型。0xA表示主板(包括处理器/内存/IO等),0xB表示处理器/内存模块
BoardLocationInChassis 可留空或填Part Component
ChassisManufacturer 主板制造商。SystemManufacturer的所有规则都适用
ChassisType 机箱类型
ChassisVersion 和BoardProduct符合
ChassisSerialNumber 和SystemSerialNumber符合
ChassisAssetTag 机箱类型名称。可留空或填MacBook-Aluminum
PlatformFeature 平台功能位掩码。填写0xFFFFFFFF值时不提供此表
SmcVersion ASCII字符串,包含SMC版本号(大写)。配备Apple T2安全芯片的Mac没有这一字段。当此值设置为零时,这一选项会被忽略
FirmwareFeatures 64位固件功能位掩码。低32位与FirmwareFeatures匹配,高64位与ExtendedFirmwareFeatures匹配
FirmwareFeaturesMask 扩展固件功能位掩码。低32位与FirmwareFeatures匹配,高64位与ExtendedFirmwareFeatures匹配
ProcessorType Automatic 自动生成的值(Automatic)是根据当前的CPU规格提供的最准确的值

UEFI

ConnectDrivers

强制加载.efi驱动程序,更改为NO将自动连接UEFI驱动程序以获得更快的启动速度。但并非所有驱动程序都可以自行连接,某些文件系统驱动程序可能无法加载,因此此处填YES。

Drivers

添加efi驱动的名称。

Audio

这里的声卡设置只与UEFI环境相关,不影响系统内音频。如果要让Duang和VoiceOver等其它音频功能工作,需要将OCBinaryData中的语音资源包放置于EFI分区的EFI/OC/Resources/Audio下,同时AudioDxe需要安装在Driver文件夹中。

选项 内容 说明
AudioSupport YES 启用音频支持(不支持DP类的数字音频)
AudioDevice PciRoot(0x0)/Pci… 声卡设备的PCI地址
AudioCodec 0 声卡的Codec地址,可以在IORegistryExplorer的HDEF-IOHDACodecDevice-IOHDACodecAddress中获得(一般是0x0)
AudioOut 指定的输出设备,从0到声卡总输出数每个都试一遍,声卡的总输出数可以在Debug 版本的OpenCore日志中获得(n Outputs)
MinimumVolume 输出最小音量,有效值为0-100(如果VolumeAmplifier公式计算出的最小音量小于这里给出的值,Duang就不会被播放)
PlayChime YES 播放Duang(Auto表示当StartupMute NVRAM变量不存在或设置为00时启用开机声音,Enabled为无条件启用,Disabled为无条件禁用)
SetupDelay 音频编解码器重新配置的延迟,单位为微秒。必要的延迟时间可能长达0.5秒
VolumeAmplifier 1000 音量在原有基础上放的百分比,有效范围0-1000
Input

为输入(键盘和鼠标)而设计的个性化设置。

选项 内容 说明
KeyFiltering 启用键盘输入的合理性检查。这个选项会舍弃那些既不是ASCII码,也不是UEFI规范中定义的键
KeyForgetThreshold 5 按住按键后每个键之间的时间间隔(单位毫秒)。在大多数平台上有效的推荐值为5毫秒,当OpenCanopy检测到按键丢失时尝试稍高的值,当检测到按键停滞时尝试稍低的值
KeyMergeTheshold 2 按住按键被重置的时间间隔(单位毫秒)。此选项的建议值为2毫秒,对于较快的平台可以选取较小的值
KeySupport YES 开启OC的内置键盘支持(若引导界面无法选择分区,或使用了单独的驱动程序,则禁用)
KeySupportMode Auto 键值转换协议模式(Auto-自动,V1-UEFI旧版输入协议EFI_SIMPLE_TEXT_INPUT_PROTOCOL,V2-UEFI新输入协议EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL,AMI-APTIO输入协议AMI_EFIKEYCODE_PROTOCOL)
KeySwap NO 交换Command和Option键
PointerSupport NO 修复UEFI选择器协议,实现标准UEFI指针协议EFI_SIMPLE_POINTER_PROTOCOL(华硕z87/z97需要开启)
PointerSupportMode / 指定OEM协议,当前仅支持Z87和Z97 ASUS板(如果启用了PointerSupport,此处值不能为空)
TimerResolution 60000 固件时钟刷新的频率(单位100纳秒),普通电脑填50000,华硕主板填60000,苹果主板填100000,0表示自动计算
Output

为输出(文本和图形)而设计的个性化设置。

选项 内容 说明
TextRenderer BuiltinGraphics 文字渲染模式(BuiltinGraphics-使用OpenCore内置文字渲染的图形模式,并同时启用OpenCore自带的控制台管理,支持HIDPI和全屏范围显示,SystemGraphics-使用主板固件自带文字渲染的图形模式,并同时启用OpenCore自带的控制台管理,SystemText-使用主板固件自带文字渲染的文字模式,并同时启用OpenCore自带的控制台管理,SystemGeneric-使用主板固件自带文字渲染的文字模式和自带的控制台管理)
ConsoleMode / TextRenderer使用Builtin时此项设置不生效。设置为空字符串则不会改变控制台模式,设置为Max则会尝试最大的可用控制台模式。在大多数固件上,这个字段最好留空
Resolution Max Max将会尝试开启最大分辨率,也可填写宽x高@Bpp(如3840x2160@32),其中Bpp为显示位深,留空将不会改变UEFIe的默认分辨率(在固件没有GOP时该选项失效,当固件不再提供时可以将ProvideConsoleGop设置为true并添加)
ForceResolution 当默认情况下无法获得所需分辨率时,强制设置Resolution中所填写的分辨率,多用于老的Intel GMA和第一代Intel HD Graphics(Ironlake/Arrandale)。将Resolution设置为Max时,将尝试从所连接的显示器的EDID中提取最大的可用分辨率。该选项依赖OC_FORCE_RESOLUTION_PROTOCOL协议,目前只有 OpenDuetPkg支持该协议,而OpenDuetPkg的实现目前仅支持Intel iGPU
ClearScreenOnModeSwitch NO 切换到文本模式之前用黑色填充整个屏幕,只在System渲染器上生效(从图形模式切换到文本模式时,某些固件仅清除屏幕的一部分,导致屏幕上残留之前绘制的图片,此情况可打开该选项)
DirectGopRendering NO 直接使用OpenCore内置的GOP渲染控制台,主要用于提升或修复MacPro5,1的渲染问题(除非开启后能明显感觉到有改进,否则不要开启,开启可能会导致滚动速度变慢)
IgnoreTextInGraphics NO 在控制台处于与Text不同的模式时舍弃所有文本输出,只在System渲染器上生效。修复不用-v开机时日志覆盖苹果标志输出的问题
ReplaceTabWithSpace NO 使控制台输出空格来替代tab,在某些设备在UEFIShell中编辑文件使用Tab键出问题时启用(只在System渲染器上生效)
ProvideConsoleGop YES 选择启动项之后不出现啰嗦模式跑码时启用,开启此选项能确保GOP和UGA(如果存在)在控制台句柄上可用,最大可能保证OpenCore UI和苹果标志以正确分辨率显示(macOS引导加载程序需要GOP,即图形输出协议,存在于控制台句柄上,大部分的笔记本都不提供GOP,台式机的独立显卡可以单独刷入GOP)
ReconnectOnResChange NO 改变屏幕分辨率后重新连接控制台控制器。有些固件在GOP分辨率改变后要求重新连接控制器才能输出文本,开启这个选项会导致UEFI Shell中启动OpenCore时直接黑屏,尽量避免开启
SanitiseClearScreen YES 修复OpenCore在高分屏中以1024x768显示的问题,可能会有反效果,只在System渲染器上生效(要将ConsoleMode的内容留空)
DirectGopRendering NO 使用内置显卡直接渲染开机画面
UgaPassThrough NO 通过UGA代替无法使用GOP的主板,一般带UEFI的主板以及显卡请选择NO。有些固件不会去实现老旧的UGA协议,但是有些更老的EFI应用程序(如10.4的EfiBoot)可能需要用它来进行屏幕输出

对于控制台输出,可选择Builtin或System渲染器。System渲染器使用固件服务进行文本渲染,Builtin渲染器则绕过固件服务,自行渲染文本。建议使用Builtin渲染器,因为它支持HiDPI模式,并能够使用全屏分辨率。

对于UEFI固件,用于支持ConsoleControl的渲染模式有Graphics和Text。OpenCore和macOS希望文本只在Graphics模式下显示,而图形可以在任何模式下绘制。

TextRenderer的选项分别为BuiltinGraphics、BuiltinText、SystemGraphics、SystemText,分别对应不同的渲染器和渲染模式。SystemGeneric选项则表示使用System渲染器和系统ConsoleControl。

将TextRenderer设置为BuiltinGraphics/SystemGraphics/SystemText时,需启用ProvideConsoleGop,并将Resolution设置为Max。

ProtocolOverrides

强制执行从下面的ProtocolOverrides属性部分所选协议的内置版本。注意所有协议实例的安装都优先于驱动程序的加载。

选项 内容 说明
AppleAudio YES 重新安装内置版本的Apple Audio协议,以在OpenCore中使用 VoiceOver,目前该协议支持在macOS 10.13及以上播放音频,老系统使用的AppleHDA协议暂未支持
AppleBootPolicy NO 重新安装内置的Apple Boot Policy协议,确保虚拟机/旧白苹果上兼容APFS
AppleDebugLog NO 重新安装苹果调试日志输出协议
AppleEvent NO 重新安装内置的Apple Event协议,虚拟机并具有Vault(文件保险箱)的Mac需要开启
AppleFramebufferInfo NO 虚拟机专用。重新安装内置的Apple Framebuffer Info协议,可覆盖虚拟机或者旧款Mac上的缓冲帧信息,从而提高与旧版EfiBoot(如macOS 10.4中的EfiBoot)的兼容性
AppleImageConversion NO 重建Apple图标(重新安装Apple Image Conservation协议)
AppleImg4Verification 重新安装内置的Apple IMG4验证协议。该协议用于验证Apple安全启动所使用的im4m清单文件
AppleKeyMap NO 重建苹果功能键(重新安装Apple Key Map协议)
AppleRtcRam NO 重装Apple RTC RAM协议(可能会过滤掉RTC内存地址的潜在I/O,地址列表可以在4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102:rtc-blacklist中以数组的方式指定)
AppleSecureBoot 重新安装内置的Apple安全启动协议
AppleSmcIO YES 重新安装Apple SMC I/O协议(VirtualSmc.efi已经被替代为此选项)
AppleUserInterfaceTheme NO 重新安装Apple User Interface Theme协议
ConsoleControl YES 用内置版本替换控制台控制协议
DataHub NO 重新安装Data Hub协议。如果已经安装了协议,这将删除所有先前的属性
DeviceProperties NO 重新安装内置版本的Device Property协议。 如果已经安装,它将删除所有以前的属性。这一选项可用于确保确保在VM/旧白苹果上完全兼容
FirmwareVolume NO 强制包装固件卷协议或安装新版本以支持FileVault 2的自定义光标图像。该选项可修复Filevault的UI问题,提高FileVault的兼容性(包括VMWare在内的多个虚拟机在HiDPI模式下光标会损坏,因此建议为所有虚拟机启用这一选项)
HashServices NO 强制重新安装内置版本的Hash Services协议,在SHA-1哈希协议不完整的固件上确保FileVault 2的兼容性,修复运行FileVault时鼠标光标大小不正确的问题。对于大多数固件,可通过将UIScale设置为02查看是否会出现禁行图标,来诊断固件是否需要这一Quirk。一般来说APTIO V(Haswell和更早)之前的平台都会受到影响
OSInfo NO 强制使用内置版本重新安装OS Info协议,为主板或者其它程序接收来自macOS引导工具的消息
UnicodeCollation NO 制重新安装内置版本的Unicode Collation 服务,修复主板UEFI Shell的兼容性(通常用于IvyBridge或更旧的设备)
Quirks
选项 内容 说明
DeduplicateBootOrder NO 当RequestBootVarRouting选项开启时,一些其他的操作系统可能在某些主板(如华硕)中会找不到自己的引导而重新创建,最终导致黑果在没有清理NVRAM的情况下无法进入系统时,出现该情况则可开启
DisableSecurityPolicy 禁用平台安全策略,会同时破坏安全启动策略,使用UEFI安全启动时需要禁用
ExitBootServicesDelay 0 主板退出时间(单位微秒),在EXIT_BOOT_SERVICES事件后添加延迟。新主板填0,旧主板(如Z87pro)填3000000-5000000 ,用于修复Still waiting for root device提示信息
IgnoreInvalidFlexRatio YES BIOS中无法禁用MSR_FLEX_RATIO(0x194)时开启,在不需要的情况下不建议启用
ReleaseUsbOwnership NO 从固件驱动程序中释放USB控制器所属权,相当于Clover的FixOwnership(大部分主板都有自动释放USB所有权的功能)
RequestBootVarFallback NO 一些固件会主动扫描系统启动盘的位置而阻止OC扫描,遇到此问题时可开启
RequestBootVarRouting YES 请求将所有带有Boot前缀的变量从EFI_GLOBAL_VARIABLE_GUID重定向到OC_VENDOR_VARIABLE_GUID,启用此项以便能够在与macOS引导项设计上不兼容的固件中可靠地使用启动磁盘设置,并使操作系统只受OpenCore引导环境的控制,而不会被其它操作系统搞乱优先级
TscSyncTimeout 0 帮助X99/X299主板开启全核同步功能(应优先使用TSCAdjustReset/VoodooTSCSync/CpuTscSync来做全核同步,因为这个Quirk不能在ACPI S3 模式即睡眠唤醒下运行,会导致睡眠唤醒后失效,而且UEFI固件提供的多核心支持非常有限,无法精确地更新MSR寄存器)
UnblockFsConnect YES 惠普笔记本在OpenCore引导界面没有引导项时设置为YES(某些固件通过按驱动程序模式下来阻止引导项加载,导致文件系统协议无法安装)
APFS
选项 内容 说明
EnableJumpstart YES 从APFS容器中加载内置APFS驱动(APFS的EFI驱动内置在所有可以作为系统启动盘的APFS容器之中,确保在Scanpolicy中放开APFS格式)
GlobalConnect NO 在APFS加载期间执行完整的设备连接,一些主板需要选择YES才能完全加载APFS(如HP笔记本)
HideVerbose YES 隐藏啰嗦模式
JumpstartHotPlug YES 允许从进入OpenCore引导菜单后插入的可移除硬盘上的APFS容器中加载APFS驱动
MinDate 0 允许加载的最老APFS驱动的发布日期(0表示使用默认数值,-1表示允许使用任何版本的APFS驱动,其它为时间如20200401)
MinVersion 0 允许加载的最老APFS驱动的版本号(0代表默认数值,当前为从high sierra开始加载,-1代表所有版本,其它为APFS驱动版本号如1412101001000000)
ReservedMemory

用于保留内存。一些硬件会在把硬件EFI写进内存过程中占用必要的UEFI运行空间,所以可以通过此项预留内存保证UEFI的运行。一般情况下无需处理。

选项 内容 说明
Address 保留内存区域的起始地址,该区域应被分配为保留区,有效地将此类型的内存标记标记为操作系统不可访问。这里写的地址必须是内存映射的一部分,具有EfiConventionalMemory类型,并且按页对齐(4KB)。禁用CSM后,某些固件可能不会为S3(睡眠)和S4(休眠)分配内存区域,因此导致唤醒失败,可以分别比较禁用和启用CSM的内存映射,从低层内存中找到这些区域,并保留该区域来修复这个问题
Comment 注释
Size 保留的内存区域的大小,必须按页对齐(4KB)
Type 内存区域类型
Enabled 启用/禁用

Type的选项如下。

选项 与UEFI规范的内存描述符类型的匹配映射
Reserved EfiReservedMemoryType
LoaderCode EfiLoaderCode
LoaderData EfiLoaderData
BootServiceCode EfiBootServicesCode
BootServiceData EfiBootServicesData
RuntimeCode EfiRuntimeServicesCode
RuntimeData EfiRuntimeServicesData
Available EfiConventionalMemory
Persistent EfiPersistentMemory
UnusableMemory EfiUnusableMemory
ACPIReclaimMemory EfiACPIReclaimMemory
ACPIMemoryNVS EfiACPIMemoryNVS
MemoryMappedIO EfiMemoryMappedIO
MemoryMappedIOPortSpace EfiMemoryMappedIOPortSpace
PalCode EfiPalCode

配置文件检查

可在终端输入以下命令进行基本检查。

1
plutil -convert xml1 config.plist && plutil config.plist

也可通过以下网站。

1
https://opencore.slowgeek.com/

也可通过以下脚本。

1
https://github.com/corpnewt/OCConfigCompare

组件

内核

在添加引导项时,OpenCore必须从EFI/BOOT/BOOTx64.efi启动而不是从EFI/OC/OpenCore.efi启动。

基本配置

内存分配

有以下两种关于内存的设置。

KASLR内存注入

KASLR是更加高效的内存注入方式。

DevirtualiseMmio选择yes,ProtectUefiServices选择yes,删除boot-args里面的slide=1,删除Drivers文件夹下的Memoryallocations.efi。

连续性内存注入

DevirtualiseMmio选择yes,ProtectUefiServices选择no,保留boot-args里面的slide=1,保留Drivers文件夹下的Memoryallocations.efi。

修复引导界面显示

在config.plist中修改以下配置。

路径 选项 设置
UEFI->Protocols ConsoleControl YES
UEFI->Quirks ProvideConsoleGop YES
IgnoreTextInGraphics YES
SanitiseClearScreen YES
Misc->Boot ConsoleMode 留空(有时可设置为Max)
Resolution 显示器的正常分辨率(如4k为3840x2160)
4代及以下
ConsoleBehaviourOs Graphics
ConsoleBehaviourUi ForceText
5代+
ConsoleBehaviourOs ForceGraphics
ConsoleBehaviourUi ForceText(有时可设置为Graphics/Text)

安全启动

将Misc-Security-SecureBootModel设置为Default或其他有效值即可。若不能开启,则可强制加载IO80211Family,在Kernel-Force下添加以下项即可。

类型
Arch String Any
BundlePath String System/Library/Extensions/IO80211Family.kext
Comment String
Enabled Boolean True
Identifier String com.apple.iokit.IO80211Family
ExecutablePath String Contents/MacOS/IO80211Family
MaxKernel String
MinKernel String
PlistPath String Contents/Info.plist

外置主题

首先需要保证有OpenCanopy.efi,且PickerMode设置为External。然后将资源放置在Resources目录即可,资源如下。

1
2
3
4
5
6
# 官方资源包
https://github.com/acidanthera/OcBinaryData

# 第三方资源包
https://github.com/blackosx/OpenCanopyIcons
https://applelife.ru/threads/kastomizacija-opencanopy.2945020/

默认选择的图标由DefaultBackgroundColor变量决定,当该变量的值定义为浅灰时,则使用Old前缀的图标,定义为其他颜色时则使用没有前缀名的图标。

调试模式

普通设置

需要将OpenCore、Lilu及其插件更换为DEBUG版本。对于OpenCore,需要更换以下文件。

1
2
3
4
5
EFI/BOOT/BOOTx64.efi
EFI/OC/Bootstrap/Bootstrap.efi
EFI/OC/Drivers/OpenRuntime.efi
EFI/OC/Drivers/OpenCanopy.efi # 最好不要用该驱动
EFI/OC/OpenCore.efi

可使用以下工具增强调试能力。

1
2
3
4
5
6
7
# DebugEnhancer.kext
# 允许更大的内核日志
https://github.com/acidanthera/DebugEnhancer

# SSDT-DBG.aml
# 启用ACPI表中的调试语句,帮助进行操作系统内ACPI事件调试
https://gist.github.com/al3xtjames/39ebea4d615c8aed829109a9ea2cd0b5

在OpenCore的配置文件中设置以下内容。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# 提供更多调试信息,特别是与boot.efi相关的信息,并将日志存储到磁盘
Misc-AppleDebug = YES

# 将内核panic存储到磁盘
Misc-ApplePanic = YES

# 禁用UEFI Watchdog
Misc-DisableWatchdog = YES

# 启用调试输出
Misc-Target = 67

# 设置记录的内容
Misc-DisplayLevel = 2147483714

# keepsyms=1确保在内核崩溃期间保留符号
# debug=0x12a是DB_KPRT(0x8), DB_KDP_BP_DIS(0x32), DB_KDP_GETC_ENA(0x200)的组合
# msgbuf=1048576是内核的消息缓冲区大小,1048576为1MB(1024^2)
# -liludbgall在Lilu和任何其他插件上启用调试
# io=0xff启用IOKit调试(日志记录量很大)
# igdebug=0xff启用iGPU相关调试
# acpi_layer=0x8启用ACPI_TABLES调试(或使用0xFFFFFFFF启用全部位)
# acpi_level=0x2设置ACPI_LV_DEBUG_OBJECT调试(或使用0xFFFF5F启用ACPI_ALL_COMPONENTS)
NVRAM-boot-args = -v keepsyms=1 debug=0x12a msgbuf=1048576 -liludbgall io=0xff igdebug=0xff acpi_layer=0x8 acpi_level=0x2
【进阶】AppleDebug与log=1

AppleDebug选项适用于较新的Mac版本,会把boot.efi的verbose输出日志保存到通用 OpenCore日志中。

对于10.15.4之前的版本,将bootercfg设置为log=1,可以将verbose输出打印在屏幕上。

串行设置

若需要启用串行输出,需要在以上设置的基础上,在配置文件中设置以下内容。

1
2
3
4
5
6
7
8
# 执行串口初始化
Misc-SerialInt = YES

# 启用串行输出
Misc-Target = 75

# 将输出重定向到串行
NVRAM-boot-args = serial=5 msgbuf=1048576 debug=0x108

插入串口后使用CoolTerm进行调试,链接如下。

1
https://freeware.the-meiers.org/

打开CoolTerm并点击Options,确保Port为串口控制器,Baudrate选择115200,Data Bits选择8,Parity选择none,Stop Bit选择1。然后点击Connect即可开始监听串口。

设置默认启动盘

在配置文件中开启Misc-Security-AllowSetDefault,然后在引导界面按Ctrl+Enter设置。

获取错误信息

若系统无法启动,可通过OpenCore获取错误信息。需确保OpenCore为DEBUG或NOOPT版本。在配置文件中按照以下内容设置。

1
2
3
4
5
Misc-Debug-Target=3
Misc-Debug-DisplayLevel=0x80000042
Misc-Security-HaltLevel=0x80000000
Misc-Debug-DisableWatchDog=true
Misc-Boot-ShowPicker=true

对于Early Boot出现的问题(如OpenCore启动菜单无法显示),通过UEFI Shell可以查看相关调试信息。

自定义启动项

OpenCore遵循Apple Bless标准模型,从引导目录中的.contentDetails.disk_label.contentDetails文件中提取条目名称。这些文件包含带有输入标题的ASCII字符串,可以修改它们以自定义启动项名称。

Windows安装与配置

在OpenCore上应用的所有更改(ACPI、NVRAM、SMBIOS)都应该与操作系统本身无关。OpenCore 会将这些改动生效于所有操作系统,包括Windows。

安装

应当使用Boot Camp安装Windows,以保证其可被OpenCore引导。也可使用Brigadier对现有Windows进行配置,链接如下。

1
https://github.com/timsutton/brigadier

注意使用Brigadier时,需要传递最新型号的Mac,如./brigadier.exe -m iMac19,1,以防止Boot Camp版本过低导致无法运行。

在不受支持的Mac型号上安装Boot Camp,可以管理员身份运行PowerShell,输入msiexec /i BootCamp.msi即可。如果之前不小心已经安装了旧版本的Boot Camp,则必须先通过运行msiexec /x BootCamp.msi将其卸载。BootCamp.msi文件位于BootCamp/Drivers/Apple目录。

配置

反转鼠标滚轮滚动方向

打开PowerShell并输入以下命令即可。

1
2
3
4
5
6
# 获取当前设置
Get-ItemProperty HKLM:\SYSTEM\CurrentControlSet\Enum\HID\*\*\Device` Parameters FlipFlopWheel -EA 0
# 修改设置
# 鼠标滚动方向 相反 FlipFlopWheel 1
# 鼠标滚动方向 自然滚动 FlipFlopWheel 0
Get-ItemProperty HKLM:\SYSTEM\CurrentControlSet\Enum\HID\*\*\Device` Parameters FlipFlopWheel -EA 0 | ForEach-Object { Set-ItemProperty $_.PSPath FlipFlopWheel 1 }

若需要撤销更改,可通过以下命令。

1
Get-ItemProperty HKLM:\SYSTEM\CurrentControlSet\Enum\HID\*\*\Device` Parameters FlipFlopWheel -EA 1 | ForEach-Object { Set-ItemProperty $_.PSPath FlipFlopWheel 0 }

修复Boot Camp启动硬盘控制面板的Basic data partition

需要手动重新标记分区,可通过gdisk,方法如下。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
PS C:\gdisk> .\gdisk64.exe \\.\physicaldrive0
GPT fdisk (gdisk) version 1.0.4

Command (? for help): p
Disk \\.\physicaldrive0: 419430400 sectors, 200.0 GiB
Sector size (logical): 512 bytes
Disk identifier (GUID): DEC57EB1-B3B5-49B2-95F5-3B8C4D3E4E12
Partition table holds up to 128 entries
Main partition table begins at sector 2 and ends at sector 33
First usable sector is 34, last usable sector is 419430366
Partitions will be aligned on 2048-sector boundaries
Total free space is 4029 sectors (2.0 MiB)

Number Start (sector) End (sector) Size Code Name
1 2048 1023999 499.0 MiB 2700 Basic data partition
2 1024000 1226751 99.0 MiB EF00 EFI system partition
3 1226752 1259519 16.0 MiB 0C01 Microsoft reserved ...
4 1259520 419428351 199.4 GiB 0700 Basic data partition

Command (? for help): c
Partition number (1-4): 4
Enter name: BOOTCAMP

Command (? for help): w

Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING PARTITIONS!!

Do you want to proceed? (Y/N): Y
OK; writing new GUID partition table (GPT) to \\.\physicaldrive0.
Disk synchronization succeeded! The computer should now use the new partition table.
The operation has completed successfully.

安装到实体Mac上

以Mac Pro 5,1为例。在实体Mac上使用OpenCore,可以让旧版Mac拥有启动选择器屏幕、软件更新、硬件加速、DRM支持等。示例机器配置如下。

内容
Mac Pro型号 MacPro5,1 (Early 2009/Mid 2010/Mid 2012)
处理器架构 Westmere (E56xx/L56xx/X56xx), Gulftown (W36xx)
ROM版本 144.0.0.0.0
显卡 在Catalina/Big Sur受支持的型号
无线网卡 在Catalina/Big Sur受支持的型号 (BCM943224/BCM9435x/BCM9436x)
【特殊】Big Sur 11.3/11.4对Mac Pro的兼容性

Big Sur 11.3/11.4可能已不再支持Mac Pro(Early 2009-Mid 2012)。可使用Big Sur 11.2.3。

修改启动器

操作时建议使用第二块硬盘,在配置失败时仍可以使用原来的硬盘启动。

开启OpenCore

将第二块硬盘设置为GUID分区表,挂载EFI分区,放置OpenCore并使用以下配置文件。

1
https://forums.macrumors.com/attachments/config-zip.1789995/

在终端输入以下命令以进入恢复模式。

1
sudo nvram "recovery-boot-mode=unused" && sudo reboot recovery

进入恢复模式后,打开终端并输入以下命令。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 列出分区及其标志符
# 在结果中寻找刚才的EFI分区,此处为diskAs1
diskutil list

# 挂载EFI分区
diskutil mount /dev/diskAs1

# 从该EFI分区启动
bless --mount /Volumes/EFI --setBoot
# 若失败则使用以下命令
bless --mount /Volumes/EFI --setBoot --file /Volumes/EFI/EFI/BOOT/BOOTx64.efi --verbose

# 重启以进入OpenCore
reboot

重启后即跳出OpenCore界面,选择要引导的系统即可。启动成功后打开终端并输入以下命令,查看当前引导器是否为OpenCore,若有输出则证明OpenCore已引导系统。

1
nvram 4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102:opencore-version
关闭OpenCore

将配置文件中RequestBootVarRouting设置为false,重启后在系统偏好设置-启动磁盘中选择当前系统盘并重新启动即可。

修复启动

若开启OpenCore后无法启动,则移除第二块硬盘,启动时按住Option+Command+P+R,在20秒或听到第二声启动提示音后松手,Mac将重置NVRAM并按照正常方式启动。

修改配置文件

开启虚拟化

在SMBIOS下,修改BIOSVersion为9999.0.0.0.0,BoardProduct为Mac-7BA5B2D9E42DDD94,并将UpdateSMBIOS设置为true。

VMM标志

将VMM标志添加到CPUID有助于启用安装和软件更新。因为VMM标志会导致大约 5%的性能损失并禁用电源管理,所以建议仅在安装或检查更新时打开该标志。注意,若使用了虚拟化,则安装和更新Big Sur并不需要开启VMM标志。

修改CPUID为如下即可。

1
2
3
4
5
# 打开VMM标志
AAAAAAAAAAAAAACAAAAAAA==

# 关闭VMM标志
AAAAAAAAAAAAAAAAAAAAAA==​
GOP渲染器

对于Radeon VII和某些版本的5700 XT,需要启用GOP渲染器以显示启动选择器菜单。但对于RX 580,不需要启用GOP渲染器。建议非必要时禁用GOP渲染器。

将DirectGopRendering设置为true即开启,设置为false即关闭。

启动选择器屏幕

若有HiDPI显示屏,可将UIScale从AQ==改为Ag==。

若需要显示灰色启动屏幕,可将ConsoleAttributes从15改为112,将DefaultBackgroundColor从AAAAAA==改为v7+/AA==。

若需要隐藏启动屏幕,可将ShowPicker改为false。若在隐藏后需要在启动时重新显示,可长按Esc。

启用硬件加速

放置Lilu和WhateverGreen,若为双处理器则还需要放置AppleMCEReporterDisabler。在配置文件中加载以上kext,并在DeviceProperties添加显卡路径,该路径可通过gfxutil查询到。然后在显卡路径下添加以下键。

类型
agdpmod Data 70696B65 726100
rebuild-device-tree Data 00
shikigva Data 50
unfairgva Data 01000000
设置启动标志

将NVRAM-7C436110-AB2A-4BBB-A880-FE41995C9F82-boot-args下的内容清空即可。

开启Night Shift

放置Lilu和NightShiftEnabler,在配置文件中加载以上kext即可。

安装Windows

确保配置文件中ProtectSecureBoot设置为true,VMM标志关闭,并添加ExFatDxeLegacy.efi驱动。准备一个USB作为安装介质,使用MBR分区表并格式化为exFAT格式。下载Windows安装镜像,双击挂载ISO后将出现CCCOMA_X64映像。

打开终端并输入以下命令,注意需要将USB替换为安装介质的名称。

1
rsync -r /Volumes/CCCOMA_X64/ /Volumes/USB

重启后在启动选择器选择Windows (External)以启动安装环境。启动完成后按Shift+F10打开命令提示符,然后输入以下命令。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# 进入磁盘工具
diskpart

# 列出所有的磁盘
list volume

# 根据上述结果选择需要安装Windows的磁盘
select volume 1

# 格式化分区
format quick fs=ntfs label=Windows

# 退出磁盘工具
exit

# 根据上述磁盘结果,进入USB安装盘分区
D:

# 备份EFI文件夹
ren efi efi.bak

# 查看需要安装的Windows版本
cd sources
dism /get-wiminfo /wimfile:install.wim

# 应用镜像
# index的数字根据上述结果选择
# applydir应为刚才格式化好的分区盘符
dism /apply-image /imagefile:install.wim /index:1 /applydir:C:\ /compact /EA

# 生成启动文件
bcdboot C:\Windows /s D: /f uefi

# 退出
exit

完成后关闭命令提示符并重启,进入Mac系统。挂载EFI分区后,将安装盘中生成的EFI/Microsoft文件夹复制到EFI分区的EFI文件夹中。然后删除安装盘中的EFI文件夹,将efi.bak重命名为efi,弹出USB。完成后重启并进入Windows即可。

安装Ubuntu

常见问题

出现kextd stall (60s) ‘IOUSBHostInterface’或kextd stall (60s) ‘IOHIDInterface’

使用Catalina Beta 1-3时会出现此问题。在Beta 2中无解决方案,在Beta 3中未测试。

在Beta 1中,可添加以下内核补丁。

类型
Base String _isSingleUser
Count Integer 1
Enabled Boolean True
Find Data
Identifier String com.apple.iokit.IOHIDFamily
Limit Integer 0
Mask Data
MaxKernel String
MinKernel String 20.0.0
Replace Data B801000000C3
ReplaceMask Data
Skip Integer 0

出现OCB: boot LoadImage failed

可尝试将ScanPolicy设为983299(0xF0103)。

出现OC:configuration requires vault but no vault procide

更新OpenCore即可。

出现OCS: No schema for xxxxx at xx index!

在config.plist中删除对应项即可。

出现OCB:OcScanForBootEntries failure - Not Found Halting on critical error

修改config.plist中的Misc-Security-ScanPolicy为0即可。

Recovery无法进入

勾选UEFI-APFS-JumpstartHotPlug即可。

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

未关闭BIOS的CFG锁导致。

在OpenCore配置文件中设置Kernel-Quirks-AppleCpuPmCfgLock,Kernel-Quirks-AppleXcpmCfgLock和UEFI-Quirks-IgnoreInvalidFlexRatio为Yes。

BIOS重设或重启/关机后发送到安全模式

AppleRTC的问题。

在OpenCore配置文件中设置Kernel-Quirks-DisableRtcChecksum为Yes。如果仍然有问题,则需要使用RTCMemoryFixup.kext并排除范围。

使用OpenCore引导启动Windows出现蓝屏

在OpenCore配置文件中设置Booter-Quirks-SyncRuntimePermissions。

Z390关机重启

打开RequestBootVarRouting。

引导时卡在[EB|`B:WFDW] Err(0xE), 0 @ LocHB 71B4903C-14EC-42C4-BDC6-CE1449930E49

在config.plist中勾选UEFI-Quirks-IgnoreInvalidFlexRatio即可。若无效,则勾选Kernel-Quirks-AppleCpuPmCfgLock/AppleXcpmCfgLock。若仍无效,则尝试在BIOS关闭CFG Lock,也可尝试勾选Booter-Quirks-SetupVirtualMap。

出现OC: Driver xxxxxxxx.efi at 3 cannot be started Already started! Halting on critical error

删除对应的驱动即可。

引导OpenCore后回到BIOS/引导选择界面

确定ESP分区内分区结构正确。然后确保引导的是EFI/BOOT/bootx64.efi而不是EFI/OC/OpenCore.efi。

引导时提示no vault provided!

关闭Misc-Security中的RequireSignature和RequireVault,关闭FileVault。

卡在EndRandomSeed

对于AMD CPU,可能是缺少内核补丁。

对于Broadwell和更老的机型,需要勾选IgnoreInvalidFlexRatio。对于奔腾、HEDT,可能需要勾选AppleXcpmExtraMsrs。

也有可能需要勾选UEFI-Output-ProvideConsoleGop,或关闭CFG锁,或使用SSDTTime的FixHPET选项并放置生成的SSDT。

看不到Mac分区

ScanPolicy设置为0,显示所有驱动器。需要放置分区格式驱动,如ApfsDriverLoader和HfsPlus(或VBoxHfs)。若进行网络恢复安装,则应当启用AvoidHighAlloc。

选择OpenCore引导后黑屏

启用UEFI-Output-ProvideConsoleGOP。

卡在OC: OcAppleGenericInput… - Success

关闭CFG锁。对于AMD CPU,应检查是否已添加内核补丁。

引导系统时卡在PCI Configuration Begins, Previous Shutdown…, HID: Legacy… apfs_module_start…等

确保EC控制器名称为EC,以及使用了SSDT-AWAC.aml补丁。若无效,则可添加npci=0x2000参数。若仍无效,则关闭UEFI-Quirks-ReleaseUsbOwnership选项。

Kernel Panic并提示“Cannot perform kext summary”

kext的加载顺序错误。

因为AppleIntel***Framebuffer导致的Kernel Panic

DVMT Pre-allocated的问题。也可能是没有加载SSDT-PLUG.aml,即没有注入plugin-type=1。

I2C触摸板不可用,但驱动已经加载

强制IOGraphicsFamily.kext加载即可。由于OC没有ForceKextsToLoad的功能,需从System/Library/Extension下提取这个kext放到EFI/OC/Kexts,并在config.plist的Kernel-Add 中添加此Kext。

出现OCB: Apple Secure Boot prohibits this boot entry, enforcing!

已安装的系统Preboot分区上的Apple安全启动清单是过时的,从而导致启动失败。可重新安装操作系统,或将/usr/standalone/i386中扩展名为im4m的文件复制到/Volumes/Preboot//System/Library/CoreServices,其中为系统卷的标识符。HFS+文件系统则须复制到系统卷上的/System/Library/CoreServices目录。

出现OCABC: Memory pool allocation failure - Not Found

保证BIOS已启用4G以上解码,且已禁用CSM。

出现** In Memory Panic Stackshot Succeeded ** Bytes Traced xxxxx ** Attenmpting system restart. . . MACH Reboot

可能使用的kext存在问题,或引导器需要更新。若无效,可在config.plist中勾选Kernel-Quirks-AppleCpuPmCfgLock/AppleXcpmCfgLock,或添加阻止补丁DeviceProperties-Block-PciRoot(0x0)/Pci(0x1b,0x0)-MaximumBootBeepVolume。

出现SMCSuper IO ssio: @ failed to detect supported Super IO chip或RTC…, PCI Configuration Begins, Previous Shutdown…, HPET, HID: Legacy…或AppleNVMe Assert failed:( 0 != data )Release file:/AppleInternal/BuildRoot/Library/Caches/

可能为IRQ冲突,使用SSDTTime的FixHPET选项并放置生成的SSDT即可。

若无效,则可能是PCI分配问题,可尝试更新BIOS,且启用Above4GDecoding,禁用CSM,启用Windows 8.1 / 10 UEFI模式。

对于Catalina及以上版本,可能是缺少EC设备。对于有电池的设备,需将EC设备进行改名。对于无电池的设备,直接使用SSDT-EC即可。

内核Panic并显示Cannot perform kext summary

预链接内核问题。需验证kext顺序是否正确。

出现Buffer Too Small

开启UEFI-Quirks-AvoidHighAlloc,并在BIOS启用Above4GDecoding。

出现Plist only kext has CFBundleExecutable key

当一个值不应该是实数时,它被设置为实数,通常是Xcode意外地转换了HaltLevel,如下。

1
2
<key>HaltLevel</key>
<real>2147483648</real>

修复为如下即可。

1
2
<key>HaltLevel</key>
<integer>2147483648</integer>

选择macOS分区后卡住

关闭CFG锁,或启用AppleXcpmCfgLock和AppleCpuPmCfgLock。

无法在引导界面选择器中选择任何内容

键盘驱动程序不兼容。

禁用PollAppleHotKeys并启用KeySupport,然后在删除OpenUsbKbDxe驱动。若不起作用,则进行相反操作。

出现[EB|’WL:DT] Err(0xE) @ WL:PWLFRTC错误

关闭CFG锁,并将Misc-Debug-DisplayLevel改为0。

系统进入后,关于本机处无法显示序列号或者序列号不可用

关闭Kernel-Quirks-CustomSMBISOGuid。

出现OCB:LoadImage failed - Unsupported

添加HFSPlus.efi或VBoxHfs.efi驱动。

出现OC:Failed to show boot menu,或no boot device found. press any key to reboot the machine

Misc-Security-ScanPolicy设为0。

出现OCB: Start Image failed - Aborted

将ACPI-Delete的补丁全部删除。

出现OCTY:failed to locate apple event protocol - not found

将UEFI-Applelnput-AppleEvent设为Auto。

Chameleon

Chameleon只支持传统BIOS,不支持UEFI。Enoch和Chimera都属于Chameleon的分支。

下载

1
2
3
4
5
6
7
8
9
10
11
12
13
# r2908
https://cloud.189.cn/t/jymqYvaeYryi

# 2.0
http://www.mediafire.com/file/o5jmzzg1k33/Chameleon_2.0_%252B_EFI10.zip/file

# 1.0
http://www.mediafire.com/file/zjzxqojvziu/Chameleon_1.0_%252B_EFI10.zip/file

# 其它
http://chameleon.osx86.hu/
http://chameleon.osx86.hu/static/some-words-about-donation?ref=file_download/39/Chameleon-2.0-RC4-r684-bin.tar.gz
https://github.com/aserebln/Chameleon

手动安装

Chameleon关于启动的文件如下。

名称 作用
fdisk440 帮助写入boot0、boot0hfs的工具,只会写入440bytes,不破坏MBR中的关于Windows的任何资料
boot0 写入到MBR,boot0会搜索boot1h所在的第一个活动分区
boot0hfs 写入到MBR中,boot0hfs会搜索boot1h所在的第一个分区,无论是否设为活动分区
boot1h 写入到分区引导区块中,借此引导Boot文件
boot 放置于开机分区以完成开机引导程序

将文件复制到EFI分区后,Mac下终端执行以下命令即可将Chameleon安装到EFI分区。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 以下dev/rdisk1表示磁盘号
# dev/rdisk1s1表示EFI分区号
# /表示Mac安装分区
cd /Volumes/EFI/usr/standalone/i386

# boot0安装模式
fdisk –f boot0 –u –y /dev/rdisk1
dd if=boot1h of=/dev/rdisk1s1
sudo cp boot /
sudo chown 0:0 /boot

# boot0hfs安装模式
fdisk –f boot0hfs –u –y /dev/rdisk1
dd if=boot1h of=/dev/rdisk1s1
sudo cp boot /
sudo chown 0:0 /boot

目录层级

Extra/Extensions

相当于Clover的kexts/Other目录。

配置文件详解

开启32位

变色龙RC5 r75x版起,开启32位的方法修改为在/Extra/com.apple.Boot.plist内容加入下面设置。

变色龙RC5 r1105版起,开启32位的方法修改为在/Extra/org.chameleon.Boot.plist内容加入下面设置。

1
2
3
4
<key>arch</key>
<string>i386</string>
<key>Kernel Flags</key>
<string></string>

启动参数

com.apple.Boot.plist的参数如下。

参数 含义 备注
-F 忽略org.Chameleon.boot.plist中额外的启动标志
UseKernelCache=Yes 使用内核缓存安装kexts,使用RAID安装Lion则必须开启
GraphicsEnabler=Yes 打开Graphics Enabler功能 等同于Clover中的InjectAMD/Nvidia,注意运行WhateverGreen即可实现该效果
IGPEnabler=Yes 打开IGP启动器,帮助Mac在集显下更好的使用 等同于Clover中的InjectIntel,注意运行WhateverGreen并使用帧补丁即可实现该效果
Theme=Default 设置图形化界面,Default是布景主题名称,可改为任意第三方布景主题名称
Wait=Yes(No) 点击按键后才开始启动内核
Quiet Boot=Yes(No) 开机时不显示文字或图形选单,直接进入系统
Timeout=8 设定开机选择启动分区的秒数
Instant Menu=Yes 强制显示分区选择菜单
Default Partition=hd(x,y)/(=UUID)/(=”Label”) 设定预设开机分区,可使用代码、UUID、标签表示。x代表硬盘代号,y代表分区代号
Hide Partition=hd(x,y)/(=UUID)/(=”Label”) 设定隐藏分区,可使用代码、UUID、标签表示,也可以添加多个参数以隐藏多个分区,使用空白键作分隔。x代表硬盘代号,y代表分区代号
Rename Partition=hd(x,y)/(=UUID)/(="Label") <alias> 设置分区名字,可使用代码、UUID、标签表示,也可以添加多个参数以命名多个分区,使用空白键作分隔。x代表硬盘代号,y代表分区代号,<alias>代表修改名称(因为使用空白键作分隔,所以命名不可包含空白键)
GUI=Yes(No) 设定启用单图形化界面的开机选单,默认为YES
Boot Banner=Yes(No) 启用在图形化介面显示变色龙版本等讯息文字横幅,默认为YES
Legacy Logo=Yes(No) 启用在进入系统化面显示原苹果Logo,默认为NO
SystemID= 设定开机UUID
RestartFix=Yes 启用重新启动修正功能,建议开启
System-Type=(1),2,3 1=PC,2=笔记本,3=服务器,默认为1
DropSSDT=Yes(No) 忽略BIOS中的SSDT,读取Extra资料中的SSDT资料,默认为NO
GenerateCStates=Yes 启用生成CPU C-State功能(C-State管理CPU电源状态,可以让CPU在闲置状态下处于不同低功耗状态)
GeneratePStates=Yes 启用生成CPU P-State功能(P-State管理CPU性能状态,可以让CPU在不同负载下改变功耗)
EnableC2State=Yes 启用C2 State功能(C2 State管理CPU电源状态,可以让CPU在闲置状态下处于低功耗状态)
EnableC3State=Yes 启用C3 State功能(C3 State管理CPU电源状态,可以让CPU在闲置状态下处于低功耗状态)
EnableC4State=Yes 启用C4 State功能(C4 State管理CPU电源状态,可以让CPU在闲置状态下处于低功耗状态。C2/C3/C4中,数字越大节能效果越明显)
GraphicsEnabler=Yes(No) 启用侦测显卡功能,可取代在DSDT添加的显卡参数,默认为NO
UseNvidiaROM=Yes(No) 启用Nvidia EEPRom功能,可以在不刷显卡BIOS的情况下使用修改的Rom,需要将ROM文件命名为VenderID_DeviceID.rom并放置Extra资料夹,如10de_0614.rom,默认为NO
UseAtiROM=Yes(No) 启用ATI EEPRom功能,可以在不刷显卡BIOS的情况下使用修改的Rom,需要将ROM文件命名为VenderID_DeviceID.rom并放置Extra资料夹,如10de_0614.rom,默认为NO
VBIOS=Yes(No) 仅针对NVIDIA显卡,启用读取显卡参数,可在显示卡资讯中显示ROM修正版资讯(如果在Extra资料夹放置显卡Rom文件,版本号会变成显卡Rom文件路径)
EthernetBuiltIn=Yes(No) 启用网卡内建设定侦测功能,默认为NO
EHCIacquire=Yes(No) 启用EHCI功能修正,非必要不开启,默认为NO
UHCIreset=Yes(No) 启用UHCI功能修正,非必要不开启,默认为NO
USBLegacyOff=Yes(No) 启用USB原生功能修正,非必要不开启,默认为NO
USBBusFix=Yes(No) 启用EHCI功能修正、UHCI功能修正、USB原生功能修正,非必要不开启,默认为NO
Wake=Yes(No) 启用睡眠唤醒功能,默认为YES
ForceHPET=Yes(No) 启用强制HPET功能,默认为NO
ForceWake=Yes(No) 启用强制使用睡眠资料映像功能,默认为NO
SMBIOSdefaults=Yes(No) 启用SMBIOS的预设值,默认为NO
Scan Single Drive=Yes(No) 启用扫描单一光驱模式,默认为NO
Rescan=Yes 启用光驱重新扫描模式
config=/Extra/com.apple.Boot.plist 设定com.apple.Boot.plist的位置
SMBIOS=/Extra/SMBIOS.plist 设定SMBIOS.plist的位置
DSDT=/Extra/DSDT.aml 设定DSDT.aml的位置
md0=/Extra/Postboot.img 设定Postboot.img的位置
WakeImage=/private/var/vm/sleepimage 设定睡眠资料映像文件位置
kext=/Extra/Extensions 设定kext/mkext所在位置
ShowInfo=No 取消硬盘分卷与解析度细节显示
CSTUsingSystemIO=Yes 启用新式生成CPU C-State功能
AtiConfig=<cardcfg> 设定ATI显卡Framebuffer,更有效驱动显示卡,如AtiConfig=Uakari
AtiPorts=<value> 设定ATI显卡接口数目
display_0=<value> 写入Nvidia显卡NVDA,Display-A@0的display-cfg参数
display_1=<value> 写入Nvidia显卡NVDA,Display-B@1的display-cfg参数
InjectIntel-ig=x 注入ig-platform-id,适用于HD 4000/4400/4600/5000/Iris,x为Intel iGPU的ID
IntelAzulFB=x 注入可用的ig-platform-id,适用于HD4400/4600/5000/Iris,x范围为0-15
IntelCapriFB=x 注入可用的ig-platform-id,适用于HD4000,x范围为0-11
EnableDualLink=Yes/No 注入Intel iGPU双Dual信息,对于1366x768分辨率使用No,对于1600x900或更高分辨率使用Yes
PCIRootUID=0 内核将在内部主板或CPU GFX寻找视频硬件
PCIRootUID=1 内核将在外部/PCIe插槽寻找视频硬件

对于PCIRootUID应当使用的参数,可通过查看DSDT确定。在DSDT中查找PCI0设备,示例如下。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 应当使用PCIRootUID=1
Device (PCI0)
{
Name (_HID, EisaId ("PNP0A03"))
Name (_ADR, 0x00)
Name (_UID, 0x01)
Name (_BBN, 0x00)
...
}

# 应当使用PCIRootUID=0
Device (PCI0)
{
Name (_HID, EisaId ("PNP0A08"))
Name (_CID, EisaId ("PNP0A03"))
Name (_ADR, Zero)
Name (_UID, Zero)
Name (_BBN, Zero)
...
}

SMBIOS.plist参数如下。

参数 含义
SMfamily=MacPro (Mac) (MacBookPro) 设定产品类型(iMac设定会影响声卡使用时产生电流声,改用MacPro即可)
SMproductname=MacPro3,1 (iMac11,1) (MacBookPro6,1) 设定产品型号(非Nehalem系列处理器不要设定为MacPro4,1,需设定为MacPro3,1或其它)
SMmanufacturer=Apple Inc. 设定制造者
SMbiosvendor=Apple Inc. 设定BIOS供应商
SMboardmanufacturer=Apple Inc. 设定主板制造者
SMboardproduct=Mac-F221BEC8 设定主板型号
SMbiosversion=MP41.88Z.0081.B04.0903051113 设定BIOS版本
SMserial=CK916000000 设定序号
SMsystemversion=1.0
SMcputype=1793(1537) 设定处理器的类型(Core 2 Solo=257,Core 2 Duo=769,Core 2 Quad=1281,Core i5=1537,Core i7=1793)
SMmaximalclock=2926 设定处理器内频(主频)=外频X倍频(内频/主频=CPU Frequency,外频=Base Clock Frequency,倍频=CPU Clock Ratio)
SMexternalclock=133 设定处理器外频
SMbusspeed=4800 设定总线速度
SMmemtype=24 设定内存规格(DDR2=19,DDR3=24)
SMmemspeed=1333 设定内存时脉(DDR2 667=667,DDR2 800=800,DDR3 1066=1066,DDR3 1333=1333,DDR3 1600=1600)
SMmemmanufacturer_1=Kingston 设定内存制造商
SMmemmanufacturer_2=Kingston 设定内存制造商
SMmemmanufacturer_3=Kingston 设定内存制造商
SMmemmanufacturer_4=Kingston 设定内存制造商
SMmemmanufacturer_5=Kingston 设定内存制造商
SMmemmanufacturer_6=Kingston 设定内存制造商
SMmempart_1=9905458-009.A00LF 设定内存零件编号
SMmempart_2=9905458-009.A00LF 设定内存零件编号
SMmempart_3=9905458-009.A00LF 设定内存零件编号
SMmempart_4=9905458-009.A00LF 设定内存零件编号
SMmempart_5=9905458-009.A00LF 设定内存零件编号
SMmempart_6=9905458-009.A00LF 设定内存零件编号
SMmemserial_1=76344B29 设定内存序号
SMmemserial_2=76344B29 设定内存序号
SMmemserial_3=76344B29 设定内存序号
SMmemserial_4=76344B29 设定内存序号
SMmemserial_5=76344B29 设定内存序号
SMmemserial_6=76344B29 设定内存序号

NVRAM支持

Chameleon本身不保存EFI中的内容,因此NVRAM不起作用,需要FileNVRAM模块把nvram文件从磁盘提前加载到内存中。同时该模块向系统插入一个kext,在更改NVRAM时写入内容到/Extra/nvramxxxxxxxx.plist。

常见问题

引导器启动

Boot0: error

一般出现在引导Advanced Format 4格式的HDD上。下载以下文件并复制boot1h到USB安装盘根目录。

1
https://www.dropbox.com/s/owacbzyriibee5o/boot1h.zip

引导到安装程序后,打开磁盘工具,取消挂载系统盘后打开终端,输入以下命令即可。

1
2
3
# identifier为系统盘的索引号,如disk0s2
cd /
dd if=boot1h of=/dev/identifier

引导启动

找不到mach_kernel

打开org.chameleon.Boot.plist,修改以下内容。

1
2
<key>Kernel</key>
<string>mach_kernel</string>

若无效,则修改为以下内容。

1
2
<key>Kernel</key>
<string>/System/Library/Kernels/kernel</string>

BootThink

支持GUID/MBR分区表,2.5.2版可引导Lion。启动时按F8可键入启动参数。

运行Darwin/MBR/SetupMBR.bat,可将BootThink设为第一引导。

安装

在苹果系统下运行安装包。BootThink提供以下安装方式。

安装方式 说明
勾选Boot1h 将boot1h文件写入到所选择安装分区的某个扇区(即dd if=boot1h of=/dev/rdiskXsY)
勾选Boot1h和boot0 除以上操作外,还将boot0文件写入整个磁盘的MBR扇区(即fdisk -f boot0 -u -y /dev/rdiskX)
勾选EFI 安装到EFI分区

卸载

执行Darwin文件夹下的Uninstall。重启计算机后手动删除系统目录下的Darwin文件夹、boot、nbldr和nbldr.mbr即可。

目录层级

以Snow Leopard为例,引导时将加载Darwin/rc/mkext、Darwin/System/LibrarySL/Extensions.mkext和Darwin/System/LibrarySL/Extensions文件夹下的所有kexts。

若需要安装kexts,放置到Darwin/System/LibrarySL/Extensions即可。

为防止kexts冲突,建议删除以下kexts。

1
2
3
Darwin/System/LibrarySL/Extensions/Extensions.mkext
Darwin/System/LibrarySL/x32/Extensions/Extensions.mkext
Darwin/System/LibrarySL/x64/Extensions/Extensions.mkext

若为Lion,则加载Darwin/System/LibraryLion/Extensions。

引导启动

BootThink会优先使用系统/Library/Preferences/SystemConfiguration下的com.apple.Boot.plist启动配置文件。若不存在则会使用Darwin下的 com.apple.Boot.plist文件。

若需要加载DSDT.aml/SMBIOS.plist,可以直接将此文件放到Darwin下,BootThink会自动加载。

启动参数

参数 含义
b=x 设置当前选中分区为默认启动分区,延时x秒钟启动(0<=x<=32767)
b=~ 取消默认启动分区设置
p=- 只显示可引导分区
p=+ 显示恢复分区
g=1024x768x32 设置默认启动分辨率为1024x768,深度为32
g=~ 取消分辨率设置
-x32 强制使用32位模式启动

Refind

1
https://www.rodsbooks.com/refind/installing.html

其它

包括XPC Bootloader等。

本机文件内容

Clover结构

Mojave/Catalina

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
├── ACPI
│ └── patched
│ ├── SSDT-ALS0.aml
│ ├── SSDT-ARTC.aml
│ ├── SSDT-ASUS.aml
│ ├── SSDT-BAT0.aml
│ ├── SSDT-Config.aml
│ ├── SSDT-DGPU.aml
│ ├── SSDT-DMAC.aml
│ ├── SSDT-GPRW.aml
│ ├── SSDT-MCHC.aml
│ ├── SSDT-MEM2.aml
│ ├── SSDT-PNLF.aml
│ ├── SSDT-UIAC.aml
│ └── SSDT-XCPM.aml
├── CLOVERX64.efi
├── config.plist
├── drivers
│ └── UEFI
│ ├── ApfsDriverLoader.efi
│ ├── AudioDxe.efi
│ ├── DataHubDxe.efi
│ ├── FSInject.efi
│ ├── HFSPlus.efi
│ ├── OpenRuntime.efi
│ └── VirtualSmc.efi
└── kexts
└── Other
├── AppleALC.kext
├── AsusSMC.kext
├── CPUFriend.kext
├── CPUFriendDataProvider.kext
├── CodecCommander.kext
├── Lilu.kext
├── LiluFriend.kext
├── NoTouchID.kext
├── RealtekRTL8111.kext
├── SMCBatteryManager.kext
├── SMCLightSensor.kext
├── SMCProcessor.kext
├── SMCSuperIO.kext
├── USBInjectAll.kext
├── VirtualSMC.kext
├── VoodooI2C.kext
├── VoodooI2CHID.kext
├── VoodooPS2Controller.kext
└── WhateverGreen.kext

Big Sur

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
├── ACPI
│ └── patched
│ ├── SSDT-GPRW.aml
│ └── SSDT-PLUG.aml
├── CLOVERX64.efi
├── config.plist
├── drivers
│ └── UEFI
│ ├── ApfsDriverLoader.efi
│ ├── AudioDxe.efi
│ ├── DataHubDxe.efi
│ ├── FSInject.efi
│ ├── HFSPlus.efi
│ ├── OpenRuntime.efi
│ └── VirtualSmc.efi
└── kexts
└── Other
├── Lilu.kext
├── SMCBatteryManager.kext
├── SMCLightSensor.kext
├── SMCProcessor.kext
├── SMCSuperIO.kext
├── USBInjectAll.kext
├── VirtualSMC.kext
├── VoodooI2C.kext
├── VoodooI2CHID.kext
├── VoodooPS2Controller.kext
└── WhateverGreen.kext

OpenCore结构

Catalina

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
├── ACPI
│ ├── SSDT-ALSD.aml
│ ├── SSDT-ARTC.aml
│ ├── SSDT-ASUS.aml
│ ├── SSDT-BAT0.aml
│ ├── SSDT-Config.aml
│ ├── SSDT-DGPU.aml
│ ├── SSDT-DMAC.aml
│ ├── SSDT-EC.aml
│ ├── SSDT-GPRW.aml
│ ├── SSDT-MCHC.aml
│ ├── SSDT-MEM2.aml
│ ├── SSDT-PLUG.aml
│ ├── SSDT-PMCR.aml
│ ├── SSDT-PNLF.aml
│ ├── SSDT-SBUS.aml
│ ├── SSDT-UIAC.aml
│ └── SSDT-XCPM.aml
├── Drivers
│ ├── ApfsDriverLoader.efi
│ ├── AudioDxe.efi
│ ├── HfsPlus.efi
│ ├── OpenCanopy.efi
│ ├── OpenRuntime.efi
│ └── OpenUsbKbDxe.efi
├── Kexts
│ ├── AppleALC.kext
│ ├── AsusSMC.kext
│ ├── CodecCommander.kext
│ ├── Lilu.kext
│ ├── LiluFriend.kext
│ ├── NoTouchID.kext
│ ├── RealtekRTL8111.kext
│ ├── SMCBatteryManager.kext
│ ├── SMCLightSensor.kext
│ ├── SMCProcessor.kext
│ ├── SMCSuperIO.kext
│ ├── USBInjectAll.kext
│ ├── VirtualSMC.kext
│ ├── VoodooPS2Controller.kext
│ └── WhateverGreen.kext
├── OpenCore.efi
└── config.plist

Big Sur

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
├── ACPI
│ ├── SSDT-GPRW.aml
│ └── SSDT-PLUG.aml
├── Drivers
│ ├── ApfsDriverLoader.efi
│ ├── AudioDxe.efi
│ ├── HfsPlus.efi
│ ├── OpenCanopy.efi
│ ├── OpenRuntime.efi
│ └── OpenUsbKbDxe.efi
├── Kexts
│ ├── Lilu.kext
│ ├── SMCBatteryManager.kext
│ ├── SMCLightSensor.kext
│ ├── SMCProcessor.kext
│ ├── SMCSuperIO.kext
│ ├── USBMap.kext
│ ├── CtlnaAHCIPort.kext
│ ├── VirtualSMC.kext
│ ├── VoodooI2C.kext
│ ├── VoodooI2CHID.kext
│ ├── VoodooPS2Controller.kext
│ └── WhateverGreen.kext
├── OpenCore.efi
└── config.plist

附录

旧版资源

1
2
3
4
5
6
7
8
9
https://github.com/OSXLatitude/EDP
https://support.apple.com/downloads
http://www.powerpcsoftware.com/
http://www.macos9lives.com/
http://macintoshgarden.org/
http://www.umich.edu/~archive/
https://www.macintoshrepository.org/
http://vintagemacmuseum.com/resources/mac-software/
https://pikeralpha.wordpress.com/2017/06/06/catalogurl-for-macos-10-13-high-sierra/

工具

ProperTree

1
2
https://github.com/corpnewt/ProperTree
https://codeload.github.com/corpnewt/ProperTree/zip/master

OpenCore Configurator

1
https://mackie100projects.altervista.org/download-opencore-configurator/

参考教程

黑苹果制作虚拟机CDR镜像

1
https://blog.csdn.net/qq_41855420/article/details/102750055

OpenCore引导教程

1
2
3
4
5
6
7
https://blog.daliansky.net/OpenCore-BootLoader.html
https://blog.daliansky.net/From-Clover-To-OpenCore.html
https://blog.skk.moe/post/from-clover-to-opencore/
https://blog.xjn819.com/?p=543
https://khronokernel-2.gitbook.io/opencore-vanilla-desktop-guide/
https://dortania.github.io/OpenCore-Desktop-Guide/
https://kirainmoe.com/blog/post/opencore-migration-experience/#13-%e4%bf%ae%e6%94%b9-configplist

【持续更新】OpenCore引导-v各种卡及OC引导常见问题解决方案速查表合集

1
https://imacos.top/2020/03/28/0154/

macOS 10.13安装中常见的问题及解决方法

1
https://blog.daliansky.net/macOS-10.13-installation-of-common-problems-and-solutions.html

OpenCore 引导迁移折腾记录

1
https://kirainmoe.com/blog/post/opencore-migration-experience/

热补丁制作教程

1
2
3
https://www.penghubingzhou.cn/2019/05/02/Battery%20Hotpatch%20Make/
https://xstar-dev.github.io/hackintosh_advanced/Guide_For_Battery_Hotpatch.html
http://yqp7js.coding-pages.com/2020/05/16/%E8%BF%9B%E9%98%B6%EF%BC%9A%E7%94%B5%E6%B1%A0%E7%83%AD%E8%A1%A5%E4%B8%81%EF%BC%88Battery-Hotpatch%EF%BC%89%E4%B9%8B%E8%B7%AF/

Acidanthera故障排除

1
https://github.com/acidanthera/bugtracker

AsusSMC使用教程

1
https://github.com/hieplpvip/AsusSMC/wiki/Installation-Instruction

macOS Catalina 10.15安装中常见的问题及解决方法

1
https://blog.daliansky.net/Common-problems-and-solutions-in-macOS-Catalina-10.15-installation.html

FIREWOLF OS X PE 9 使用手册

1
https://pe.firewolf.app/manual/chapter3/launcherfirstview.html

Clover的用法

1
https://www.misonsky.cn/28.html

Booting the OS X installer on LAPTOPS with Clover

1
https://www.tonymacx86.com/threads/guide-booting-the-os-x-installer-on-laptops-with-clover.148093/

MaciASL / Wiki / Patching Syntax Grammar

1
https://sourceforge.net/p/maciasl/wiki/Patching%20Syntax%20Grammar/

Using Clover to hotpatch ACPI

1
https://www.tonymacx86.com/threads/guide-using-clover-to-hotpatch-acpi.200137/

Clover EFI Bootloader v5.1 r5127 四叶草黑苹果引导程序

1
https://heipg.cn/clover/clover-efi-bootloader-v5-1-r5127.html

-V进mac不滚代码直接卡++加号或者加号下几行代码Error allocating 0x11c8d pages at……卡住解决方案

1
https://imacos.top/2019/08/12/1033/

CatalinaAutoMountWritable.plist

1
https://forums.macrumors.com/attachments/catalinaautomountwritable-plist-zip.847064/

用热补丁修理你的触摸板

1
2
https://blog.gzxiaobai.cn/2020/05/17/%E7%94%A8%E7%83%AD%E8%A1%A5%E4%B8%81%E4%BF%AE%E7%90%86%E4%BD%A0%E7%9A%84%E8%A7%A6%E6%91%B8%E6%9D%BF%EF%BC%88TouchPad-Hotpatch%EF%BC%89/
http://yqp7js.coding-pages.com/2020/05/17/%E7%94%A8%E7%83%AD%E8%A1%A5%E4%B8%81%E4%BF%AE%E7%90%86%E4%BD%A0%E7%9A%84%E8%A7%A6%E6%91%B8%E6%9D%BF%EF%BC%88TouchPad-Hotpatch%EF%BC%89/

Hotpatch热补丁之路2:常见的种类与外部引用

1
http://bbs.pcbeta.com/viewthread-1866928-1-1.html

Fix for El Capitan stuck at login

1
https://discussions.apple.com/thread/7376445?tstart=0

Macbook Pro stuck after I enter my password

1
https://apple.stackexchange.com/questions/305097/macbook-pro-stuck-after-i-enter-my-password

AptioMemoryFix

1
https://www.insanelymac.com/forum/topic/331381-aptiomemoryfix/?tab=comments#comment-2564269

Turn on performance mode for macOS Server

1
https://support.apple.com/en-gb/HT202528

macOS启动参数列表

1
https://blog.skk.moe/post/macos-boot-args/

Dortania’s OpenCore Install Guide

1
2
https://dortania.github.io/OpenCore-Install-Guide/
https://thrrip.github.io/OpenCore-Install-Guide/

Clover Kexts and Firmware driver conversion(.kext, .efi)

1
https://github.com/dortania/OpenCore-Install-Guide/blob/master/clover-conversion/clover-efi.md

macOS BigSur 11.0安装中常见的问题及解决方法

1
https://blog.daliansky.net/Common-problems-and-solutions-in-macOS-BigSur-11.0-installation.html

Release Date – Gixxer PC

1
https://www.dualbootpc.com/guide/release-date/

TSplicedFont failed creating descriptor for El Capitan

1
https://apple.stackexchange.com/questions/304552/tsplicedfont-failed-creating-descriptor-for-el-capitan

Acer V5-572G On Yosemite

1
https://www.jianshu.com/p/30ff92784076

How to make a bootable Mountain Lion install drive

1
https://www.macworld.com/article/1167857/how-to-make-a-bootable-mountain-lion-install-drive.html

Who can help me compile the DSDT, Thanks!

1
https://www.tonymacx86.com/threads/solved-who-can-help-me-compile-the-dsdt-thanks.189972/

HACKINTOSH BOOT FLAGS

1
https://www.fitzweekly.com/2016/04/hackintosh-boot-flags.html

macOS系统下载

1
https://www.applex.net/pages/macos/

卡在com.apple.xpc.launchd[1]这里了,一直循环,求大神指导一下

1
http://bbs.pcbeta.com/forum.php?mod=viewthread&tid=1876638

acidanthera/bugtracker

1
2
3
4
5
6
https://github.com/acidanthera/bugtracker/issues/1235
https://github.com/acidanthera/bugtracker/issues/901
https://github.com/acidanthera/bugtracker/issues/1193
https://github.com/acidanthera/bugtracker/issues/1222
https://github.com/acidanthera/bugtracker/issues/424
https://github.com/acidanthera/bugtracker/issues/995

macOS 11.0 Big Sur Public Beta 10 - boot, kernel panic

1
https://www.tonymacx86.com/threads/solved-macos-11-0-big-sur-public-beta-10-boot-kernel-panic.305007/

Slide值获取及计算

1
https://blog.daliansky.net/Slide-value-acquisition-and-calculation.html

macOS 11 Big Sur on Unsupported Macs Thread

1
2
https://forums.macrumors.com/threads/macos-11-big-sur-on-unsupported-macs-thread.2242172/page-28?post=28603788#post-28603788
https://forums.macrumors.com/threads/macos-11-big-sur-on-unsupported-macs-thread.2242172/page-29?post=28604333#post-28604333

Install macOS Big Sur on a Newly Unsupported Mac With WI-FI Working: My iMac Late-2012

1
https://blog.juliensatti.com/install-macos-big-sur-mac-obsolete/

Making WiFi work on Big Sur unsupported Macs with “failed with 66” error

1
https://andv.medium.com/making-wifi-on-big-sur-unsupported-macs-with-failed-with-66-error-36c98e3f7965

[教程] Win版变色龙安装到EFI方法

1
http://bbs.pcbeta.com/forum.php?mod=viewthread&tid=1072629

Previous Shutdown Causes Explained

1
https://georgegarside.com/blog/macos/shutdown-causes/

Stuck on [ PCI CONFIGURATION BEGIN ] npci=0x2000 not working

1
https://www.tonymacx86.com/threads/stuck-on-pci-configuration-begin-npci-0x2000-not-working.49320/

macOS版本歷史 - 維基百科,自由的百科全書

1
https://zh.wikipedia.org/wiki/MacOS%E7%89%88%E6%9C%AC%E6%AD%B7%E5%8F%B2

[Hack] Hackintosh - Install Mac OS X 10.6.8 (Snow Leopard) on ThinkPad X61T (Tablet)

1
https://xuelianghan.tumblr.com/post/52456030005/hack-hackintosh-install-mac-os-x-1068-snow

成功安装MAC OS 10.4.6 for X86

1
http://www.playcase.com/blog/article.asp?id=55

VMware再战MAC 10.5.2

1
http://www.playcase.com/blog/article.asp?id=103

Mac OSx86: 10.4.8 Tiger VMware Installation Guide

1
https://blog.naver.com/sysyphus/70025314227

识别 MacBook Pro 机型

1
https://support.apple.com/zh-cn/HT201300

识别 MacBook 机型

1
https://support.apple.com/zh-cn/HT201608

识别 MacBook Air 机型

1
https://support.apple.com/zh-cn/HT201862

识别 Mac mini 机型

1
https://support.apple.com/zh-cn/HT201894

识别 Mac Pro 机型

1
https://support.apple.com/zh-cn/HT202888

识别您的 iMac 机型

1
https://support.apple.com/zh-cn/HT201634

MacBook Pro机型列表/型号详解(识别MacBook Pro机型)

1
https://www.xiaoyuanjiu.com/10465.html

如何识别 MacBook Pro 机型

1
https://www.jianshu.com/p/45151c1444fd

MacBook - 維基百科,自由的百科全書

1
https://zh.wikipedia.org/wiki/MacBook

iMac (Intel-based) - Wikipedia

1
https://en.wikipedia.org/wiki/IMac_(Intel-based)

iMac Pro - Wikipedia

1
https://en.wikipedia.org/wiki/IMac_Pro

Mac mini - 维基百科,自由的百科全书

1
https://zh.wikipedia.org/wiki/Mac_mini

Mac Pro - 維基百科,自由的百科全書

1
https://zh.wikipedia.org/wiki/Mac_Pro

MacBook Pro - 維基百科,自由的百科全書

1
https://zh.wikipedia.org/wiki/MacBook_Pro

MacBook Air - 維基百科,自由的百科全書

1
https://zh.wikipedia.org/wiki/MacBook_Air

APPLE 电脑型号大全

1
https://blog.csdn.net/zhugq_1988/article/details/42705659

如何获取旧版 macOS

1
https://support.apple.com/zh-cn/HT211683

如何升级至 macOS Big Sur

1
https://support.apple.com/zh-cn/HT201475

iMac - iMac11,1 | Itemcycle

1
https://www.itemcycle.com/imac/id/iMac11,1

iMac - Macmini5,3 | Itemcycle

1
https://www.itemcycle.com/imac/id/Macmini5,3

Apple 15” MacBook Pro (2.53Ghz, Mid 2009); MacBookPro5,4 Installation Guides & Specifications - Macfixit Australia

1
https://support.macfixit.com.au/article/119-apple-15-macbook-pro-253ghz-mid-2009-macbookpro54-installation-guides-specifications

记录一些Opencore黑苹果问题解决方案

1
https://www.cmlnt.com/?p=239

21.5” iMac (Edu, Slim Alum., Early 2013) / 3.3 GHz Core i3 / ME699LL/A

1
https://www.sellyourmac.com/mac-product-guides/imac/me699ll-a-21-5-imac-edu-slim-alum-early-2013-3-3-ghz-core-i3.html

21.5-inch Apple iMac - Late 2013*

1
https://eshop.macsales.com/tech_center/system-specs/iMac2013.09_21.5_143/

Mac & Apple Devices - EveryMac.com’s Ultimate Mac Lookup

1
https://everymac.com/ultimate-mac-lookup/?search_keywords=iMac14,3

黑苹果必备驱动:VirtualSMC 系统管理控制器内核仿冒驱动 1.1.4

1
https://heipg.cn/drivers/virtualsmc-1-1-4.html

[OpenCore] 关于AppleIntelMCEReporter的报错

1
http://bbs.pcbeta.com/forum.php?mod=viewthread&tid=1843338

苹果macOS 10.9~10.15系列原版系统镜像下载

1
https://mac.osystem.club/47.html

X61 安装完黑苹果10.6.4 无法驱动无线网卡

1
http://mac.8miu.com/thread-791955-1-1.html

异常处理

1
https://tinylab-1.gitbook.io/lad-book/zh-cn/kernel/core/exception

Mac OS X for PPC (Mac OS 10)

1
http://macintoshgarden.org/apps/mac-osx-mac-os-10-ppc

Mac OS X Public Beta

1
http://macintoshgarden.org/apps/mac-os-x-public-beta

An Unpatched Kernel Bug

1
https://objective-see.com/blog/blog_0x27.html

[Guide] Gigabyte Z77X UD5H Clover UEFI Install/Tweak guide

1
https://www.insanelymac.com/forum/topic/288829-guide-gigabyte-z77x-ud5h-clover-uefi-installtweak-guide/?_fromLogin=1

‘[IOBluetoothHCIController]…– Missing Bluetooth Controller Transport!’

1
https://www.insanelymac.com/forum/topic/320388-iobluetoothhcicontroller-missing-bluetooth-controller-transport/

使用 Mini vMac 搭建一个 System 7.0 虚拟机

1
https://zhuanlan.zhihu.com/p/57342369?from_voters_page=true

How to Install Mac OS System 1.0 - 7.5 in Mini vMac and Run Classic 68k Applications

1
https://www.youtube.com/watch?v=FhdGxH8lzGA

Open core Boot Menu Keyboard Not Working

1
https://www.reddit.com/r/hackintosh/comments/hdlb6i/open_core_boot_menu_keyboard_not_working/

DRM Compatibility Chart for 10.15

1
https://github.com/acidanthera/WhateverGreen/blob/master/Manual/FAQ.Chart.md

Howto create nVidia EFI string for Geforce the simple way

1
http://forum.netkas.org/index.php?topic=222.0

GPU Buyers Guide

1
https://dortania.github.io/GPU-Buyers-Guide/

使用 QEMU 模拟 PowerPC 版本的 Mac OS X / Classic Mac OS

1
https://blog.qwq.ren/posts/simulation-of-ppc-macos-via-qemu/

Can you virtualize PowerPC versions of Mac OS X on Intel Macs?

1
https://apple.stackexchange.com/questions/22262/can-you-virtualize-powerpc-versions-of-mac-os-x-on-intel-macs

FakeSMC, VirtualSMC, LAN, Sound, Graphics - где взять кексты?

1
https://applelife.ru/threads/fakesmc-virtualsmc-lan-sound-graphics-gde-vzjat-keksty.2942933/page-2#post-744431

[交流] 新手常见(五国)(-v图)错误解决(原版,破解kernel,补丁kext下载)

1
2
https://blog.csdn.net/ashuai81/article/details/8032952
https://blog.csdn.net/JoeBlackzqq/article/details/29359827

[分享] 终于安装上雪豹了,把自己的经验与大家分享,解决了IOATAFamily.kext引起的问题

1
http://bbs.pcbeta.com/viewthread.php?tid=595342

[下载] 最新发布:bootthink 2.5.2 for lion包括WIN版和MAC版~附带Mac OS安装教程

1
http://bbs.pcbeta.com/viewthread-937914-1-1.html

使用 QEMU 模拟 PowerPC 版本的 Mac OS X / Classic Mac OS

1
https://blog.qwq.ren/posts/simulation-of-ppc-macos-via-qemu/

在macos使用qemu安裝windows

1
https://slanla.com/2020-12-17-529

Alternate Guide #1 – OS X Snow Leopard Install using Retail DVD

1
https://tonymacx86.blogspot.com/2009/11/alternate-guide-1-os-x-snow-leopard.html

[分享] 从技术角度谈谈10.11的USB驱动机制,兼论10.11 USB安装盘的花屏禁行问题

1
http://bbs.pcbeta.com/viewthread-1646768-1-1.html

[教程] 新手安装指南:一步一步在Windows安装苹果雪豹系统

1
2
http://bbs.pcbeta.com/viewthread-592288-1-1.html
https://blog.csdn.net/Mamong/article/details/6791740

OCB: boot LoadImage failed - Not Found

1
https://www.tonymacx86.com/threads/ocb-boot-loadimage-failed-not-found.297803/

mac 安装qemu的方法

1
https://blog.csdn.net/qianss520/article/details/90294748

Redundant Robot

1
https://www.redundantrobot.com/sheepshaver

How To Install Mac OS 9 In OS X Using SheepShaver

1
https://www.youtube.com/watch?v=XQAf7GII9NY

Setting up System 7.5.3 with BasiliskII for OSX/macOS

1
https://www.emaculation.com/doku.php/basiliskii_osx_setup#setting_up_system_753_with_basiliskii_for_osx_macos

/r/Hackintosh Multiboot

1
2
https://hackintosh-multiboot.gitbook.io/hackintosh-multiboot/
https://github.com/midi1996/JBOG/blob/master/Multiboot.md

OpenCore 引导迁移折腾记录

1
https://kirainmoe.com/blog/post/opencore-migration-experience/

XStar-Dev’s Blog

1
https://xstar-dev.github.io/

NVRAM Variables

1
https://docs.google.com/spreadsheets/d/1HTCBwfOBkXsHiK7os3b2CUc6k68axdJYdGl-TyXqLu0/

Boot argument options in OS X

1
https://osxeon.wordpress.com/2015/08/10/boot-argument-options-in-os-x/

[教程] Darwin boot loader參數一覽(中文版)

1
http://bbs.pcbeta.com/viewthread-638119-1-3.html

[教程] 【变色龙系列一】Chameleon手动安装说明+ Chameleon 2 RC5 Rev580【11/03更新】

1
http://bbs.pcbeta.com/viewthread.php?tid=797534

[教程] 【变色龙系列二】com.apple.Boot.plist + SMBIOS.plist设定说明【09/22更新】

1
http://bbs.pcbeta.com/viewthread-798366-1-1.html

黑苹果常见kext驱动解读

1
https://macx.top/1972.html

Is there a list of available boot-args for darwin / OS X

1
https://superuser.com/questions/255176/is-there-a-list-of-available-boot-args-for-darwin-os-x

/r/Hackintosh macOS Internet Install

1
https://internet-install.gitbook.io/macos-internet-install/

[交流] DSDT 修改討論 (技嘉) 02/04 更新

1
http://bbs.pcbeta.com/viewthread-633082-1-1.html

[GUIDE] Snow Leopard with 100% vanilla /S/L/E - Comprehensive DSDT patching guide

1
https://www.insanelymac.com/forum/topic/211705-guide-snow-leopard-with-100-vanilla-sle-comprehensive-dsdt-patching-guide/

Mother-FKR/RazerBlade15-Base-Model-Hackintosh_macOS_Big_Sur

1
https://github.com/Mother-FKR/RazerBlade15-Base-Model-Hackintosh_macOS_Big_Sur

[教程] 「教程」简单扯扯用 VMWare 在实体机上装 Big Sur

1
http://bbs.pcbeta.com/forum.php?mod=viewthread&tid=1862049&highlight=big%2Bsur

[Guide] Installing Mountain Lion.

1
https://www.insanelymac.com/forum/topic/277015-guide-installing-mountain-lion/

[Guide] The all-in-one guide to Vanilla OS X (including Chameleon + DSDT) for beginners (updated for Yosemite!)

1
https://www.insanelymac.com/forum/topic/280756-guide-the-all-in-one-guide-to-vanilla-os-x-including-chameleon-dsdt-for-beginners-updated-for-yosemite/

ALL IN ONE GUIDES FOR HACKINTOSH

1
https://www.insanelymac.com/forum/topic/298027-guide-aio-guides-for-hackintosh/

黑苹果常见驱动以及作用介绍

1
http://blog.sina.com.cn/s/blog_4ddc30040102yzho.html

黑果驱动介绍和选择

1
https://zhuanlan.zhihu.com/p/94680998

(GUIDE) Calculating your Bus Ratio

1
https://www.insanelymac.com/forum/topic/240542-guide-getting-your-busratio/

Existing Lilu plugins

1
https://github.com/acidanthera/Lilu/blob/master/KnownPlugins.md

Chameleon 2.4svn Official PKG Installer

1
https://www.insanelymac.com/forum/topic/231075-chameleon-24svn-official-pkg-installer/

[Guide] USB power property injection for Sierra (and later)

1
https://www.tonymacx86.com/threads/guide-usb-power-property-injection-for-sierra-and-later.222266/

Οδηγός Εγκατάστασης MacOSX Lion 10.7 στο project PC (GA-EP35-DS3P). v1.1

1
https://howtomacospc.wordpress.com/2011/12/02/%CE%BF%CE%B4%CE%B7%CE%B3%CF%8C%CF%82-%CE%B5%CE%B3%CE%BA%CE%B1%CF%84%CE%AC%CF%83%CF%84%CE%B1%CF%83%CE%B7%CF%82-macosx-lion-10-7-2-%CF%83%CF%84%CE%BF-project-pc-ga-ep35-ds3p-v1-1/

The Always Up-to-Date Guide to Building a Hackintosh (macOS Sierra)

1
https://lifehacker.com/the-always-up-to-date-guide-to-building-a-hackintosh-o-5841604

How to easily install Mac OS X Lion on your PC / Laptop Osx86 Hackintosh Walkthrough / Tutorial

1
https://www.youtube.com/watch?v=f6gnFSwRVpI

Δημιουργία DVD Mac OS X Lion installation για PC (video)

1
https://howtomacospc.wordpress.com/2011/10/30/%ce%b4%ce%b7%ce%bc%ce%b9%ce%bf%cf%85%cf%81%ce%b3%ce%af%ce%b1-dvd-lion-installation-%ce%b3%ce%b9%ce%b1-pc/

Installation Guides

1
https://wiki.osx86project.org/wiki/index.php/Installation_Guides

Cómo activar Intel HD 2500 ga-z77-d3h en OS X 10.8.5 Mountain Lion

1
https://www.osx86spain.com/52/47197/como-activar-intel-hd-2500-ga-z77-d3h-en-os-x-10-8-5-mountain-lion.html

Install OS X Lion 10.7.2, 10.7.3 on PC Hackintosh [USB]

1
https://geeknizer.com/install-osx-lion-10-7-2-on-pc-hackintosh-usb/

Install Snow Leopard on PC

1
https://geeknizer.com/install-snow-leopard-on-pc/

Retail OS X Install (10.5.7) on Gigabyte GA-EX58-UD5 (Core i7) Mobo, Scripted

1
https://wiki.osx86project.org/wiki/index.php/Retail_OS_X_Install_%2810.5.7%29_on_Gigabyte_GA-EX58-UD5_%28Core_i7%29_Mobo%2C_Scripted

Dual Boot Windows 7 and OS X Snow Leopard Using Chameleon

1
https://tonymacx86.blogspot.com/2009/11/dual-boot-windows-7-and-os-x-snow.html

Build a Hackintosh Mac for Under $800

1
https://lifehacker.com/build-a-hackintosh-mac-for-under-800-321913

Инсталация на mac os x 10.5.x на ПЦ с дуалбуут

1
https://www.kaldata.com/forums/topic/157610-%D0%B8%D0%BD%D1%81%D1%82%D0%B0%D0%BB%D0%B0%D1%86%D0%B8%D1%8F-%D0%BD%D0%B0-mac-os-x-105x-%D0%BD%D0%B0-%D0%BF%D1%86-%D1%81-%D0%B4%D1%83%D0%B0%D0%BB%D0%B1%D1%83%D1%83%D1%82/

creating a kext disabler

1
https://www.tonymacx86.com/threads/creating-a-kext-disabler.48254/

【持续更新】OpenCore引导-v各种卡及OC引导常见问题解决方案速查表合集

1
http://imacos.top/2021/01/19/0154/

How to update to 10.5.2./10.5.3

1
http://netkas.org/?p=50

Triple Boot Windows 7, Mac OS X Snow Leopard & Ubuntu 10.04

1
https://bigfloppydonkeydisk.blogspot.com/2010/07/triple-boot-windows-7-mac-os-x-snow.html

Vista bootloader

1
https://wiki.osx86project.org/wiki/index.php/Vista_bootloader

Understanding MAC OSx86 for Dummies

1
https://geeknizer.com/understanding-mac-osx86-for-dummies/

Download, Install Chameleon RC4 Bootloader

1
https://geeknizer.com/download-install-chameleon-bootloader/

Dual Booting Windows 7 and Snow Leopard on a HP dv5 Laptop - The Definitive Guide!

1
https://kylesinterestingstuff.blogspot.com/2010/06/dual-booting-windows-7-and-snow-leopard.html

Install Mac OS X – HP DV1000

1
https://cisco21c.wordpress.com/2011/01/21/install-mac-os-x-hp-dv1000/

Instalación OS X 10.9 Mavericks con MyHack

1
https://www.osx86spain.com/148/47060/instalacion-os-x-10-9-mavericks-con-myhack.html#

How to Build a Hackintosh with Snow Leopard, Start to Finish

1
https://lifehacker.com/how-to-build-a-hackintosh-with-snow-leopard-start-to-f-5351485

Installation Guides/Kalyway DualBoot 10.5.2

1
https://wiki.osx86project.org/wiki/index.php/Installation_Guides/Kalyway_DualBoot_10.5.2

Install Snow Leopard on Your Hackintosh PC, No Hacking Required

1
https://lifehacker.com/install-snow-leopard-on-your-hackintosh-pc-no-hacking-5360150

How to Install SnowOSX Universal

1
https://geeknizer.com/how-to-install-snowosx-universal/

Install OS X 10.8 Mountain Lion on PC Hackintosh [Bootable USB]

1
https://geeknizer.com/install-osx-mountain-lion-on-pc-hackintosh-usb/

Make Bootable USB Mountain Lion Install Disk drive [Easy]

1
https://geeknizer.com/make-bootable-usb-mountain-lion-install-disk-drive/

Install Mac OS X Lion 10.7 on PC Hackintosh

1
https://geeknizer.com/install-mac-os-lion-10-7-on-pc-hackintosh/

Installation Guides/Existing Leopard Method

1
https://wiki.osx86project.org/wiki/index.php/Installation_Guides/Existing_Leopard_Method

Snow Leopard on Samsung R519

1
https://www.unix-master.com/2013/06/snow-leopard-on-samsung-r519.html

Using “myHack installer” with additional custom kext files

1
https://wiki.osx86project.org/wiki/index.php/Using_%22myHack_installer%22_with_additional_custom_kext_files

How to Build a Hackintosh Mac and Install OS X in Eight Easy Steps

1
https://lifehacker.com/how-to-build-a-hackintosh-mac-and-install-os-x-in-eight-5672051

Hackintosh Upgrades Without Problems to 10.6.1

1
https://lifehacker.com/hackintosh-upgrades-without-problems-to-10-6-1-5356864

Make Bootable USB [OSx86, Snow Leopard]

1
https://geeknizer.com/make-bootable-usb-mac-osx86-snow-leopard/

Install Mac OS X Leopard OSx86 on PC Dual Boot Windows 7, Vista in 9 Easy Steps

1
https://geeknizer.com/install-mac-os-x-leopard-osx86-on-pc-dual-boot-windows-7-vista-in-9-easy-steps/

OSX 10.6.8 running on Toshiba M305

1
https://thetalesnet.wordpress.com/2011/06/28/osx-10-6-8-running-on-toshiba-m305/

How to install 10.4.4 on Dell Inspiron 8500

1
https://wiki.osx86project.org/wiki/index.php/How_to_install_10.4.4_on_Dell_Inspiron_8500

The Dual boot Tutorial With installing (Snow) Leopard and Windows 7 on a PC OSX86 Tutorial

1
https://www.youtube.com/watch?v=ZRHbmsVZ3ww

Install Mac OSX Snow Leopard 10.6.6 VMware on Windows PC

1
https://geeknizer.com/install-mac-osx-snow-leopard-10-6-6-vmware-on-windows-pc/

How to install OS X 10.9 Mavericks on your PC with myHack

1
http://www.macbreaker.com/2013/06/how-to-install-os-x-109-mavericks-dp1.html

Quad booting

1
https://wiki.osx86project.org/wiki/index.php/Quad_booting

Make Bootable USB, DVD drive for OS X Lion Installation

1
https://geeknizer.com/make-bootable-usb-dvd-drive-os-x-lion-installation/

Wingrub instead of Grub

1
https://wiki.osx86project.org/wiki/index.php/Wingrub_instead_of_Grub

Multibooting

1
https://wiki.osx86project.org/wiki/index.php/Multibooting

Stock XP and OS X Dual Boot

1
https://wiki.osx86project.org/wiki/index.php/Stock_XP_and_OS_X_Dual_Boot

MacOSx86 10.4.5 via VMWare on WinXP Pro Sp2

1
https://buddhistnerd.blogspot.com/2006/06/namaste-friends.html

Install Snow Leopard on PC [USB]

1
https://geeknizer.com/install-snow-leopard-on-pc-easy/

How to Troubleshoot a Hackintosh

1
https://lifehacker.com/how-to-troubleshoot-a-hackintosh-5845186

Install Mac OS X Leopard OSx86 on PC Dual Boot Windows 7, Vista in 9 Easy Steps

1
https://geeknizer.com/install-mac-os-x-leopard-osx86-on-pc-dual-boot-windows-7-vista-in-9-easy-steps/

10.5.5 on the Dell Inspiron/mini 9

1
https://wiki.osx86project.org/wiki/index.php/10.5.5_on_the_Dell_Inspiron/mini_9

Install to a USB Hard Drive

1
https://wiki.osx86project.org/wiki/index.php/Install_to_a_USB_Hard_Drive

Intel 3945 Wireless Driver for Snow Leopard [Hackintosh]

1
https://geeknizer.com/intel-3945abg-wireless-snow-leopard-hackintosh/

ZDNet.de - Praxis: Installation von Mac OS X 10.6 auf einem PC

1
https://www.youtube.com/watch?v=lfzXhzMrruI

The Dual boot Tutorial With installing (Snow) Leopard and Windows 7 on a PC OSX86 Tutorial

1
https://www.youtube.com/watch?v=ZRHbmsVZ3ww

Mac OS X86!!! Run Mac natively on windows

1
https://drchoc.blogspot.com/2006/04/mac-os-x86-run-mac-natively-on-windows.html

Το OS X x86 στο windows-PC σας!

1
https://makosxgr.blogspot.com/

Simple Dual Boot

1
https://wiki.osx86project.org/wiki/index.php/Simple_Dual_Boot

Triple Booting Windows, Linux, and OSX86.

1
https://cy8erpunkthunk.blogspot.com/2006/03/triple-booting-windows-linux-and-osx86.html

Installatie van Kalyway/OSX en bootloader Vista/XP

1
https://docs.google.com/document/d/1RO_-oS4h3_i3iA-buWXoHQM3Q9ocg87ACKz-zvtkWl8/edit

Mac osx86 iDeneb 10.5.6

1
https://pools.wordpress.com/2009/02/26/mac-osx86-ideneb-1056/

Atualizando o iDeneb da versão 10.5.6 para a 10.5.7

1
https://pools.wordpress.com/2009/06/29/atualizando-o-ideneb-da-versao-10-5-6-para-a-10-5-7/

Atualizando o iDeneb para a versão 10.5.8

1
https://pools.wordpress.com/2009/08/12/atualizando-o-ideneb-para-a-versao-10-5-8/

Installation Guides/Pentium4D-G31M-GS-R2.html

1
https://wiki.osx86project.org/wiki/index.php/Installation_Guides/Pentium4D-G31M-GS-R2.html

Using a British/UK Windows keyboard with an Apple Mac in OS X (3)

1
https://www.gyford.com/phil/writing/2005/11/20/using-a-british/

Install Mac OS X Leopard OSx86 on PC Dual Boot Windows 7, Vista in 9 Easy Steps

1
https://geeknizer.com/install-mac-os-x-leopard-osx86-on-pc-dual-boot-windows-7-vista-in-9-easy-steps/

Praxis: Installation von Mac OS X 10.6 auf einem PC

1
https://www.zdnet.de/41502928/praxis-installation-von-mac-os-x-10-6-auf-einem-pc/

Installation Guide in Turkish

1
https://wiki.osx86project.org/wiki/index.php/Installation_Guide_in_Turkish

Programas Essenciais no MacOSX

1
https://pools.wordpress.com/2009/03/29/60/

Como instalar o Windows XP, Mac OSX86 10.5.6 e o Linux Ubuntu 9.04 no PC com Triple Boot!

1
https://pools.wordpress.com/2009/06/29/como-instalar-windows-xp-mac-osx86-ubuntu-904-triple-boot/

Mac OS X Leopard Retail Installation Simple Guide

1
https://web.archive.org/web/20120510121540/http://3rr0rists.net/macintosh/mac-os-x-leopard-retail-installation-simple-guide.html

How To Install Mac OS X Lion on PC

1
https://web.archive.org/web/20120324081231/http://3rr0rists.net/macintosh/how-to-install-mac-os-x-lion-on-pc.html

How To Install Snow Leopard Retail on a PC

1
https://web.archive.org/web/20120324031242/http://3rr0rists.net/macintosh/how-to-install-snow-leopard-retail-in-a-pc.html

Installing OS X Snow Leopard

1
2
3
http://lnx2mac.blogspot.com/2010/07/installing-os-x-snow-leopard-part-one.html
http://lnx2mac.blogspot.com/2010/07/installing-os-x-snow-leopard-part-two.html
http://lnx2mac.blogspot.com/2010/07/installing-os-x-snow-leopard-part-three.html

Inverting direction of mouse scroll wheel

1
https://superuser.com/questions/310681/inverting-direction-of-mouse-scroll-wheel/364353#364353

OpenCore 简体中文参考手册

1
https://oc.skk.moe/

Optimal BIOS Configuration

1
http://lnx2mac.blogspot.com/2010/07/optimal-bios-configuration.html

[GUIDE] HP ProBook 4530s with Lion 10.7.5

1
https://www.insanelymac.com/forum/topic/282994-guide-hp-probook-4530s-with-lion-1075

10.9 Mavericks Simple Vanilla Hackintosh Install Guide

1
https://www.insanelymac.com/forum/topic/289062-109-mavericks-simple-vanilla-hackintosh-install-guide/

[Guide] El Capitan, Sierra / High Sierra / Mojave / Catalina on Intel 5, 6, 7, 8, 9 Chipset Series / Nehalem, SandyBridge, IvyBridge, Haswell, Broadwell

1
https://www.insanelymac.com/forum/topic/323052-guide-el-capitan-sierra-high-sierra-mojave-catalina-on-intel-5-6-7-8-9-chipset-series-nehalem-sandybridge-ivybridge-haswell-broadwell/

10.11.0-10.11.3 Skylake Starter Guide

1
https://www.tonymacx86.com/threads/10-11-0-10-11-3-skylake-starter-guide.179221/

[Guide] 10.11+ USB changes and solutions

1
https://www.tonymacx86.com/threads/guide-10-11-usb-changes-and-solutions.173616/

[Guide] Alternative to the minStolenSize patch with 32mb DVMT-prealloc

1
https://www.tonymacx86.com/threads/guide-alternative-to-the-minstolensize-patch-with-32mb-dvmt-prealloc.221506/

iBoot + MultiBeast: Install Mac OS X on any Intel-based PC

1
https://tonymacx86.blogspot.com/2010/04/iboot-multibeast-install-mac-os-x-on.html

Tweaking Your System: Install Chameleon, DSDT, & Extras to EFI Partition

1
https://tonymacx86.blogspot.com/2010/01/tweaking-your-system-install-chameleon.html

How to Install Snow Leopard on PC [Hackintosh]

1
https://geeknizer.com/how-to-install-mac-os-x-snow-leopard-on-pc-dual-boot/

Cómo Instalar Mac OS X desde wmware para iniciar en nativo

1
https://www.osx86spain.com/107/4229/c-mo-instalar-mac-os-x-desde-wmware-para-iniciar-en-nativo.html

How to Install Snow Leopard on VirtualBox

1
https://geeknizer.com/install-snow-leopard-virtualbox/

How to Install Snow Leopard [VMWare]

1
https://geeknizer.com/how-to-install-snow-leopard-vmware-workstation-windows/

Install Mac OS X in VirtualBox [Snow Leopard]

1
https://geeknizer.com/install-mac-os-in-virtualbox/

[教程] 通过加载AppleLPC.kext来使用MAC原生的CPU电源管理

1
http://bbs.pcbeta.com/viewthread.php?tid=594984

3rdPartyDrivers

1
https://wiki.osx86project.org/wiki/index.php/3rdPartyDrivers

First generation Intel HD Graphics on macOS

1
https://github.com/Goldfish64/ArrandaleGraphicsHackintosh

Завод Intel® Quick Sync Video

1
https://www.applelife.ru/threads/zavod-intel-quick-sync-video.817923/

Установка macOS High Sierra 10.13 на intel PC

1
https://www.applelife.ru/threads/ustanovka-macos-high-sierra-10-13-na-intel-pc.2210706/page-742#post-730496

Intel® HD Graphics FAQs

1
https://github.com/acidanthera/WhateverGreen/blob/master/Manual/FAQ.IntelHD.en.md

Intel® HD Graphics

1
https://www.applelife.ru/threads/intel-hd-graphics.1289648/page-170#post-750369

WhateverGreen/Manual/AzulPatcher4600_equivalent.plist

1
https://github.com/acidanthera/WhateverGreen/blob/master/Manual/AzulPatcher4600_equivalent.plist

GUIDE: Using a EFI Graphics string

1
http://forum.netkas.org/index.php/topic,66.0.html

GFX Strings Walkthrough

1
https://aquamac.proboards.com/thread/509

Intel Gma950 32bit only

1
https://www.applelife.ru/threads/intel-gma950-32bit-only.22726/

Install Snow Leopard on a PC / Laptop (OSX86) Tutorial/guide

1
https://www.youtube.com/watch?v=RVan49_Vm_I

Anti-Hackintosh Buyers Guide

1
https://dortania.github.io/Anti-Hackintosh-Buyers-Guide/

Выбор комплектующих для Mac OS X (Hackintosh)

1
https://4pda.to/forum/index.php?showtopic=72333

CPU Compatibility

1
https://hackintoshenglish.fandom.com/wiki/CPU_Compatibility

Установка macOS Catalina 10.15 на intel PC

1
2
https://applelife.ru/threads/ustanovka-macos-catalina-10-15-na-intel-pc.2944136/page-43#post-810430
https://applelife.ru/threads/ustanovka-macos-catalina-10-15-na-intel-pc.2944136/page-39#post-810111

Установка macOS Big Sur 11.0 beta на intel PC (old)

1
https://applelife.ru/threads/ustanovka-macos-big-sur-11-0-beta-na-intel-pc-old.2944999/page-81#post-884400

One box, every x86 install! HP DC 7900

1
https://www.reddit.com/r/hackintosh/comments/j0d6t0/one_box_every_x86_install_hp_dc_7900/

Getting started with ACPI

1
https://dortania.github.io/Getting-Started-With-ACPI/

HP Compaq DC7900 SFF

1
2
https://github.com/khronokernel/trashOS
https://github.com/khronokernel/trashOS/tree/master/HP-Compaq-DC7900

Multiboot with OpenCore

1
https://dortania.github.io/OpenCore-Multiboot/

OpenCore-Install-Guide/clover-conversion

1
https://github.com/dortania/OpenCore-Install-Guide/tree/master/clover-conversion

faq - hackintosh

1
https://www.reddit.com/r/hackintosh/wiki/faq#wiki_hackintoshing_reddit_faq

使用 OpenCL 和 OpenGL 图形处理程序的 Mac 电脑

1
https://support.apple.com/zh-cn/HT202823

Introduction - USB Map

1
https://usb-map.gitbook.io/project/

[Guide] Intel Framebuffer patching using WhateverGreen

1
https://www.tonymacx86.com/threads/guide-intel-framebuffer-patching-using-whatevergreen.256490/

Установка macOS Big Sur 11.0 beta на intel PC (old)

1
https://applelife.ru/threads/ustanovka-macos-big-sur-11-0-beta-na-intel-pc-old.2944999/page-81#post-884400

APFS Snapshots: Rolling Back to a Previous Known State

1
https://www.lifewire.com/roll-back-apfs-snapshots-4154969

Making a bootable High Sierra USB Installer Entirely From Scratch in Windows or Linux Mint (without access to Mac or App Store Installer.app)

1
https://www.insanelymac.com/forum/topic/329828-making-a-bootable-high-sierra-usb-installer-entirely-from-scratch-in-windows-or-linux-mint-without-access-to-mac-or-app-store-installerapp/

Clover v.2 Instructions

1
https://www.insanelymac.com/forum/topic/282787-clover-v2-instructions/

Big Sur on unsupported Macs TL;DR

1
https://lynx.pink/big-sur-unsupported-macs-tldr/#/

BasiliskII for Linux

1
https://emaculation.com/doku.php/basiliskii_linux_setup

Extracting a ROM for use in SheepShaver using Basilisk II

1
https://emaculation.com/doku.php/sheepshaver_roms

SheepShaver Brings the Classic Mac OS to Intel Macs and Leopard

1
https://lowendmac.com/2008/sheepshaver-brings-the-classic-mac-os-to-intel-macs-and-leopard/

Mac OS 11.3 has broken support for older Mac Pros

1
https://forums.macrumors.com/threads/mac-os-11-3-has-broken-support-for-older-mac-pros.2289056/

QEMU/Mac OS 9

1
https://en.wikibooks.org/wiki/QEMU/Mac_OS_9

Qemu [E-Maculation wiki]

1
https://www.emaculation.com/doku.php/qemu

Mini vMac for iOS

1
https://namedfork.net/minivmac/

SheepShaver for Linux

1
https://www.emaculation.com/doku.php/ubuntu

Pattern of MLB (Main Logic Board) serial

1
https://www.insanelymac.com/forum/topic/303073-pattern-of-mlb-main-logic-board/s

Olarila

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
https://www.olarila.com/topic/9679-olarila-big-sur-beta-5-vanilla-image-restore-mode-easy-way-opencore/
https://www.olarila.com/topic/5794-hackintosh-guide-install-macos-with-vanilla-olarila-image-step-by-step-install-and-post-install-windows-linux-or-mac/
https://www.olarila.com/topic/13072-dual-boot-guide-clover-and-open-core/
https://www.olarila.com/topic/6185-guide-how-to-create-a-personal-vanilla-macos-highsierra-mojave-catalina-big-sur-image-or-usb-installer/
https://www.olarila.com/topic/12857-how-to-mount-efi-partition-on-macos-or-windows/
https://www.olarila.com/topic/9530-install-macos-catalina-big-sur-on-mobos-serie-300-400-500-with-intel-8th-9th-10th-11th-gen-desktop-processors-using-opencore-or-clover-bootloader/
https://www.olarila.com/topic/6074-guide-easy-audio-solution-with-applealc-clover-and-opencore/
https://www.olarila.com/topic/923-dsdt-patch-requests/
https://www.olarila.com/topic/9089-olarila-big-sur-beta-6-vanilla-image-usb-installation/
https://www.olarila.com/topic/13019-guide-dual-boot-with-opencore-with-full-acpi-and-real-vanilla-solution/
https://www.olarila.com/topic/14220-video-guide-usb-port-mapping-guide-2021-bigsur-113-with-no-xhci-port-limit/
https://www.olarila.com/topic/8918-opencore-vanilla-guide-step-by-step-full-dsdt-patched-or-ssdt/
https://www.olarila.com/topic/6181-guide-native-usb-fix-for-desktops-no-injectorkext-required-skylake/
https://www.olarila.com/topic/6878-guide-native-usb-fix-for-notebooks-no-injectorkext-required/
https://www.olarila.com/topic/9390-video-guide-usb-port-mapping-with-hackintool/
https://www.olarila.com/topic/5676-folders-for-all-chipsets-clover-and-opencore/
https://www.olarila.com/topic/5295-guide-hardware-encoder-hardware-decoder-video-processing-hevc-support-intel-quick-sync/
https://www.olarila.com/topic/8930-guide-easy-brightness-hotkey-remapping/
https://www.olarila.com/topic/12709-guide-all-supported-amd-cards-clover-and-opencore-fake-id-method/
https://www.olarila.com/topic/6420-guide-mobile-intel-hd-graphics-clover-or-opencore/