1,234 次瀏覽

OPENCORE 精闢解說(改寫版)

本文是基於OpenCore-0.6.2-10-06 發行版所編寫的,並且已Opencore Vanilla Desktop Guide 為做基礎,有可能會有英翻中的錯誤,在此事先說明。本教學內容皆取自於自各大黑蘋果教學網站精髓,經個人多次測試除錯之後,重新編譯中文引導教學。針對Z300型主機板過去曾說不支援NVRAM的部分,已經有解決方案。請參考這裡

以下是我個人推薦 OpenCore 相關的教學網站。
Opencore Vanilla Desktop Guide
Opencore Vanilla Desktop Guide(二)
OpenCore Configuration
精解OpenCore(黑果小兵)
AppleLife.ru in Russian
Hackintosh-Forum.de in German
InsanelyMac in English
Xjn’s Blog 中國 Xjn’s 部落格
NSK 主題下載

OpenCore更新日誌

v0.6.2

  • Updated builtin firmware versions for SMBIOS and the rest
  • Added ProcessorType option to Generic allowing custom CPU names
  • Fixed UnblockFsConnect option not working with APFS JumpStart
  • Added IA32 binary variant to the release bundles
  • Fixed improper handling of cacheless kexts without an Info.plist
  • Fixed improper calculation of kext startup address for blocking
  • Added mkext 32-bit kext injection (10.4-10.6)
  • Added cacheless 32-bit kext injection (10.4-10.7)
  • Added 32-bit kernel/kext patching/blocking support
  • Fixed issues loading 10.7 EfiBoot
  • Added Type to ReservedMemory to fulfil hibernation hack needs
  • Added workaround to displaying Preboot instead of Macintosh HD
  • Added prelinkedkernel 32-bit kext injection (10.6-10.7)
  • Added SystemMemoryStatus to override memory replacement on some models
  • Added older Pentium CPU recognition in SMBIOS
  • Added ExtendBTFeatureFlags to properly set FeatureFlags for Bluetooth (which substitutes BT4LEContinuityFixup)
  • Added MinKernel/MaxKernel to CPUID emulation and DummyPowerManagement
  • Fixed -legacy not being added in KernelArch Auto mode
  • Fixed i386-user32 not forcing i386 on macOS 10.7 on X64 firmwares
  • Fixed i386-user32 being incorrectly enabled in macOS 10.4, 10.5, and 10.7
  • Disabled prelinked boot for macOS 10.4 and 10.5 in KernelCache Auto mode
  • Fixed macserial compatibility with iMac20,x serials and other models from 2020
  • Added LegacyCommpage quirk to improve pre-SSSE3 userspace compatibility
  • Fixed legacy SATA HDDs displaying as external drives in the picker
歷代OC版本更新速查表

v0.6.1

  • Improved recognition of early pressed hotkeys, thx @varahash
  • Made DMG loading support configurable via DmgLoading
  • Added iMac20,1 and iMac20,2 model codes
  • Fixed display name for older Xeon CPUs like Xeon E5450
  • Added Comet Lake-LP HDA device code
  • Fixed OS boot selection on SATA controllers with legacy OPROMs
  • Fixed RSDP ACPI table checksum recalculation
  • Added immutablekernel loading support for 10.13+
  • Fixed solving some symbols to zero in 11.0 kext inject
  • Reduced OpenCanopy size by restricting boot management access
  • Added BuiltinText variant for TextRenderer for older laptops
  • Fixed SyncRuntimePermissions creating invalid MAT table
  • Added EFI FAT image loading support (macOS 10.8 and earlier)
  • Added 64-bit cacheless kext injection and patching support (macOS 10.9 and earlier)
  • Added 64-bit mkext kext injection and patching support (macOS 10.6 and earlier)
  • Fixed XNU hook matching non-kernel files
  • Updated builtin firmware versions for SMBIOS and the rest
  • Fixed patching of ACPI tables in low memory
  • Fixed macOS 11.0 DMG recovery loading without hotplug
  • Fixed XhciPortLimit quirk on 10.12.6 and possibly other versions
  • Fixed IncreasePciBarSize quirk on 10.11.5 and possibly other versions
  • Fixed LapicKernelPanic quirk on 10.8.5 and possibly other versions
  • Fixed hard-lock caused by EHCI SMI in OpenDuetPkg
  • Added preview UEFI Secure Boot compatibility
  • Added FuzzyMatch option to support fuzzy kernelcache matching on 10.6 and earlier
  • Added KernelArch option to specify architecture preference on older kernels
  • Added KernelCache option to specify kernel caching preference for older kernels
  • Added Force section to provide support for injecting drivers in older macOS
  • Changed kernel driver injection to happen prior to kernel driver patching
  • Added Arch filtering option to AddBlockForce, and Patch sections
  • Added DisableLinkeditJettison quirk to workaround 11.0b5 kernel panics
  • Added debugging of missing fields in the configuration

準備工作

本教學是針對我個人使用技嘉 Z390 AORUS PRO WIFI 主機板製作,同時也支援其他主機板。 會因版本隨時更新修改。
Coffee Lake 版本

Z390 AORUS PRO WIFI(1.0)

製作USB引導碟

ㄧ、安裝映像檔:隨取一隻USB碟,打開磁碟工具。從左邊的欄位找到要製作USB引導碟的『主體』。選擇『清除』,選擇格式:Mac OS 擴充格式(日誌式),架構為GUID分區圖配置表,名稱暫時為USB。

磁碟工具

二、安裝macOS映像檔:請下載官方的macOS映像檔下來,打開終端機,key in 安裝macOS終端機參數。若是想要製作其他系統的引導碟,可按下詳細說明。

sudo /Applications/Install\ macOS\ Catalina.app/Contents/Resources/createinstallmedia --volume /Volumes/USB
製作macOS 引導碟的終端機指令

如何製作可開機的 macOS 安裝程式

您可以使用外接磁碟或次要卷宗做為啟動磁碟,用來安裝 Mac 作業系統。

這些進階步驟主要適用於系統管理者及其他熟悉命令列的人員。您不需要可開機安裝程式也能升級 macOS重新安裝 macOS,但想要在多部電腦上安裝 macOS 時,有了它會很實用,因為不必每次都下載安裝程式。

下載 macOS

請在各版 macOS 的升級指示中尋找正確的下載連結:

macOS CatalinamacOS Mojave  macOS High Sierra
上述各 macOS 版本的安裝程式會以「安裝 macOS Catalina」、「安裝 macOS Mojave」或「安裝 macOS High Sierra」App 的形式,直接下載到您的「應用程式」檔案夾。如果安裝程式在下載後開啟,請將它結束,不要繼續安裝。

在「終端機」中使用 createinstallmedia 指令

  1. 插入要做為可開機安裝程式的 USB 隨身碟或其他卷宗。確保至少有 12 GB 可用儲存空間,並已格式化為 Mac OS 擴充格式
  2. 開啟「終端機」(位於「應用程式」檔案夾的「工具程式」檔案夾中)。
  3. 在「終端機」中輸入或貼上以下其中一個指令。這些指令假設安裝程式仍位於「應用程式」檔案夾,且所使用的 USB 隨身碟或其他卷宗名稱為 MyVolume。如果該磁碟使用的是其他名稱,請以該名稱取代 MyVolume 換成您的卷宗名稱。

    BIG SUR Beta版

    sudo /Applications/Install macOS Big Sur Beta.app/Contents/Resources/createinstallmedia --volume /Volumes/USB

    Catalina*:

    sudo /Applications/Install macOS Catalina.app/Contents/Resources/createinstallmedia --volume /Volumes/MyVolume
    

    Mojave*:

    sudo /Applications/Install macOS Mojave.app/Contents/Resources/createinstallmedia --volume /Volumes/MyVolume
    

    High Sierra*:

    sudo /Applications/Install macOS High Sierra.app/Contents/Resources/createinstallmedia --volume /Volumes/MyVolume
    

    El Capitan

    sudo /Applications/Install OS X El Capitan.app/Contents/Resources/createinstallmedia --volume /Volumes/MyVolume --applicationpath /Applications/Install OS X El Capitan.app
    
  4. 輸入指令後按下 Return 鍵。
  5. 出現提示時,輸入您的管理者密碼,然後再按一次 Return 鍵。當您輸入密碼時,「終端機」不會顯示任何字元。
  6. 出現提示時,輸入 Y 確認您要清除卷宗,然後按下 Return 鍵。製作可開機安裝程式時,「終端機」會顯示進度。
  7. 當「終端機」告知已完成時,卷宗會與所下載的安裝程式名稱相同,如「安裝 macOS Catalina」。您現在可以結束「終端機」並退出卷宗。

* 如果 Mac 是執行 macOS Sierra 或之前版本,請加入 --applicationpath 引數,就像在 El Capitan 的指令中使用此引數的方式一樣。

