前言
眾多黑蘋果驅動的作者已經停止對Clover的兼容支持,改向Opencore的兼容。所以也許在未來的某一天,Clover就越來越難用了。提前了解了解OpenCore,還是很有必要的。但是OpenCore畢竟沒有Clover成熟,同樣也沒有很好用的可視化編輯器(OpenCore Configurator會導致config出錯,慎用),fix的選項也沒有,對hotpatch的要求就高了。經過一周的摸索,總結一些OC的坑,幫助以后的朋友少走一些彎路。
系統10.15.1→10.15.3自動更新順利。之后升級OpenCore版本出現問題,0.5.2→0.5.5,卡驅動。找到問題后在文章中增加版本更新方法,需要可以研究一下。
我的配置
雷 神 G170P 筆 記 本,藍 天(CLEVO)P170SMA模 具
CPU:Core i7-4710MQ 2.50GHz
主 板:CLEVO P17SM-A
硬 盤:威剛SSD 256GB
內 存:16 GB ( 威 剛 DDR3L 1600MHz )
顯 卡:Nvidia GTX970M(DSDT屏蔽) Intel HD4600
有 線 網 卡:瑞 昱 RTL8168/8111/8112
無 線 網 卡:博通BCM94352HMB(原 裝intel網 卡,無 解)
聲 卡:Realtek ALC892
目錄
一.準備工作
二.調試Config.plist
三.調試驅動
四.OpenCore更新
一、準備工作
準備工作分為以下幾步:
①.在Clover引導下,正常運行macOS系統
②.BIOS設置
③.下載最新的OpenCore
④.安裝Xcode或使用ProperTree
⑤.efi基礎驅動
⑥.U盤或硬盤建立引導分區
⑦.確認電腦是否支持原生NVRAM
①?至少要先用Clover安裝系統,并能夠正常進入macOS系統,這樣能測試OC能方便很多。如果零基礎從OC直接安裝系統,難度比較大。對于已經配置好Clover的,則需要精簡EFI,把不必要的驅動,dsdt和ssdt刪除。防止OC使用過程中不兼容導致的問題。
②?BIOS設置
禁用
| Fast Boot | ??????????? | 快速啟動 |
| CFG Lock |???????????? | CFG鎖 |
| VT-d |?????????????????????| Hyper Threading |
| CSM |?????????????????????| 兼容性支持模塊 |
啟用
| VT-x | ?????????????????????????????? | VT-x |
| Above 4G decoding |????? | 大于4G地址空間解碼 |
| Hyper Threading |???????????| 超線程|
| Execute Disable Bit |???????| 執行禁止位 |
| EHCI/XHCI Hand-off |?????| 接手EHCI/XHCI控制 |
|OS type:Windows 8.1/10|?????|操作系統類型Windows8.1/10|
③?下載最新的OpenCore
OpenCore-Releases:https://github.com/williambj1/OpenCore-Factory/releases
官方發布頁下載的文件包里的Docs文件夾內的samplefull.plist改名為config.plist作為基礎配置自己的OC。
④?對于OC中Config.plist,Xcode是最好的選擇。其次是ProperTree。
Plist Editor Pro會破壞結構,不能轉換Base64.
OpenCore Configurator目前更新速度落后于OpenCore,因此會導致Config的損壞
⑤?efi基礎驅動
- ApfsDriverLoader.efi 或 Apfs.efi ???? 識別APFS分區
- FwRuntimeServices.efi ????用來替換AptioMemoryFix.efi
- UsbKbDxe.efi ????OC內置驅動不工作,可以提供Apple熱鍵和FileVault的支持。卡OC引導界面,可以刪除
- VirtualSMC.efi ????配合VirtualSMC.kext使用,不能和FakeSMC.kext同時使用。
- VBoxHfs.efi 或 HFSPlus.efi ????識別HFS分區,對于不能進入Recovery,需要使用HFSPlus.efi
- EmuVariableRuntimeDxe.efi ?? ?模擬NVRAM,對于沒有原生NVRAM,需要此驅動(該驅動已和最新的FwRuntimeServices.efi合并,建議使用最新驅動)
將需要的驅動,放置在EFI——OC——Drivers中,同時在Config.plist——UEFI——Drivers添加efi驅動名
⑥?使用硬盤工具新建一個esp(Fat16)新分區,空間不低于200MB來存放。U盤或硬盤分區都可以。我是在Windows中使用DiskGenius分的區。
⑦確認電腦是否支持原生NVRAM
打開終端輸入:
sudo nvram TestVar=HelloWorld
然后輸入密碼
重啟系統后輸入:sudo nvram -p | grep 'TestVar'
如果顯示:TestVar HelloWorld
說明原生支持NVRAM
二、調試Config.plist
OC的Config.plist與Clover的Config.plist結構有很大的不同,因此不能通用。整體結構以及說明參考黑果小兵:精解OpenCore和XJN`S BLOG:使用OpenCore引導黑蘋果,以下主要說明容易出現的問題。OC中的config.plist是由Docs文件夾內的samplefull.plist改名而來。
①Misc—security—requiresignature—NO
防止出現報錯:OC:configuration signed vault but no public key provided
②misc—security—requirevault—NO
防止出現報錯:OC:configuration requires vault but no vault procided
③可以刪除 #WARNING - 1 和 #WARNING - 2等
④Booter—Quirks—DisableVariableWrite—NO
禁止NVRAM寫入,沒有原生macOS支持NVRAM需要開啟
⑤DeviceProperties—Add可以加入設備硬件地址以及補丁
可以使用Hackintool應用補丁生成設備硬件代碼驅動硬件
例如:核顯驅動、核顯緩沖幀、EDID注入,聲卡LayoutID注入、讀卡器等等
注意:這里使用的代碼與Clover的Config.plist中的Devices—Properties的代碼通用
⑥OC上所有的kext、.efi驅動、.aml補丁都需要填入config.plist,并且都有加載順序,有依賴的驅動要放在所依賴的驅動之后。
注意:Kernel—Add??按加載順序加入kext名稱
????????????ACPI—Add??按加載順序加入.aml名稱
????????????UEFI—Drivers??按加載順序加入.efi驅動名稱
⑦Kernel—Quirks—XhciPortLimit: YES
USB的15個端口限制補丁,建議定制USB后關閉該選項
⑧Misc—Boot—ShowPicker: YES
顯示OpenCore的UI,可選引導項。
⑨NVRAM—LegacyEnable: NO
允許將 NVRAM 存儲在 nvram.plist 中, 沒有原生 NVRAM 的設備必須開啟
⑩NVRAM—7C436110-AB2A-4BBB-A880-FE41995C9F82—csr-active-config: bytes = 0xe7030000 - SIP 完全關閉
?設置默認語言為中文,在NVRAM—7C436110-AB2A-4BBB-A880-FE41995C9F82—prev-lang:kbd中填入<7a682d48 616e733a 323532>(需要NVRAM支持,不支持原生NVRAM或者沒弄好模擬NVRAM不生效)
?Misc—Security—AllowNvramReset:YES
在OC引導界面顯示 Reset NVRAM選項
注意:如果用Clover啟動過系統后,再用OpenCore啟動系統,需要執行Reset NVRAM來清除NVRAM。清除NVRAM,會清除BIOS自定義引導項名稱。
?Misc—Security—ScanPolicy:0
在OC引導界面顯示所有可用硬盤
定義:
(01)0x00000001 — 限定為文件系統,由以下允許掃描文件系統子項
開啟
(02)0x00000002 — 限定為設備類型,由以下允許掃描設備類型子項
開啟
?允許掃描文件系統子項
:
(03)0x00000100 — 允許掃描APFS文件系統
(04)0x00000200 — 允許掃描HFS文件系統
(05)0x00000400 — 允許掃描EFI系統分區文件系統
?允許掃描設備類型子項
:
(06)0x00010000 — 允許掃描SATA設備
(07)0x00020000 — 允許掃描SAS和Mac NVMe設備
(08)0x00040000 — 允許掃描SCSI設備
(09)0x00080000 — 允許掃描NVMe設備
(10)0x00100000 — 允許掃描CD / DVD設備
(11)0x00200000 — 允許掃描USB設備
(12)0x00400000 — 允許掃描FireWire設備
(13)0x00800000 — 允許掃描讀卡器設備
掃描策略數值
=(01)+(02)+1個或數個允許掃描文件系統子項
+1個或數個允許掃描設備類型子項
例如:希望掃描對象是APFS文件系統的USB設備,掃描策略數值
=(01)+(02)+(03)+(11),經16進制加法計算得出,掃描策略數值
=0x200103
。
注意
,使用時需將16進制轉換為10進制。示例最終掃描策略數值
=2097411
?ACPI—Patch放入dsdt、ssdt補丁
Kernel—Patch放入kext補丁
?PlatformInfo中直接刪除Datahub,PlatfromNVRAM,SMBIOS這三項,無需填寫。
?IgnoreInvalidFlexRatio: YES
(在 BIOS 中無法禁用 MSR_FLEX_RATIO(0x194) ,或OpenCore卡引導項時開啟)
注意:部分OpenCore卡引導項,是由于UsbKbDxe.efi與鍵盤不兼容導致的,刪除UsbKbDxe.efi即可
三、調試驅動
以我自身的驅動來說明
①建議使用VirtualSMC.kext,因為需要與Drivers中的VirtualSMC.efi配合
②建議定制USB驅動,如自定義的USBInjectAll.kext、USBPorts.Kext、或加載SSDT-UIAC
③建議定制聲卡驅動,雖然萬能聲卡驅動也支持OC
④VoodooPS2Controller.kext與ApplePS2SmartTouchPad.kext中存在插件kext,在Config.plist中Kernel—Add分別加入
⑤.kext中沒有驅動,只有info.plist的,Kernel—Add加入info.plist的path,不必加入kext的path。
⑥建議核顯驅動使用Hackintool應用補丁生成核顯代碼、相關補丁以及EDID的注入,防止添加過多kext影響兼容性,同時定義CPU接口,方便加載HDMI視頻音頻
四、OpenCore版本更新
寫這篇文章時我的系統版本是10.15.1,OC是0.5.2。之后更新為10.15.3和0.5.5。
更新OpenCore版本需要注意以下四點:
①做好原有EFI的備份,config.plist—NVRAM—Add—7C4361......—boot-args中添加-v,更新時出錯,可以及時發現問題
②下載最新OpenCore,替換原有EFI中的Bootx64.efi和OpenCore.efi
③最新OpenCore—Drivers找到需要的驅動,對原有EFI中的Drivers驅動進行替換
注:在0.5.5后Divers最新驅動已經合并到最新的OpenCore中
④查看最新OpenCore—Docs—SampleFull.plist中是否有更新,如有更新可以查看作者的說明進行修改,沒有則直接使用之前的config.plist
為方便大家學習交流,附上我OpenCore的EFI
OCEFI:https://pan.baidu.com/s/1om3IBf0Bg2A1a8ogJnUpOQ?? 提取碼:k8gu