前言
眾多黑蘋果驅(qū)動(dòng)的作者已經(jīng)停止對(duì)Clover的兼容支持,改向Opencore的兼容版姑。所以也許在未來(lái)的某一天童叠,Clover就越來(lái)越難用了。提前了解了解OpenCore唇兑,還是很有必要的。但是OpenCore畢竟沒(méi)有Clover成熟桦锄,同樣也沒(méi)有很好用的可視化編輯器(OpenCore Configurator會(huì)導(dǎo)致config出錯(cuò)扎附,慎用),fix的選項(xiàng)也沒(méi)有察纯,對(duì)hotpatch的要求就高了帕棉。經(jīng)過(guò)一周的摸索,總結(jié)一些OC的坑饼记,幫助以后的朋友少走一些彎路香伴。
系統(tǒng)10.15.1→10.15.3自動(dòng)更新順利。之后升級(jí)OpenCore版本出現(xiàn)問(wèn)題具则,0.5.2→0.5.5即纲,卡驅(qū)動(dòng)。找到問(wèn)題后在文章中增加版本更新方法博肋,需要可以研究一下低斋。
我的配置
雷 神 G170P 筆 記 本蜂厅,藍(lán) 天(CLEVO)P170SMA模 具
CPU:Core i7-4710MQ 2.50GHz
主 板:CLEVO P17SM-A
硬 盤:威剛SSD 256GB
內(nèi) 存:16 GB ( 威 剛 DDR3L 1600MHz )
顯 卡:Nvidia GTX970M(DSDT屏蔽) Intel HD4600
有 線 網(wǎng) 卡:瑞 昱 RTL8168/8111/8112
無(wú) 線 網(wǎng) 卡:博通BCM94352HMB(原 裝intel網(wǎng) 卡,無(wú) 解)
聲 卡:Realtek ALC892
目錄
一.準(zhǔn)備工作
二.調(diào)試Config.plist
三.調(diào)試驅(qū)動(dòng)
四.OpenCore更新
一膊畴、準(zhǔn)備工作
準(zhǔn)備工作分為以下幾步:
①.在Clover引導(dǎo)下掘猿,正常運(yùn)行macOS系統(tǒng)
②.BIOS設(shè)置
③.下載最新的OpenCore
④.安裝Xcode或使用ProperTree
⑤.efi基礎(chǔ)驅(qū)動(dòng)
⑥.U盤或硬盤建立引導(dǎo)分區(qū)
⑦.確認(rèn)電腦是否支持原生NVRAM
①?至少要先用Clover安裝系統(tǒng),并能夠正常進(jìn)入macOS系統(tǒng)唇跨,這樣能測(cè)試OC能方便很多稠通。如果零基礎(chǔ)從OC直接安裝系統(tǒng),難度比較大买猖。對(duì)于已經(jīng)配置好Clover的改橘,則需要精簡(jiǎn)EFI,把不必要的驅(qū)動(dòng)玉控,dsdt和ssdt刪除飞主。防止OC使用過(guò)程中不兼容導(dǎo)致的問(wèn)題。
②?BIOS設(shè)置
禁用
| Fast Boot | ??????????? | 快速啟動(dòng) |
| CFG Lock |???????????? | CFG鎖 |
| VT-d |?????????????????????| Hyper Threading |
| CSM |?????????????????????| 兼容性支持模塊 |
啟用
| VT-x | ?????????????????????????????? | VT-x |
| Above 4G decoding |????? | 大于4G地址空間解碼 |
| Hyper Threading |???????????| 超線程|
| Execute Disable Bit |???????| 執(zhí)行禁止位 |
| EHCI/XHCI Hand-off |?????| 接手EHCI/XHCI控制 |
|OS type:Windows 8.1/10|?????|操作系統(tǒng)類型Windows8.1/10|
③?下載最新的OpenCore
OpenCore-Releases:https://github.com/williambj1/OpenCore-Factory/releases
官方發(fā)布頁(yè)下載的文件包里的Docs文件夾內(nèi)的samplefull.plist改名為config.plist作為基礎(chǔ)配置自己的OC高诺。
④?對(duì)于OC中Config.plist碌识,Xcode是最好的選擇。其次是ProperTree懒叛。
Plist Editor Pro會(huì)破壞結(jié)構(gòu)丸冕,不能轉(zhuǎn)換Base64.
OpenCore Configurator目前更新速度落后于OpenCore耽梅,因此會(huì)導(dǎo)致Config的損壞
⑤?efi基礎(chǔ)驅(qū)動(dòng)
- ApfsDriverLoader.efi 或 Apfs.efi ???? 識(shí)別APFS分區(qū)
- FwRuntimeServices.efi ????用來(lái)替換AptioMemoryFix.efi
- UsbKbDxe.efi ????OC內(nèi)置驅(qū)動(dòng)不工作薛窥,可以提供Apple熱鍵和FileVault的支持⊙劢悖卡OC引導(dǎo)界面诅迷,可以刪除
- VirtualSMC.efi ????配合VirtualSMC.kext使用,不能和FakeSMC.kext同時(shí)使用众旗。
- VBoxHfs.efi 或 HFSPlus.efi ????識(shí)別HFS分區(qū)罢杉,對(duì)于不能進(jìn)入Recovery,需要使用HFSPlus.efi
- EmuVariableRuntimeDxe.efi ?? ?模擬NVRAM贡歧,對(duì)于沒(méi)有原生NVRAM滩租,需要此驅(qū)動(dòng)(該驅(qū)動(dòng)已和最新的FwRuntimeServices.efi合并,建議使用最新驅(qū)動(dòng))
將需要的驅(qū)動(dòng)利朵,放置在EFI——OC——Drivers中律想,同時(shí)在Config.plist——UEFI——Drivers添加efi驅(qū)動(dòng)名
⑥?使用硬盤工具新建一個(gè)esp(Fat16)新分區(qū),空間不低于200MB來(lái)存放绍弟。U盤或硬盤分區(qū)都可以技即。我是在Windows中使用DiskGenius分的區(qū)。
⑦確認(rèn)電腦是否支持原生NVRAM
打開終端輸入:
sudo nvram TestVar=HelloWorld
然后輸入密碼
重啟系統(tǒng)后輸入:sudo nvram -p | grep 'TestVar'
如果顯示:TestVar HelloWorld
說(shuō)明原生支持NVRAM
二樟遣、調(diào)試Config.plist
OC的Config.plist與Clover的Config.plist結(jié)構(gòu)有很大的不同而叼,因此不能通用身笤。整體結(jié)構(gòu)以及說(shuō)明參考黑果小兵:精解OpenCore和XJN`S BLOG:使用OpenCore引導(dǎo)黑蘋果,以下主要說(shuō)明容易出現(xiàn)的問(wèn)題葵陵。OC中的config.plist是由Docs文件夾內(nèi)的samplefull.plist改名而來(lái)液荸。
①M(fèi)isc—security—requiresignature—NO
防止出現(xiàn)報(bào)錯(cuò):OC:configuration signed vault but no public key provided
②misc—security—requirevault—NO
防止出現(xiàn)報(bào)錯(cuò):OC:configuration requires vault but no vault procided
③可以刪除 #WARNING - 1 和 #WARNING - 2等
④Booter—Quirks—DisableVariableWrite—NO
禁止NVRAM寫入,沒(méi)有原生macOS支持NVRAM需要開啟
⑤DeviceProperties—Add可以加入設(shè)備硬件地址以及補(bǔ)丁
可以使用Hackintool應(yīng)用補(bǔ)丁生成設(shè)備硬件代碼驅(qū)動(dòng)硬件
例如:核顯驅(qū)動(dòng)脱篙、核顯緩沖幀莹弊、EDID注入,聲卡LayoutID注入涡尘、讀卡器等等
注意:這里使用的代碼與Clover的Config.plist中的Devices—Properties的代碼通用
⑥OC上所有的kext忍弛、.efi驅(qū)動(dòng)、.aml補(bǔ)丁都需要填入config.plist考抄,并且都有加載順序细疚,有依賴的驅(qū)動(dòng)要放在所依賴的驅(qū)動(dòng)之后。
注意:Kernel—Add??按加載順序加入kext名稱
????????????ACPI—Add??按加載順序加入.aml名稱
????????????UEFI—Drivers??按加載順序加入.efi驅(qū)動(dòng)名稱
⑦Kernel—Quirks—XhciPortLimit: YES
USB的15個(gè)端口限制補(bǔ)丁川梅,建議定制USB后關(guān)閉該選項(xiàng)
⑧Misc—Boot—ShowPicker: YES
顯示OpenCore的UI疯兼,可選引導(dǎo)項(xiàng)。
⑨NVRAM—LegacyEnable: NO
允許將 NVRAM 存儲(chǔ)在 nvram.plist 中, 沒(méi)有原生 NVRAM 的設(shè)備必須開啟
⑩NVRAM—7C436110-AB2A-4BBB-A880-FE41995C9F82—csr-active-config: bytes = 0xe7030000 - SIP 完全關(guān)閉
?設(shè)置默認(rèn)語(yǔ)言為中文贫途,在NVRAM—7C436110-AB2A-4BBB-A880-FE41995C9F82—prev-lang:kbd中填入<7a682d48 616e733a 323532>(需要NVRAM支持吧彪,不支持原生NVRAM或者沒(méi)弄好模擬NVRAM不生效)
?Misc—Security—AllowNvramReset:YES
在OC引導(dǎo)界面顯示 Reset NVRAM選項(xiàng)
注意:如果用Clover啟動(dòng)過(guò)系統(tǒng)后,再用OpenCore啟動(dòng)系統(tǒng)丢早,需要執(zhí)行Reset NVRAM來(lái)清除NVRAM姨裸。清除NVRAM,會(huì)清除BIOS自定義引導(dǎo)項(xiàng)名稱怨酝。
?Misc—Security—ScanPolicy:0
在OC引導(dǎo)界面顯示所有可用硬盤
定義:
(01)0x00000001 — 限定為文件系統(tǒng)傀缩,由以下允許掃描文件系統(tǒng)子項(xiàng)
開啟
(02)0x00000002 — 限定為設(shè)備類型,由以下允許掃描設(shè)備類型子項(xiàng)
開啟
?允許掃描文件系統(tǒng)子項(xiàng)
:
(03)0x00000100 — 允許掃描APFS文件系統(tǒng)
(04)0x00000200 — 允許掃描HFS文件系統(tǒng)
(05)0x00000400 — 允許掃描EFI系統(tǒng)分區(qū)文件系統(tǒng)
?允許掃描設(shè)備類型子項(xiàng)
:
(06)0x00010000 — 允許掃描SATA設(shè)備
(07)0x00020000 — 允許掃描SAS和Mac NVMe設(shè)備
(08)0x00040000 — 允許掃描SCSI設(shè)備
(09)0x00080000 — 允許掃描NVMe設(shè)備
(10)0x00100000 — 允許掃描CD / DVD設(shè)備
(11)0x00200000 — 允許掃描USB設(shè)備
(12)0x00400000 — 允許掃描FireWire設(shè)備
(13)0x00800000 — 允許掃描讀卡器設(shè)備
掃描策略數(shù)值
=(01)+(02)+1個(gè)或數(shù)個(gè)允許掃描文件系統(tǒng)子項(xiàng)
+1個(gè)或數(shù)個(gè)允許掃描設(shè)備類型子項(xiàng)
例如:希望掃描對(duì)象是APFS文件系統(tǒng)的USB設(shè)備农猬,掃描策略數(shù)值
=(01)+(02)+(03)+(11)赡艰,經(jīng)16進(jìn)制加法計(jì)算得出,掃描策略數(shù)值
=0x200103
斤葱。
注意
慷垮,使用時(shí)需將16進(jìn)制轉(zhuǎn)換為10進(jìn)制。示例最終掃描策略數(shù)值
=2097411
?ACPI—Patch放入dsdt揍堕、ssdt補(bǔ)丁
Kernel—Patch放入kext補(bǔ)丁
?PlatformInfo中直接刪除Datahub,PlatfromNVRAM,SMBIOS這三項(xiàng)料身,無(wú)需填寫。
?IgnoreInvalidFlexRatio: YES
(在 BIOS 中無(wú)法禁用 MSR_FLEX_RATIO(0x194) 鹤啡,或OpenCore卡引導(dǎo)項(xiàng)時(shí)開啟)
注意:部分OpenCore卡引導(dǎo)項(xiàng)惯驼,是由于UsbKbDxe.efi與鍵盤不兼容導(dǎo)致的,刪除UsbKbDxe.efi即可
三、調(diào)試驅(qū)動(dòng)
以我自身的驅(qū)動(dòng)來(lái)說(shuō)明
①建議使用VirtualSMC.kext祟牲,因?yàn)樾枰cDrivers中的VirtualSMC.efi配合
②建議定制USB驅(qū)動(dòng)隙畜,如自定義的USBInjectAll.kext、USBPorts.Kext说贝、或加載SSDT-UIAC
③建議定制聲卡驅(qū)動(dòng)议惰,雖然萬(wàn)能聲卡驅(qū)動(dòng)也支持OC
④VoodooPS2Controller.kext與ApplePS2SmartTouchPad.kext中存在插件kext,在Config.plist中Kernel—Add分別加入
⑤.kext中沒(méi)有驅(qū)動(dòng)乡恕,只有info.plist的言询,Kernel—Add加入info.plist的path,不必加入kext的path傲宜。
⑥建議核顯驅(qū)動(dòng)使用Hackintool應(yīng)用補(bǔ)丁生成核顯代碼运杭、相關(guān)補(bǔ)丁以及EDID的注入,防止添加過(guò)多kext影響兼容性函卒,同時(shí)定義CPU接口辆憔,方便加載HDMI視頻音頻
四、OpenCore版本更新
寫這篇文章時(shí)我的系統(tǒng)版本是10.15.1报嵌,OC是0.5.2虱咧。之后更新為10.15.3和0.5.5。
更新OpenCore版本需要注意以下四點(diǎn):
①做好原有EFI的備份锚国,config.plist—NVRAM—Add—7C4361......—boot-args中添加-v腕巡,更新時(shí)出錯(cuò),可以及時(shí)發(fā)現(xiàn)問(wèn)題
②下載最新OpenCore血筑,替換原有EFI中的Bootx64.efi和OpenCore.efi
③最新OpenCore—Drivers找到需要的驅(qū)動(dòng)绘沉,對(duì)原有EFI中的Drivers驅(qū)動(dòng)進(jìn)行替換
注:在0.5.5后Divers最新驅(qū)動(dòng)已經(jīng)合并到最新的OpenCore中
④查看最新OpenCore—Docs—SampleFull.plist中是否有更新,如有更新可以查看作者的說(shuō)明進(jìn)行修改云挟,沒(méi)有則直接使用之前的config.plist
為方便大家學(xué)習(xí)交流梆砸,附上我OpenCore的EFI
OCEFI:https://pan.baidu.com/s/1om3IBf0Bg2A1a8ogJnUpOQ?? 提取碼:k8gu