使用可開機安裝程式

製作可開機安裝程式之後,再加入CLOVER 或是OC引導文件,就可以安裝黑蘋果了

更多內容

如需 createinstallmedia 指令以及可搭配使用之引數的詳細資訊,請確認 macOS 安裝程式位於「應用程式」檔案夾,然後在「終端機」中輸入以下路徑:

Catalina

/Applications/Install macOS Catalina.app/Contents/Resources/createinstallmedia

Mojave

/Applications/Install macOS Mojave.app/Contents/Resources/createinstallmedia

High Sierra

/Applications/Install macOS High Sierra.app/Contents/Resources/createinstallmedia

El Capitan

/Applications/Install OS X El Capitan.app/Contents/Resources/createinstallmedia
用終端機來安裝macOS引導安裝碟

做到這裡,我們可以把它白果專用的引導碟。若是加入CLOVER 或 OpenCore 程序,就是黑果專用的引導碟。

製作USB 多功能引導碟

三、在教學EP-6教學影片中,我教給大家建議採用且親自製作『多功能引導安裝救援碟』的方式。就是把USB安裝碟再分割約1GB的容量,再自創一個『分區』。作法就是把USB碟在分割1GB或是2GB 不等的容量,再格式化該分區為 FAT-DOS 32 BIT的格式。

分割的磁區可以命名為OpenCore EFI,或是其他名稱都可以。

分割磁區

我們分割一個小磁區,目前還是macOS的格式,但是UEFI卻只認得該FAT-DOS 32BIT格式,所以我們要格式化為FAT-DOS 32 BIT,來模擬UEFI的架構。當你在開啟BIOS選單時,你會發現USB磁碟,會出現兩個UEFI開頭的磁區。這就是我們要的多引導安裝碟真正目的。由於OpenCore的整個EFI只小於5MB容量,再加上放置PE系統,來達到多引導功能的安裝救援碟。

格式化Fat 16格式

以下的教學是以第三種方式來做示範。

禁用:

  • 快速啟動
  • VT-d(如果將DisableIoMapper設置為YES,則可以啟用)
  • CSM
  • Thunderbolt
  • Intel SGX
  • Intel Platform Trust
  • CFG鎖(MSR 0xE2寫保護)
    • 如果無法在BIOS中關閉(甚至找不到),請考慮對其進行修補。有關更多信息,請參見固定CFG鎖。
    • AMD CPU用戶無需擔心。

啟用:

  • VT-x
  • 4G以上解碼
  • Hyper-Threading
  • Execute Disable Bit
  • EHCI/XHCI Hand-off
  • 操作系統類型:Windows 8.1 / 10 UEFI模式
  • 舊版RTC設備(與Z370 +相關)

基本文件夾結構

要配置 OpenCore 的文件夾結構,您需要從 OpenCorePkg 抓取那些文件,並構建您的EFI使其類似於以下內容:

OpenCore 檔案結構

ㄧ、收集 OPENCORE 文件

  • 請打開下載好的OC引導文件,把Doc文件夾下面的 SampleFull.plist 改名為 config.plist,並把此文件移動到EFI目錄裡面。
  • 打開EFI ㄧ> Kexts 資料夾,把主機板相關硬體的kexts 先放進去。
  • 根據作者指示,放入KEXT有一定的順序排列。
OC-ACPI、Drivers、Kexts、Tools 已經內建許多工具,我們只保留自己所需要的工具即可。

ACPI:加入修補程式

Coffeelake:

備註:如果想要自行編譯SSDT修補程式,請看下製作修補方法

EFI-OC-ACPI 修補程式的製作方法

根據CPU架構的不同,在ACPI所需要的SSDT.aml 修正檔也會不同,請依以下的說明來編譯所需要SSDT.efi。官方內建的SSDT.dsl ,為該版本所需要的文件。你可以在Docsㄧ>AcpiSamples 資料夾當中,找到以下的修正檔。

SSDT 修正檔

這裡所列舉的SSDT-xxx.dsl ,都是要透過 MacASL 工具來編譯。以下以SSDT-PMC.dsl為例。直接雙擊該SSDT-PMC.dsl,如圖示。這裡的程式碼無需動它,直接另存檔案。

SSDT-PMC.dsl 編譯

當選擇另存檔案時,文件格式要改為ACPI Macline Language Binary ,檔名為SSD-PMMC.aml,後綴名為aml 。編譯好的SSDT 修正檔,就大功告成了。接下來就直接放入在ACPI的資料夾內。

Firmware Drivers 我最常用的有:

  • CrScreenshotDxe.efi 用於在UEFI中拍攝屏幕截圖。
  • OpenCanopy.efi 這是OpenCore GUI 所需要文件,若只想要文字目錄者去刪除。
  • OpenRuntime.efi 記憶體分配驅動。
  • HfsPlus.efi 讓系統認出HFS格式的硬碟文件(自行加入)
EFI-OC-Drivers 詳細說明

Firmware Drivers

你可以把從AppleSupportPkg必要的韌體驅動程序(.efi)插入驅動程序文件夾和kext文件/ ACPI到各自的文件夾中。請注意,OpenCore不支持Clover的UEFI驅動程序!(EmuVariableUEFI,AptioMemoryFix,OsxAptioFixDrv等)。請參閱Clover 韌體驅動程序轉換,以獲取有關支持的驅動程序以及已合併到OpenCore中的驅動程序的更多信息。

  • 這些是OpenCore使用的驅動程序,對於大多數係統來說,只需要3個.efi驅動程序即可啟動並運行:OpenCore可以使用的驅動程序包括。這裡請注意,根據作者指示,放入efi 有一定的順序排列,不可以排錯,否則OC無法運行。
  • ApfsDriverLoader.efi  APFS文件系統引導驅動程序在UEFI固件的可啟動APFS容器中添加了對嵌入式APFS驅動程序的支持。
  • OpenRuntime.efi 協議通過支持只讀,只寫NVRAM變量,提升了的OpenCore和黎路的安全性。有些怪癖如RequestBootVarRouting。此依賴程序驅動
    由於運行時驅動餓性質(與目標操作系統並行運行),因此它不能在的OpenCore本身實現,而是與OpenCore 捆綁在一起。
  • VBoxHfs.efi HFS格式支持。
  • HFSPlus.efi HFS格式支持。

For legacy users::

  • AppleUsbKbDxe.efi 用於在拾取的OpenCore 運行DuetPkg遺留系統不建議甚至是有害的UEFI(Ivy Bridge的更新版本)
  • NvmExpressDxe.efi 當韌體中未內置NVMe驅動程序時,用於Haswell及更早版本,如果您不使用NVMe驅動器,則不需要
  • XhciDxe.efi 當固件中未內置XHCI驅動程序時,用於Sandy Bridge及更早版本,如果不使用USB 3.0擴展卡則不需要。
  • HfsPlusLegacy.efi HfsPlus的舊版變體,用於缺少RDRAND指令支持的系統。通常在SandyBridge和更舊的版本上看到
  • MemoryAllocation.efi 這個程序可以幫助z390系列,空出第一個512MB內存。當你在開啟內顯時,不會因為BIOS分配內存不一時,既使使用了slide 參數,也會卡在++++++ 或是slide 這裏,無法進入系統。

OC自帶的文件如下:

  1. AudioDxe.efi 與macOS中的音頻支持無關
  2. CrScreenshotDxe.efi 用於在UEFI中拍攝屏幕截圖。
  3. HiiDatabase.efi 用於修復GUI支持,例如Sandy Bridge和更早版本上的Shell.efi
  4. NvmExpressDxe.efi 當BIIOS未內建NVMe驅動程序時,用於Haswell及更早版本
  5. OpenCanopy.efi OpenCore的可選GUI 介面
  6. OpenRuntime.efi 記憶體分配驅動。
  7. OpenUsbKbDxe.efi 用於運行DuetPkg的舊系統上的 OpenCore選擇器,不推薦使用,在Ivy Bridge和更高版本上甚至有害
  8. Ps2KeyboardDxe.efi PS2鍵盤驅動
  9. Ps2MouseDxe.efi PS2滑鼠驅動
  10. UsbMouseDxe.efi USB滑鼠驅動
  11. XhciDxe.efi BIOS 未內建 XHCI 驅動程序時,用於Sandy Bridge和更早的版本。

有關兼容驅動程序的完整列表,請參見OpenCorePkg Docs中的11.2屬性。這些文件將放在EFI的Drivers文件夾中。

Kexts:根據主機板的晶片加入適當的仿驅動,以下是我主機板常用的kext

  • VirtualSMC 模擬在實際macs上找到的SMC芯片,如果沒有此macOS,它將無法啟動。
    替代方法是FakeSMC,它可以具有更好或更壞的支持,而該支持通常在舊硬件上使用。
  • Lilu 一個修補程序,用於修補許多過程,這些過程對於AppleALC和WhateverGreen是必需的,對於VirtualSMC是推薦的。
  • SMCProcessor.kext –用於監視CPU溫度,不適用於基於AMD CPU的系統
  • SMCSuperIO.kext 用於監視風扇速度,不適用於基於AMD CPU的系統
  • WhateverGreen 顯示卡驅動
  • AppleALC 音效卡驅動
  • IntelMausi.kext  Intel 網路卡驅動
  • USBInjectAll  USB 驅動。

有關於其他KEXT文件的說明,請看這裡

EFI-OC-KEXTS 詳細說明

蘋果電腦所用的硬體驅動,除了自家產品所用晶片驅動,都會放在系統裡以外,包括蘋果認定第三方廠商支援蘋果系統的以外,任何PC零組件都不會mac 驅動程式。然而蘋果所有使用硬體驅動副檔名為kext,故在黑蘋果所使用的仿驅動,都會以kext 作為副檔名。

OC 內建的 Kexts 資料夾,你可以當作硬體驅動的系統核心,把這些文件將進入kext文件文件夾中EFI載入引導系統。你可以在Kext Repo中預編譯以下列出的所有kext 。每次有新提交時,都會編譯此處的Kext。

Must haves:

  • VirtualSMC 模擬在實際macs上找到的SMC芯片,如果沒有此macOS,它將無法啟動。
    替代方法是FakeSMC,它可以具有更好或更壞的支持,而該支持通常在舊硬件上使用。
  • Lilu 一個修補程序,用於修補許多過程,這些過程對於AppleALC和WhateverGreen是必需的,對於VirtualSMC是推薦的。

VirtualSMC插件

  • SMCProcessor.kext –用於監視CPU溫度,不適用於基於AMD CPU的系統
  • SMCSuperIO.kext 用於監視風扇速度,不適用於基於AMD CPU的系統
  • SMCLightSensor.kext 用於筆記本電腦上的環境光傳感器,台式機可以忽略,如果您沒有環境光傳感器,請勿使用,否則可能導致問題。
  • SMCBatteryManager.kext 用於測量筆記本電腦上的電池讀數,台式機可以忽略。除非已為電池充好電,否則請勿使用,否則可能導致問題。

Graphics:

  • WhateverGreen 用於圖形補丁DRM,boardID,幀緩衝區修復等,所有GPU都將從此kext中受益。

AUDIO:

  • AppleALC 用於AppleHDA修補,用於為您提供板載音頻。AMD 15h / 16h可能與此有關,而Ryzen / Threadripper系統很少支持麥克風。

Ethernet:

USB:

  • USBInjectAll 用於注入Intel USB控制器的H370,B360,H310和X79 / X99 / X299系統也可能需要不受XHCI支持的系統。USBInjectAll在基於AMD CPU的系統上不起作用。

WiFi and Bluetooth:BloggerAds 部落格行銷BloggerAds 部落格行銷

  • AirportBrcmFixup 用於修補非Apple Broadcom卡,不適用於Intel,Killer,Realtek等。
  • BrcmPatchRAM 用於在Broadcom藍牙芯片組上上傳固件,這是所有非Apple Airport卡所必需的。與BrcmFirmwareData.kext配對。適用於10.14+的BrcmPatchRAM3(必須與BrcmBluetoothInjector配對)。適用於10.11-10.14的BrcmPatchRAM2。適用於10.10或更舊版本的BrcmPatchRAM。

順序應為:Kernel -> Add
1.
Brcm藍牙注射器
2.Brcm 韌體數據
3.BrcmPatchRAM3

額外的程序:

  • AppleMCEReporterDisabler 從Catalina開始有用以禁用AppleMCEReporter kext,這將導致AMD CPU和雙插槽系統上的內核崩潰。受影響的SMBIOS:MacPro6,1、MacPro7,1、iMacPro1,1
  • VoodooTSCSync 在沒有此macOS的情況下,需要在某些英特爾的HEDT和服務器主板上同步TSC,這可能會非常慢甚至無法啟動。Skylake-X應該改用TSCAdjustReset
  • TSCAdjustReset 在Skylake-X上,包括華碩和EVGA在內的許多固件都不會將TSC寫入所有內核。因此,我們需要在冷啟動和喚醒時重置TSC。編譯版本可以在這裡找到:TSCAdjustReset.kext。請注意,您必須打開kext(finder中的ShowPackageContents ),並將Info.plist->更改為您從中開始的CPU線程數(i9 7980xe 18核將是因為它共有36個線程)Contents -> Info.plistIOKitPersonalities -> IOPropertyMatch -> IOCPUNumber035 
  • NVMeFix 用於在非Apple NVMe上修復電源管理和初始化,需要macOS 10.14或更高版本

備註:備註:從2019 年9 月以後,Acidanthera 開發的內核驅動(Lilu, AppleALC 等等) 不再會在Clover 上做兼容性測試。

備註:從2019 年9 月以後,Acidanthera 開發的內核驅動(Lilu, AppleALC 等等) 不再會在Clover 上做兼容性測試。

Tools 選擇所需要韌體驅動文件:

  • CFGLock.efi 解鎖 CFG 工具(自行加入)
  • CleanNvram.efi  清除NVRAM的工具。
  • OpenControl.efi 開啟主控臺
  • OpenShell.efi 調適用工具
  • ResetSystem.efi 重啟系統
EFI-OC-Tools 詳細說明
  1. BootKicker.efi:用於在正版Mac上修復Apple Picker。
  2. ChipTune.efi
  3. CleanNvram.efi  清除NVRAM的工具。
  4. GopStop.efi 用於測試的GOP
  5. HdaCodecDump.efi  用於查找AudioDxe設置的信息,本指南未涵蓋,因此不需要
  6. KeyTester.efi
  7. MmapDump.efi
  8. OpenControl.efi 開啟主控臺
  9. OpenShell.efi
  10. ResetSystem.efi 重啟系統
  11. RtcRw.efi
  12. VerifyMsrE2.efi 用於驗證MSR鎖,對於安裝,我們可以忽略

新增主題的文件:OC引導主題設定方法。例如主題NDK 相關制定和製作方法,請到這裡。(這裡先不寫)

我把下載、編譯好的文件,放入該處的資料夾中,整個 EFI 文件夾大致如下:

OC資料夾所需要的文件

整合OC資料夾所有文件

原 config.plist 文件是沒有做過任何編寫的過程。官方雖然推薦使用蘋果官方XCode工具軟體來編寫文件,但因為該軟體檔案過於巨大,許多小夥伴不會使用該工具,所以本教學採用這個 OpenCore Configuration 軟體來直接『編寫』在config.plist ,該圖像式GUI 介面有具有親和力,小夥伴更容易上手。同時也是一種簡單快速整合的方法。但是要注意OC版本對應其該工具,就不會容易出錯。以下的教學,以 OpenCore Configuration 作為示範。如果你是喜歡使用 ProperTree  工具編輯的用戶者,請參考這裡。

使用 ProperTree 工具軟體的方法

請打開 ProperTree  資料夾,雙擊 ProperTree.command,終端機自動執行程序。出現以下的視窗。

這張圖片的 alt 屬性值為空,它的檔案名稱為 Screenshot-2020-05-04-at-7.57.54-PM.png
終端機
這張圖片的 alt 屬性值為空,它的檔案名稱為 Screenshot-2020-05-04-at-7.58.01-PM-1024x587.png

再從左上面命令列的Flieㄧ>Open 打開你的OC資料夾的引導文件。EFI/OC/config.plist。

這張圖片的 alt 屬性值為空,它的檔案名稱為 Screenshot-2020-05-04-at-7.59.49-PM.png

打開之後的config.plist ,是官方原廠設定值。

這張圖片的 alt 屬性值為空,它的檔案名稱為 截圖-2020-05-09-上午7.47.39-1018x1024.png

這個時候,我們要把OC資料夾的ACPI、Drivers、Kexts、Tools 裡面的文件,全數編寫在config.plist。那麼我們使用按鍵盤上的此按鈕組合。command+ SHIFT + R,並選擇您的OC文件夾。

這張圖片的 alt 屬性值為空,它的檔案名稱為 截圖-2020-05-09-上午7.58.53-1024x898.png

該命令將清理您的config.plist文件,並將kexts、Drivers、ACPI、Tools,添加到您的文件中。

這張圖片的 alt 屬性值為空,它的檔案名稱為 截圖-2020-05-09-上午9.26.58-1024x1018.png
編寫好的config.plist

做到這裡,記得要儲存,不要做任何的設定。若是使用windows 使用者,可以繼續使用該工具,根據我以下的教程來編寫cconfig.plist。使用macOS 使用者,請改用XCode 10.3 軟體。

待寫。

做到這裡,記得要儲存,不要做任何的設定。若是使用windows 使用者,可以繼續使用該工具,根據我以下的教程來編寫cconfig.plist。使用macOS 使用者,請改用XCode 10.3 軟體。

提取主機硬件訊息

如果你目前使用的Clover 引導的話,可以事先下載有關於目前主機所有的DTST和SSDT相關訊息,最間單的方法,使用這個軟體讓它跑完整個程序,所有的文件包括CLOVER、kext、DTST、SSDT等相關文件,結合成一個壓縮檔,請務必要保留該檔案備用,我們會在OC優化課程當中會用到。

二、Config.plist 引導文件修改

這個章節我會把 config 文件 的由上而下來說明。內容可能會寫的因翻譯的不同結果會有所差異,敬請見諒。這是為了為了讓『小白』能夠明白各個選項的用途,而寫的引導教程。OpenCore 官方強烈建議使用 Apple XCode 軟體來編輯這個 Config.plist,其他的任何編輯軟體未經官方認可,包括 Plistedit pro 軟體,即有可能會傷害 config.plist 文件的本體。

請記住,OpenCore中的Config.plist與Clover的config.plists不同。它們不能混合和匹配。而且,如果您不知道所有內容,您還需要閱讀文檔。
首先讓我們開啟剛剛編寫好的config.plist 文件,並由 Xcode 軟體來進行編寫。如下圖。

從上圖有看到五個警告標語,分別為:

  • 這只是一個示例。不要嘗試加載它。
  • 在啟動之前,請確保您了解每個字段。
  • 在大多數情況下,建議使用Sample.plist。
  • 將SampleFull.plist用於壽命終止模型:2011年或更早。
  • https://docs.google.com/spreadsheets/d/1kGFz3_kp5xCDRRQpfnIUOvbiHXTmxEgyx97u73ImXXE/edit#gid=0

這五個標語是沒有任何意義,請直接刪除即可,但我們要留意的是以下選單:

  • ACPI:用於加載,阻止和修補ACPI。
  • DeviceProperties:在此處設置PCI設備補丁,例如Intel Framebuffer補丁。
  • Kermel:我們在哪裡告訴OpenCore要加載哪些kext,要加載的順序以及要阻止的kext。
  • Mise:OpenCore引導加載程序本身的設置。
  • NVRAM:在這裡設置引導標誌和SIP之類的NVRAM屬性。
  • Platforminfo:這是我們設置您的SMBIOS的地方。
  • UEFI:告訴OpenCore加載哪些驅動程序以及加載順序。

1.ACPI

ACPI 選項包括了四個部分:Add, Block, Patch, Quirks。首先我們先把 root下面的五條WARNING警語 刪除,該訊息是沒有實際意義。

在這裡,您將為系統添加SSDT修補程序,這些修補程序對筆記本電腦和OEM台式機最有用,但對於USBMap禁用不受支持的GPU等也很常見。

對於我們來說,我們需要幾個SSDT來恢復Clover提供的功能:

  • SSDT-PLUG
    • 允許進行本機CPU電源管理,Clover替代項將在下Acpi -> GenerateOptions -> PluginType。請注意,此SSDT是針對AppleACPICPU連接了附件的系統製作的CPU0,儘管某些ACPI表的開頭是PR00這樣,所以請相應地進行調整。在IORegistryExplorer中查看首先連接了哪個設備的AppleACPICPU 也會給您提示。
  • SSDT-EC-USBX
    • 糾正所有Catalina用戶所需的EC設備。要進行設置,您需要PNP0C09在DSDT中找出設備的名稱EC0,即H_ECPGECECDV。您可以在此處閱讀有關Catalina中嵌入式控制器問題的更多信息:macOS Catalina中的新增功能
  • SSDT-AWAC
    • 這是300系列RTC補丁程序,對於大多數B360,B365,H310,H370,Z390和某些Z370闆卡來說都是必需的,它們會阻止系統引導macOS。如果AWAC SSDT因遺漏舊版RTC時鐘而不兼容,則替代方法是SSDT-RTC0,以檢查自己需要搜索的內容AWAC,如果顯示出來,則STAS在DSDT中搜索。如果STAS搜索沒有任何結果,則需要RTC0補丁
  • SSDT-PMC
    • 因此,真正的300系列主機板(非Z370)不會在ACPI中將FW芯片聲明為MMIO,因此XNU會忽略UEFI記憶體訪問所聲明的MMIO區域。該SSDT帶回了NVRAM支持,並且可以按原樣進行編譯,使用該補丁。SSDT-PMC.aml

對於那些不了解有關插件類型和EC 的SSDT 的,可以使用CorpNewt的SSDTTime正確設置您的SSDT。其餘的SSDT可以使用MaciASL進行編譯,別忘了編譯後的SSDT具有.aml附檔名(已彙編),並將進入EFI / OC / ACPI文件夾。您可以通過運行File-> SaveAs-> ACPI Machine Language使用MaciASL進行編譯。有關包括Windows和Linux在內的ACPI的更深入的了解,請參閱ACPI入門頁面。

  • MaciASL – >另存為,確保文件格式是ACPI機器語言的二進制System DSDT
    • 請注意,所有ACPI補丁程序都將應用於DSDT
  • SSDTTime可以在Linux和Windows解壓
    • 請注意,如果通過OpenCore引導,ACPI補丁將應用於DSDT
  • 三葉草啟動菜單中的F4
    • DSDT可以在 EFI/CLOVER/ACPI/origin
  • acpidump.efi
    • 將此添加到並在您的配置下,然後在Opencore的選擇器中選擇此選項。將DSDT.dat重命名為DSDT.aml。工具提供的EFI/OC/ToolsMisc -> Toolsacpica

1-1.ACPI-Add

這個單元主要填寫我們使用常常使用的SSDT以及DSDT文件,如果沒有的話,請把0-8項默認的ssdt選項全部給刪除掉。假設你有修改的SSDT或者DSDT文件能力,請先將文件放入EFI/OC/ACPI下。
範例:

1-2.ACPI–Block

對應Clover-ACPI-Drop Tables,除非你明白確切意義,暫時不填寫。

1-3.ACPI–Patch

這裡我們需要填寫一下熱補丁。取得熱補丁的方法,可以是對應Clover-ACPI-補丁用來做熱補丁,你也可以用Hackintool 工具軟體,製作OC 引導文件的臨時config.plist。使用XCode 程式將熱補丁拷貝過去。10.15中,把EC控制器 (EC0) 改名為 EC 來確保能進入Cataline 作業系統。假設你還不知道你的控制器叫什麼名字,請將下面熱補丁都填上:

1
2
3
Comment:EC0 to EC
Find:4543305F
Replace:45435F5F

解決RTC問題:

1
2
3
Comment:Fix AsRock Z390 BIOS DSDT Device(RTC) bug
Find:A00A9353 54415301
Replace:A00A910A FF0BFFFF

注意:某些主機板的 EC 控制器名字可能會叫 H_EC 等,請自行提取 DSDT並蒐索PNP0C09,來獲取EC控制器的名字。

1-4.ACPI-Quirks

該項目共有有五項,選擇Yes or No ,大致解釋如下:

QuirksValue解釋
FadtEnableResetNO主要用於老舊主板的開關機功能,如果你關機變重啟,可以勾選,一般情況下不勾选
NormalizeHeadersNO清理ACPI標頭字段,僅與macOS High Sierra 10.13相關(Z390選Yes)
RebaseRegionsNO嘗試試探性地重定位ACPI內存區域,除非使用了自定義DSDT,否則不需要。
ResetHwSigNO休眠相關項:在重新啟動後,無法維持硬體簽名,並導致從休眠中喚醒的問題的硬體設備。(桌機不需要設定)
ResetLogoStatusNO 重置日誌,一般不勾选

2.Booter

本節專門討論與OpenRuntime進行boot.efi修補有關的怪癖,它是AptioMemoryFix.efi的替代品2-1.Booter-MmioWhitelist:

默認第一項是為Haswell晶片提供內存尋址修復,此類晶片如果遇到記憶體的相關問題,就勾選啟用。默認第二項是開機卡PCI Configuration。ACPI、PCI device同時釋放到記憶體時,發生0x1000內存地址被佔用,而卡在PCI Configuration,則勾選,否則就不管它!

2-2.Booter-Quirks

本節是針對有關boot.efi修補和韌體修復設置,以下是我們需要做的變化DevirtualiseMmioRebuildAppleMemoryMapSyncRuntimePermissionsSetupVirtualMap

  1. AvoidRuntimeDefrag:YES
    此選項可修復UEFI運行時服務(日期,時間,NVRAM,電源控制等)。不支援NVRAM的主機板,必須啟動該功能。
  2. DevirtualiseMmio:Yes
    減少被盜的內存佔用空間,擴展slide=N值的選項,對於解決Z390上的內存分配問題非常有幫助。需要ProtectUefiServices以及對IceLake和Z390 Coffeelake。如何找出 slide值(請參考這裡)。使用Z490主板者,因支援NVRAM之緣故,故毋須勾選此項。
  3. DisableSingleUser:No
    是否開啟單用戶模式(-s)。禁用Cmd+S-s,這更接近基於T2的計算機的行為。一般是不勾選,黑蘋果無需使用。
  4. DisableVariableWrite:Yes
    這是一個安全選項,允許在macOS中限制NVRAM訪問。這種Quick的要求OC_FIRMWARE_RUNTIME 實現的協議 OpenRuntime.efi,對一些非原生NVRAM主板需要模擬nvram.plist,進而寫入variable值。因此我們要禁止此項來防止其他程序對nvram進行寫入。
    注意:如果你的主機板若是支持原生nvram ,請選擇NO!已加入SSDT-PMC.aml者請選擇No
  5. DiscardHibernateMap:No
    重用原始的休眠記憶體訪問,僅某些舊版硬件需要。
  6. EnableSafeModeSlide:Yes
    此Quick的必要性取決於安全模式的可用性。如果啟動到安全模式失敗,則可以嘗試啟用此選項。此選項與在啟動到安全模式時遇到問題的用戶有關(例如,通過按住shift或使用-x boot參數)。默認情況下,安全模式強制滑動0,就好像系統是使用slide = 0 引導參數啟動的。此 Quick 嘗試修補boot.efi 以解除該限制,並使用其他值(從1到255)。需搭配ProvideCustomSlide一起啟用此Quick。像z390這樣本來也不用分佈式註入內存方式的(KASLR),我就選擇YES
  7. EnableWriteUnprotector:
    此選項通過在執行期間從CR0寄存器中刪除寫保護(WP)位來繞過UEFI運行時服務的代碼頁中的RˆX權限。這個 Quick 需要OC_FIRMWARE_RUNTIME在中實現的協議 FwRuntimeServices.efi。所以 nvram 能正常寫入而不受到UEFI內的一些服務的影響,任何主機板必須要選擇 YES
  8. ForceExitBootServices:
    確保ExitBootServices調用即使MemoryMap發生了更改也成功,除非有必要,否則請勿使用) 正常情況下選 NO
  9. ProtectMemoryRegions:
  10. ProtectSecureBoot:保護UEFI安全引導變量寫入參數時不被干擾而引起衝突。選擇Yes
  11. ProtectUefiServices
    這是保護UEFI Service 不被韌體給覆蓋的功能。包括硬體和虛擬機(例如VMware)在內的某些現代韌體可能會在驅動程序加載和相關操作期間更新指向UEFI Service 。這會直接破壞了影響內存管理的其他Quirks,例如DevirtualiseMmio,ProtectCsmRegion或ShrinkMemoryMap,並且還可能破壞其他Quirks,具體取決於這些Quirks。當選擇 Yes 時,在boot-args 的參數 slide=x and UEFI /Drivers/MemoryAllocation.efi 二者刪除,選擇No時,二者得保留。
  12. ProvideCustomSlide:
    當在記憶體不足時,提供自定義的KASLR slide,此選項強制 macOS 在可用的當中使用偽隨機值。這也確保了slide=出於安全原因,永遠不會將參數傳遞給操作系統。我選擇 Yes
    Only N/255 slide values are usable!
  13. ProvideMaxSlide:0
  14. RebuildAppleMemoryMap:
    生成與macOS兼容的內存映射,用於修復戴爾5490上啟動macOS的問題,默認不勾选(false)。
  15. SetupVirtualMap:
    該Quick的必要性由早期啟動故障確定,通過執行分配的虛擬記憶體到物理記憶體的早期啟動身份映射來解決此問題。因此,我們通過虛擬記憶體來建立連續性記憶體來提供OC使用,並同時映射到分散的物理記憶體當中。所以這個選項我們選擇 YES。若是開啟此項無法開機時,嘗試開啟RebuildAppleMemoryMap,兩者選擇其一。
  16. SignalAppleOS(新增):
    這裡是專門討論與FwRuntimeServices進行boot.efi修補有關的Quirks,它是AptioMemoryFix.efi的替代品。Yes。
  17. SyncRuntimePermissions:
    更新運行時環境的記憶體權限,主要用於早期的macOS或Linux/Windows,默認不勾选(false)。

3-DeviceProperties

此項是用來描述/注入設備信息。主要是顯卡與聲卡,當然,也可以定制一些設備到關於本機-系統報告-PCI列表中去。

ADD:設置設備屬性

PciRoot(0x0)/Pci(0x1b,0x0) -> Layout-id

  • 應用AppleALC音頻注入,您需要對主板具有的編解碼器進行自己的研究,並將其與AppleALC的佈局相匹配。AppleALC支持的編解碼器
  • 對於我們來說,我們將使用boot-arg alcid=xxx來完成此操作。alcid將覆蓋存在的所有其他佈局ID
  • 有趣的事實:字節順序被換的原因是由於字節序,特別是小Endians現代的CPU使用排序字節。你知道的越多!

在Z390 音效卡的位置,我們可以透過Hackintool 工具來尋找。

PciRoot(0x0)/Pci(0x1F,0x3) 就是音效卡的位置。然後在注入音效ID 07000000即可。

PciRoot(0x0)/Pci(0x2,0x0) 內顯設定

本部分是通過WhateverGreen的幀緩衝器修補指南設置的,用於修復某些iGPU屬性,例如ig-platform-id。我們為此獲得適當值的方法是查看打算使用的幀緩衝區,然後交換成對的十六進製字節。

如果我們將ig-plat視為0xAABBCCDD,我們的交換版本將如下所示DDCCBBAA

我們使用的兩個ig-platform-id如下:

  • 0x3E9B0007 -使用Desktop iGPU驅動顯示器時使用
    • 07009B3E 十六進制交換時
  • 0x3E920003 -當Desktop iGPU僅用於計算任務且不驅動顯示器時使用
    • 0300923E 十六進制交換時

值得注意的是,對於10.12-> 10.13.5,您需要在Kaby Lake指南中將iGPU偽造為相同的值,因為這是在原生Coffee Lake iGPU出現之前。10.13.6本地支持Coffee Lake

另外再添加了2個屬性,framebuffer-patch-enableframebuffer-stolenmem。第一個通過WhateverGreen.kext啟用修補程序,第二個將最小失竊內存設置為19MB。這通常是不必要的,因為可以在BIOS中配置(建議64MB),但在不可用時需要配置。

對於在B360,B365,H310,H370,Z390上顯示詳細信息後出現黑屏問題的用戶,請參閱BusID iGPU修補頁面

類型
AAPL,ig-platform-id數據07009B3E
framebuffer-patch-enable數據01000000
framebuffer-stolenmem數據00003001

(這是不帶dGPU且沒有iGPU內存的BIOS選項的桌機 UHD 630的範例)

特別說明:移動用戶應參考移動iGPU部分以了解應使用的屬性:iGPU修補

Block:從地圖上刪除設備屬性,對我們來說我們可以忽略此部分

4-Kernel

Kernel edit

4-1ADD:在這裡指定要加載的kext,在這裡訂購很重要,因此請確保Lilu.kext始終是第一個!Lilu之後還有其他更高優先級的kext,例如VirtualSMC,AppleALC,WhateverGreen等。提醒您,ProperTree用戶可以運行Cmd / Ctrl + Shift + R以正確的順序添加其所有kext,而無需手動鍵入每個kext。

  • Comment
    • Name of the kext
    • ex: Lilu.kext
  • 已啟用
    • Self-explanatory,啟用或禁用kext
  • ExecutablePath
    • 實際可執行文件的路徑隱藏在kext中,您可以通過右鍵單擊並選擇kext的路徑Show Package Contents。通常,它們將是文件夾,Contents/MacOS/Kext但有些Plugin文件夾中隱藏了kext 。請注意,只有plist kexts不需要填寫。
    • 例如: Contents/MacOS/Lilu
  • PlistPath
    • info.plist隱藏在kext中的路徑
    • ex: Contents/Info.plist

4-2 BLOCK:禁用一些驅動。默認即可。

4.3 Emulate:欺騙不受支持的CPU(如奔騰和賽揚)時需要

  • Cpuid1Mask:將此留空
  • Cpuid1Data:將此留空

此屬性滿足兩個需求: •啟用對不受支持的CPU型號的支持。為不受支持的CPU變體啟用XCPM支持。 通常,只需要注意EAX的值,因為它代表完整的CPUID。其餘字節將保留為零。字節順序為Little Endian,因此,例如,A9 06 03 00代表CPUID 0x0306A9 (Ivy Bridge)。
對於XCPM支持,建議使用以下組合仿冒。
•Haswell-E(0x306F2)至Haswell(0x0306C3):
Cpuid1Data:C3 06 03 00 00 00 00 00 00 00 00 00 00 00
Cpuid1Mask::FF FF FF FF 00 00 00 00 00 00 00 00 00 00
•Broadwell-E (0x0406F1)to Broadwell(0x0306D4):
Cpuid1Data:D4 06 03 00 00 00 00 00 00 00 00 00 00 00
Cpuid1Mask::FF FF FF FF 00 00 00 00 00 00 00 00 00 00 00。

Cpuid1Mask 類型:plist數據,16字節
故障安全:全零
說明:Cpuid1Data中有效位的位掩碼。 當每個Cpuid1Mask位設置為0時,將使用原始CPU位,否則,設置位採用Cpuid1Data的值。

4-4 Patch:範例裡面的4個一般情況下不用,2個RTC的補丁可以用於華碩的主板(二選一),但需要測試。主要解決華碩主板重啟BIOS重置,需要按F1跳過的問題。

4-5 Quirks:與內核,設置對我們來說,我們將實現AppleCpuPmCfgLockAppleXcpmCfgLockDisableIOMapper, PanicNoKextDumpPowerTimeoutKernelPanicXhciPortLimit。其他應保留為默認值

  1. AppleCpuPmCfgLock:是
    • 僅當無法在BIOS中禁用CFG-Lock時才需要,如果你BIOS裡面CFG/MSR已經关闭,則不勾选。反之選。如何檢查CFG是否關閉?利用Hackintool-工具-點擊Intel標誌-從appleintellnfo獲取,查找CFG Lock,如果顯示0(MSR not lockde)則是啟用,如果顯示1(MSR locked)則是關閉。BIOS裡面沒有CFG/MSR相關選項的,如何CFG Lock 啟用的方法請看這裡。
  2. AppleXcpmCfgLock:是
    • 僅當無法在BIOS中禁用CFG-Lock時才需要,Clover對應的對像是KernelPM。請確認您可以禁用CFG-Lock,大多數係統無法使用它啟動,因此需要使用此Quirks
  3. AppleXcpmExtraMsrs:否
    • 主要是在無原生電源管理的CPU上使用,一般是Haswell-EBroadwell-ESkylake-X這三種CPU,必須勾选其他CPU不用勾選。
  4. AppleXcpmForceBoost:否
    • 此補丁將0xFF00寫入到MSR_IA32_PERF_CONTROL (0x199),一般CPU都不勾選。
  5. CustomSMBIOSGuid:否
    • 對UpdateSMBIOSMode自定義模式執行GUID修補。通常與戴爾筆記本電腦有關
  6. DisableIoMapper:是
    • 禁用VT-D,如果BIOS有相關設定就關閉它,若無在Boot-args加入dart=0加入此參數。SIP可以留在Catalina中,因此是更好的替代選擇。
  7. DisableRtcChecksum:
  8. DummyPowerManagement:否
    • 由於沒有本地電源管理,因此所有基於AMD CPU的系統都需要NullCPUPowerManagement的新替代產品。英特爾可以忽略。
  9. ExternalDiskIcons:否
    • AHCI控制器相關。現在主流機板對AHCI支持都很好,對於Z87及以下版本的NVMe,您只需通過DeviceProperties添加內置屬性。
  10. IncreasePciBarSize:否
    • 將IOPCIFamily中的32位PCI磁條大小從1 GB增加到4 GB,在BIOS中啟用Above4GDecoding是一種更加干淨和安全的方法。某些X99板可能需要這樣做,如果需要,通常會在IOPCIFamily上遇到內核恐慌。請注意,在Mojave和更高版本上不需要
  11. LapicKernelPanic:否
    • 禁用HP系統通常需要的AP核心lapic中斷的內核恐慌。三葉草等效為Kernel LAPIC
  12. PanicNoKextDump:是
    • 顯示kext出錯信息,一般選NO
  13. PowerTimeoutKernelPanic:是
    • 當遇到睡眠不能喚醒,只有重啟後才能喚醒的情況下勾選,台式機選NO。
  14. ThirdPartyDrives:否
    • 啟用TRIM,NVMe不需要,但是基於AHCI的驅動器可能需要此功能。請檢查系統報告下的內容,以查看您的驅動器是否支持TRIM
  15. XhciPortLimit:是
    • 這實際上是15端口限制補丁程序,請不要依賴它,因為它不是固定USB的保證解決方案。請盡可能創建一個USB3.0端口編譯。

原因是UsbInjectAll重新實現了內置的macOS功能,而沒有適當的當前調整。僅在一個僅plist的kext中描述您的端口會更清潔,這不會浪費運行時內存,

5-Misc

Mise 編譯

5-1 BlessOverride:這個選擇是尋找一些不同位置的EFI,一般空。

5-2 BOOT:引導屏幕設置(將所有內容保留為默認值)

  1. ConsoleAttributes:0
    • 設置圖形界面背景與前景顏色,默認為0,此處將不介紹,但請參見Configuration.pdf的 8.3.8 了解更多信息
  2. HibernateMode:None。最好避免一起使用Hackintoshes進行休眠
    • None — 禁用休眠Auto — 從RTC 或NVRAM 中檢測RTC — 從RTC 檢測NVRAM — 從NVRAM 檢測
  3. HideAuxiliary:否。隱藏恢復和其他分區,除非按下空格鍵,否則會更接近真實的Mac行為
    • Description :默認情況下,隱藏開機引導項菜單中的輔助條目。滿足任一以下條件的引導項條目即會被視為「輔助項目」該引導項是macOS Recovery 分區引導項目是macOS Time Machine 分區引導項目被標註為 Auxiliary 引導項目是一個系統(如Clean NVRAM)即使被隱藏,仍然可以通過空格進入「擴展模式」查看所有條目(引導項菜單會被重新加載):隱藏輔助條目則助於加快啟動速度。
  4. PickerAttributes
    • 用於設置自定義選擇器屬性,此處將不介紹,但有關更多信息,請參閱Configuration.pdf的 8.3.8。
  5. PickerAudioAssist:否
    • Description :在開機引導菜單中啟用螢幕中朗讀。macOS Bootloader屏幕朗讀的偏好設置是存在isVOEnabled.int32文件的preferences.efires中、並受操作系統控制。這裡僅提供一個等效的開關。切換OpenCore開機引導菜單和macOS BootLoader FileVault 2登錄界面也可以使用快捷鍵CommandF5:屏幕朗讀依賴可以正常工作的音頻設備。
  6. PickerMode
    • 啟動介面的選擇。Builtin設置OpenCore默認值。純文字介面。External模式:如果圖形界面引導可用則啟用,否則使用純文本用戶界面。Resources資料夾,包含開機聲音、圖形界面所需的圖片以及相應驅動。文件下載。Apple模式:如果蘋果引導可用則啟用,否則使用純文本用戶界面。在External模式下,完全禁用OpenCore對所有引導管理,除非有強制策略。在Apple模式下,可以繞過強制策略。要實現External模式,使用者可自定義界面,使用OcSupportPkg、 OcBootManagementLib庫,外部圖形接口參考在ExternalUi測試驅動程序中提供。OpenCore-Builtin模式引導包含在引導過程中支持幾個快捷鍵,類似於蘋果的BDS,目前有以下幾個:
      ㄧ、Default-默認選項:使用OpenCore內置引導
      二、ShowPicker項:勾選此項,則此項變為默認項,強制picker顯示,可以在引導時使用Option。
      三、ResetNvram項:在勾選AllowNvramReset的情況下,可以使用CMD+OPT+P+R組合鍵來實現清除(Reset) NVRAM,當然還可以用另一種方​​式來清除NVRAM。
  7. PollAppleHotKeys:否
    • 允許您在引導過程中使用Apple的熱鍵,具體取決於您可能需要使用OpenUsbKbDxe.efi而不是OpenCore的內置支持的固件。請注意,如果您可以在OC的選擇器中選擇任何內容,則禁用此選項會有所幫助。常用命令:
      • Cmd+V:啟用-V
      • Cmd+Opt+P+R:清理NVRAM
      • Cmd+R:引導恢復分區
      • Cmd+S:以單用戶模式引導
      • Option/AltShowPicker設置為時顯示啟動選擇器NO,替代方法是ESCCMD+S+MINUS — 禁用KASLR slide,需要事先禁用SIP。
      • Shift — 啟用安全模式。1
  8. ShowPicker:Yes
    • 是否顯示開機啟動盤顯示。
  9. TakeoffDelay0
    • 在選擇啟動硬碟之前與快捷鍵操作的延遲。一般是0,對於一些鍵盤驅動需要填寫5000-10000(微秒)。
  10. Timeout5
    • 這設置了OpenCore從默認選擇中自動啟動之前要等待的時間

Debug:有助於調試OpenCore引導問題

  1. AppleDebug:No
    • 啟用boot.efi日誌記錄,對於調試非常有用。請注意,這僅在10.15.4及更高版本上受支持
  2. ApplePanic:No
  3. DisableWatchDog:NO
    • 禁用UEFI看門狗,可以幫助解決早期啟動問題
  4. DisplayDelay:0
    • 顯示更多的調試信息,需要OpenCore的調試版本
  5. DisplayLevel2147483650
    • 顯示更多的調試信息,需要OpenCore的調試版本
  6. SerialInit:No
  7. SysReport:No
  8.  Target:3
    • 一般設定值。

5-3 Entries:添加一些路徑。現在暫時不管

5-4 Security:安全設置

  1. AllowNvramReset:是
    • 允許在啟動選擇器中和按下時重置NVRAM Cmd+Opt+P+R
  2. AllowSetDefault:是
    • 允許CTRL+EnterCTRL+Index在選擇器中設置默認啟動設備
  3. ApECID:0
  4. AuthRestart:否:
    • 為FileVault2啟用經過身份驗證的重啟,因此重啟時不需要密碼。可以視為安全風險,因此是可選的
  5. BootProtect:新增GUI啟動的介面選項。
    • 在OC資料夾當中,多了Bootstrap資料夾。這是要啟動OC GUI介面另一個選項。
  6. DmgLoading:Signed
  7. ExposeSensitiveData6
    • 顯示更多的調試信息,需要OpenCore的調試版本
  8. HaltLevelOptional
    • 我們不會處理文件庫,因此我們可以忽略,您不會在將此設置為安全的情況下啟動
  9. SecureBootModel:Default
  10. ScanPolicy0
    • 0掃描所有硬盤或是光區等的設備。
    • 默認983299即可
  11. Vault:磁盤加密
    • 當Optional時,為選擇磁盤不加密,一般情況下都填寫Optional
    • 當Basic時,啟用基本的系統文件加密驗證
    • 當Secure時,啟用完整全面的系統文件加密驗證

5-5 Tools:用於運行OC調試工具(如外殼程序)的ProperTree的快照功能將為您添加這些工具。對於我們來說,我們不會使用任何工具

  • Comment
    • OpenCore中顯示的名稱
  • Enabled
    • 不言自明,啟用或禁用
  • Path
  • 條目:用於指定OpenCore自然找不到的不規則引導路徑此處將不涉及,有關更多信息,請參見Configuration.pdf的 8.6。

6-NVRAM

6-1 ADD
6-1-1 4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14(Booter路徑,主要用於UI縮放)

  • DefaultBackgroundColor:boot.efi使用的背景色
    • 00000000:Syrah Black
    • BFBFBF00: 淺灰
  • UIScale
    • 01:標準分辨率(相當於三葉草0x28
    • 02:HiDPI(通常要求FileVault在較小的顯示器上正常運行,等效於Clover 0x2A

6-1-2 UID:4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102 (從GUID的映射(plist dict)到plist字符串格式的變量名數組(plist數組)中刪除NVRAM變量。) 暫時刪除該項9-1說明

  • rtc-blacklist:data <>

6-1-3 UUID:7C436110-AB2A-4BBB-A880-FE41995C9F82(引導參數與引導界面裡面的相關內容。

  • SystemAudioVolume:系統音量大小調節,默認46,建議60.
  • boot-args
    • -v-這將啟用詳細模式,該模式顯示啟動時滾動顯示的所有幕後文本,而不是Apple徽標和進度條。對於任何Hackintosher來說,它都是無價之寶,因為它可以使您深入了解啟動過程,並可以幫助您確定問題,問題擴展等。
    • debug = 0x100-禁用macOS的看門狗,這有助於防止內核崩潰時重啟。這樣,您可以希望收集一些有用的信息,並遵循麵包屑來解決問題。
    • keepsyms = 1-這是debug = 0x100的輔助設置,它告訴OS還在內核崩潰時打印這些符號。這樣可以對引起恐慌的原因提供更多有用的見解。
    • alcid = 1-用於設置AppleALC的layout-id,請參閱支持的編解碼器以找出要用於特定係統的佈局。
  • csr-active-config:SIP的設置,通常建議csrutil通過恢復分區在恢復分區內手動更改此設置

csr-active-config設置為00000000啟用系統完整性保護。您可以選擇許多其他選項來啟用/禁用SIP部分。常見的如下:

  • 00000000 -完全啟用SIP
  • 03000000 -允許未簽名的kext和寫入受保護的fs位置
  • FF030000 -禁用macOS High Sierra(0x3ff)中的所有標誌
  • FF0F0000 -禁用macOS Big Sur(0xfff)中的所有標誌,該標誌具有用於身份驗證的root的另一個新標誌
    寫入macOS系統分區使用macOS Catalina和更高版本,Apple將OS和用戶數據分為2個卷,默認情況下系統卷為只讀。為了使這些驅動器可寫,我們需要做一些事情:macOS Catalina
    1. 禁用SIP
    2. 將驅動器安裝為可寫(sudo mount -uw /在終端中運行)
    macOS Big Sur
    1. 禁用SIP
    2. 將驅動器安裝為可寫(請參見下面的鏈接以獲取命令)
    3. 更改後創建一個新的快照(有關命令,請參見下面的鏈接)
    4. 將此快照標記為下次啟動(有關命令,請參見下面的鏈接)
    ASentientBot@mac_editor提供的完整信用和命令鏈接:

注意:與Clover相比,使用OpenCore禁用SIP有很多不同,特別是除非在本Delete節中明確說明,否則NVRAM變量將不會被覆蓋。因此,如果您已經通過OpenCore或在macOS中設置了一次SIP,則必須覆蓋該變量:

  • NVRAM -> Block -> 7C436110-AB2A-4BBB-A880-FE41995C9F82 -> csr-active-config

建議保持啟用狀態,以實現最佳安全做法

  • nvda_drv:<>
    • 要啟用Nvidia WebDrivers,請在運行Maxwell或Pascal GPU時將其設置為31 。這與設置nvda_drv = 1相同,但是我們將其從文本轉換為十六進制,等效 Clover NvidiaWebAMD,Intel和Kepler GPU用戶應刪除此部分。
  • prev-lang:kbd:<>
    • 格式為的非拉丁鍵盤需要lang-COUNTRY:keyboard使用,儘管您可以指定空白,但建議保持空白(“示例”配置中的默認值為“俄語”):
    • 美國:en-US:0656e2d55533a30十六進制)
    • 完整列表可在AppleKeyboardLayouts.txt中找到
    • 提示:prev-lang:kbd可以更改為字符串,因此您可以en-US:0直接輸入而不用轉換為十六進制
類型
prev-lang:kbdStringzh-Hant:2 繁體中文

6-2 Block:強制重寫NVRAM變量,請注意Add 不會覆蓋 NVRAM中已經存在的值,因此boot-args應單獨保留類似的值。

6-3 LegacyEnable:否

  • 非原生nvram主板勾选原生nvram主板不勾选。經過測試非原生nvram主板(主要是300系列主板)使用SSDT-PMC以後,就可以當原生nvram主板使用,不勾選此項。

6-4 LegacyOverwrite:否

  • 允許從nvram.plist重寫固件變量,只有沒有本機NVRAM的系統才需要

6-5 LegacySchema

  • 用於分配NVRAM變量,將LegacyEnable設置為YES

WriteFlash:No

  • 允許為所有添加的變量寫入閃存。

7-PlatformInfo

為了設置SMBIOS信息,我們將使用CorpNewt的GenSMBIOS應用程序。

在這個Coffee Lake的示例中,我選擇了iMac19,1 SMBIOS 出於兼容性的考量,故意這樣做。Coffee Lake有兩種主要的SMBIOS:

  • iMac19,1 -為的是要接近於蘋果產品的型號。相似度比較高。
  • iMac19,2 -僅用於使用dGPU進行顯示而使用iGPU進行計算任務的計算機。
    • 注意:使用第九代主板使用者,應該使用 iMac19,1SMBIOS,為的就是能夠發揮iGPU+dGPU 雙硬解的功能。

GenSMBIOS:將為我們提供類似於以下內容的輸出:

  #######################################################
 #               iMac19,1 SMBIOS Info                  #
#######################################################

Type:         iMac19,1
Serial:       C02YTKZFJV3Q
Board Serial: C02923401QXLNV98C
SmUUID:       A64E502A-0D76-4D48-AF92-46BBA02DC630

上面所述為機型之參數,是根據你主機原本所設定的SMBIOS值,所產生出來的。
Type零件將復製到通用-> SystemProductName。
Serial零件將復製到通用-> SystemSerialNumber。
Board Serial零件將復製到通用-> MLB。
SmUUID零件將復製到通用-> SystemUUID。

我們將Generic-> ROM設置為Apple ROM(從真實Mac轉儲),您的NIC MAC地址或任何隨機MAC地址(可以是6個隨機字節,對於本指南,我們將使用11223300 0000

提醒您需要有效的序列號,但未使用的序列號,您想獲得一條消息,例如:“未驗證購買日期”。以下為表格中各列的說明。

7-1 Automatic:Yes

7-2 Generic

  • AdviseWindows
  • MLB:用macserial讀取或生成
  • ROM:<>可以是任意6 Byte MAC地址,如0x112233000000
  • SpoofVendor:YES (仿冒製造商為Acidanthera來避免出現衝突)
  • SystemUUID:建議留空並讓OpenCore自動注入設備自帶UUID或填入設備自帶UUID以防出現Windows激活問題
  • SystemProductName:用macserial讀取或生成
  • SystemSerialNumber:用macserial讀取或生成如何獲取該值,請參考這裡。

7-3 UpdateDataHub:選擇YES。更新數據中心分段。根據Automatic的值,這些細分會從GenericDataHub中讀取。
7-4 UpdateNVRAM:選擇YES。是否更新NVRAM中關於樣本信息的相關類別。根據Automatic的值,這些細分會從GenericPlatformNVRAM中讀取。所有其他細分都將在NVRAM部分中指定。如果替換值設置為false,則可以使用nvram部分更新上述變量;反之若替換值設置為true,而同時nvram部分存在任何分裂,會產生意料之外的行為。
7-5 UpdateSMBIOS:選擇YES。更新SMBIOS字段。
7-6 UpdateSMBIOSMode:選擇Create。用新分配的EfiReservedMemoryType替換錶,​​在需要CustomSMBIOSGuid怪癖的Dell筆記本電腦上使用Custom。

8-UEFI

8.1:APFS,按照下面APFS屬性配置,用於提供APFS的支持(即不用Config-UEFI-Drivers裡面的ApfsDriverLoader)04-13新增項。
  1. EnableJumpstart:加載APFS驅動程序勾選(YES)。此選項執行已簽名APFS的加載
    驅動與掃描策略。
  2. GlobalConnect:No
  3. HideVerbose:勾選(YES)是隱藏APFS驅動程序的詳細日誌。
  4. JumpstartHotPlug :支持包含APFS的USB設備熱插拔,一般不勾選(NO)
  5. MinDate :APFS驅動的日期。一般填寫0。
  6. MinVersion:APFS驅動的版本。一般填寫0。
8.2:Audio,包括此項下7個小項,建議默認不動,所需Resources文件點這裡下載,裡麵包含開機聲音、圖形界面所需的圖片以及相應驅動。
  1. AudioSupport-(false/true):關閉/開啟末端驅動以停止/啟用開機音頻
  2. AudioDevice-指定音頻控制器路徑,如:PciRoot(0x0)/Pci(0x1f,0x3)。
  3. AudioCodec-設置音頻控制器上解碼器的地址,如:0。
  4. AudioOut-設置解碼器輸出端口數,如1或4或7等。
  5. MinimumVolume-音量大小選擇,默認是20。
  6. PlayChime-false/true,關閉/開啟啟動時播放鈴聲。
  7. VolumeAmplifier-音頻增益係數。0~1000。
8.3:ConnectDrivers

連接驅動程序。Yes。

8.4:Drivers

UFEI驅動,一般情況下,新版OC只用二個:HfsPlus.efiApfsDriverLoader.efiOpenRuntime.efi,至於UsbKbDxe.efi等根據自己的需要選擇。

  • ApfsDriverLoader — 對APFS格式的支持。由於增加了Config-UEFI-APFS項可以不用此驅動。04-13改變。
  • OpenRuntime — 使用OpenCore引導必須使用
  • EnhancedFatDxe — 對FAT格式的支持
  • NvmExpressDxe — 對於Haswell或更早不支持NVMe SSD添加的驅動
  • OpenUsbKbDxe — 將USB鍵盤模擬為蘋果鍵盤的驅動
  • VBoxHfsHFSPlus—對HFS格式的支持
  • XhciDxe — XHCI USB驅動,Sandy Bridge以前的CPU、主板或者USB3.0PCI卡需要此驅動
8.5:Input
  1. KeyFiltering:默認不勾選(false),啟用時,則是檢查鍵盤輸入完整性。只針對部分老舊主板。
  2. KeyForgetThreshold:設置為5
  3. KeyMergeThreshold:設置為2
  4. KeySupport勾选
  5. KeySupportMode:選擇Auto
  6. KeySwap勾选
  7. PointerSupport:如果是華碩Z87/Z97,勾選,其他不勾选
  8. TimerResolution:延遲選50000
  9. PointerSupportMode:範例是ASUS。不改

8-6 :Output

8-6 Output: Relating to visual output

  1. ClearScreenOnModeSwitch: NO。當需要保留一半以前繪製的圖像時,將在切換到TextMode之前強制黑屏。請注意,僅在使用SystemTextRenderer的情況下才需要這樣做
  2. ConsoleMode: [Blank]
    指定控制台輸出大小,最好保持空白
  3. DirectGopCacheMode:No
  4. DirectGopRendering: No
    使用內置的圖形輸出協議渲染器作為控制台,主要與MacPro5,1用戶有關
  5. IgnoreTextInGraphics: NO。修復了文字和圖形輸出均只與使用SystemTextRenderer的用戶相關的UI損壞的問題
  6. ProvideConsoleGop: YES。啟用GOP(圖形輸出協議),這是macOS引導程序進行控制台處理所必需的,一旦內核接管,圖形輸出所需要的GOP
  7. ReconnectOnResChange: NO
  8. ReplaceTabWithSpace: NO根據固件的不同,某些系統在無法處理Tabs時可能需要此工具來正確編輯UEFI Shell中的文件。而是將其交換為空格,但是大多數人可以忽略它,但請注意,可能需要將ConsoleControl設置為True
  9. ResolutionMax
    • 設置OpenCore的分辨率,Max將使用最高可用分辨率或可以指定(WxH@Bpp (e.g. 1920x1080@32) or WxH (e.g. 1920x1080)
  10. SanitiseClearScreen: NO
    • 修復了高分辨率顯示,以1024×768顯示OpenCore,僅與使用SystemTextRenderer的用戶有關
  11. TextRendererBuiltinGraphics用於固定OpenCore本身的分辨率,Resolution必須設置為Max正確運行

8.7 ProtocolOverrides

  1. AppleAudio:No。關閉/開啟蘋果音頻協議(不支持10.13以前的版本)。
  2. AppleBootPolicy:No。虛擬機的Mac需要用。
  3. AppleDebugLog:No。調用Apple調試日誌協議。
  4. AppleEvent:No。虛擬機並有vault需要用。
  5. AppleFramebufferInfo:
  6. AppleImageConversion:No。重建apple圖標。
  7. AppleImg4Verification:
  8. AppleKeyMap:No。重建apple功能鍵。
  9. AppleRtcRam:No。一般不勾選。04-19新增。
  10. AppleSecureBoot:No
  11. AppleSmcIo:No。替代之前的 VirtualSmc.efi。添加/No,未添加/Yes
  12. AppleUserInterfaceTheme :No。與主題有關。
  13. DataHub:No。重建DataHub。
  14. DeviceProperties:No。虛擬機需要。
  15. FirmwareVolume:No。File Vault的相關。
  16. HashServices:No。File Vault的相關。
  17. OSInfo:No。操作系統信息協議。
  18. UnicodeCollat​​ion:No。老舊主板需要。
8-8 Quirks
  1. DeduplicateBootOrder:Yes
  2. ExitBootServicesDelay:較新的主板直接填入0,老舊主板填入3000000-5000000。
  3. IgnoreInvalidFlexRatio:如果没有解鎖CFG,必须勾选
  4. ReleaseUsbOwnership:如果開機鍵盤鼠標卡死,勾選試試,一般是No。
  5. RequestBootVarFallback:與雙系統有關,一般不勾选
  6. RequestBootVarRouting:如果要使用“啟動磁碟”的選項,Yes
  7. UnblockFsConnect:與惠普本本相關,一般不勾选
8-9 ReservedMemory(04-19新增),用於填充plist dict值,避免系統寫入和使用特定設備或硬件的內存。
  • Address:例如-268435456,設預留內存區域的起始地址,防止系統訪問。
  • Comment:例如-HD3000: IGPU memory corruption errata。
  • Size:例如-268435456,設置保留內存區域的大小,必須與頁面對齊(4 kb)。
  • Enabled:默認為false(關閉)則不預留上面的內存。

最後測試

現在,您可以把編譯好config.plist 文件,存放在EFI / OC下的EFI中測試看看摟。

檢查引導文件

因此,感謝Ramus的製作檢查工具,可以幫助你編譯好的文件驗證您的配置:

  • 檢查config.plist設定值連結