State of my hackintosh 2020.11

Pedro Sheng (沈P)
the Lab.
Published in
18 min readNov 15, 2020

--

這是一篇給自已看,紀錄用,供大家拿來參考用即可的文章,請不要無視所有的文字、規格和檔案 100% 按照底下的步驟進行,OK?(除非你的硬體真的 100% 跟我一樣那另當別論)

寫了黑蘋果系列文那麼多年還是覺得計劃趕不上變化(畢竟近期遇到OC大改版+Big Sur要出了),實在是沒有心力維護我的教學文(當然偶爾能收到別人傳來問問題的訊息也是滿開心的,雖然難免有點累,只是比較不喜歡直接伸手要 EFI 或是 config.plist 的人而已),所以我就想說把標題改成這樣應該可以降低大家把我的文章當作教學的機率吧?(苦笑)

Z390 使用者不建議跟這篇教⃠學⃠(都·說·了,這不是教學),也不建議問我該怎麼除錯,這平台的設定比較搞怪不太一樣,我也沒經驗,建議參考看看就好。

最後就是本篇有借鑑部分 Dortania’s OpenCore Install Guide 的內容(尤其是 config.plist 的設定),如果想要更深入地從頭學起的話建議直接看原文,感謝眾開發者在此專案的付出讓大家有這麼好的教學可以看。

文章更新日、OpenCore 版本、待補清單

2020.11.15

OpenCore 0.6.3

[ ] Windows 底下製作安裝隨身碟(用GibMacOS)
[ ] USB Map 修正

目錄

建議用新索引標籤或是視窗跳轉。

· 文章更新日、OpenCore 版本、待補清單
· 目錄
· 硬體規格
· 安裝隨身碟製作
· EFI 準備
| ∘ OpenCore 資料夾
| ∘ 檔案準備
· config.plist 製作
| ∘ 工具準備
| ∘ 開始之前
| ∘ ##WARNING
| ∘ ACPI
| ∘ DeviceProperties
| ∘ Kernel
| ∘ Misc
| ∘ NVRAM
| ∘ PlatformInfo
| ∘ UEFI
· BIOS 設定
· 安裝之後
| ∘ 免隨身碟開機
· 參考資料

硬體規格

  • 處理器: Intel Core i7–8700K
  • 主機板: ASUS ROG STRIX Z370-F GAMING
  • 音效卡: ALCS1220A (layout-id 20、21)
  • 記憶體: Micron Crucial Ballistix 32GB (16GBx2) DDR4–3200
  • 固態硬碟: Micron Crucial MX500 500G
  • 固態硬碟: Intel SSD 730 240GB
  • 傳統硬碟: Seagate IronWolf 4TB (ST4000VN008)
  • 傳統硬碟: Toshiba 4TB (MD04ACA400)
  • 顯示卡: ASUS ROG STRIX-RX570-O4G-GAMING
  • 螢幕: BenQ EW3270U (32吋,3840x2160)
  • WiFi、藍芽: Fenvi FV-T919
  • 散熱器: Corsair H115i
  • 機殼: Fractal Design Define R6
  • 鍵盤: Leopold FC660M PD SKY
  • 滑鼠: Logitech G304 Lightspeed

安裝隨身碟製作

  1. 打開 Mac App Store 下載 macOS Big Sur

2. 打開 磁碟工具程式 ,清除隨身碟為

  • 名稱:USB
  • 格式:Mac OS 擴充格式(日誌式)
  • 架構:GUID 分割區配置表

3. 打開 終端機 輸入指令執行,並輸入密碼

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

4. 完成後,一行行輸入指令,下載 MountEFI、設好權限並且開啟

git clone https://github.com/corpnewt/MountEFI
cd MountEFI
chmod +x MountEFI.command
./MountEFI.command

若您輸入指令提示要閱讀並同意 XCode 授權條款,請在輸入指令前使用 sudo xcodebuild -license 打開授權條款,按下 return 進入條文按 space 捲動。最終輸入 accept 按下 return 結束後即可使用 git 指令。

5. 在 MountEFI,輸入隨身碟對應的數字,按下 Return,並輸入密碼

6. 可在 Finder 看到 EFI 磁區

EFI 準備

OpenCore 資料夾

  1. 下載 OpenCore Pkg
    Debug 版較容易除錯,Release 版開機速度較快 (建議可以用Debug版穩定後再轉Release也不遲)
  2. 解壓縮後將 X64 資料夾內的 EFI 資料夾 整個複製到剛剛(用 MountEFI 開啟)的 EFI 磁區
  3. 清理資料,下列檔案刪除
  • Drivers 資料夾除了 OpenRuntime.efi 其餘全刪
  • Tools 資料夾除了 OpenShell.efi 其餘全刪

4. 從 Opencore Pkg 資料夾 > Docs 裡頭複製 Sample.plist 至 EFI/OC 底下,並重命名為 config.plist

5. 後續檔案,放到該放的位置:

  • config.plist 放在 OC 根目錄
  • SSDT 和 自定義 DSDTs(.aml) 放至 ACPI 資料夾。
  • Kext(.kext) 放至 Kexts 資料夾。
  • 韌體驅動(.efi) 放至 Drivers 資料夾。

檔案準備

只有列出跟我主機類似相關的,以下並非每個都需要(也未必適合你),完整清單請上 OpenCore Install Guide 的 Gathering Files 查看

想看我最後有放進 EFI 的可以直接拉到最下方看完成品。

韌體驅動

必須

  • HfsPlus.efi (網頁右邊點擊 Download 按鈕下載)
  • OpenRuntime.efi (已經在資料夾內了)

Kexts

必須

其他

  • SMCProcessor.kext (在 VirtualSMC 的壓縮檔裡面) - CPU 資訊獲取
  • SMCSuperIO.kext (在 VirtualSMC 的壓縮檔裡面) - 風扇資訊獲取
  • WhateverGreen.kext — 顯示修正
  • AppleALC.kext — 聲音修正
  • IntelMausi.kext — Intel 網卡修正
  • AirportBrcmFixup.kext — 非蘋果/Fenvi Broadcom 網卡修正
  • BrcmPatchRAM3.kext — Broadcom 藍牙修正
  • BrcmFirmwareData.kext (在 BrcmPatchRAM 的壓縮檔裡面) - 藍牙修正依賴
  • NVMeFix.kext — 修正非蘋果 NVMe SSD 電源管理

SSDT

必須

  • SSDT-PLUG.aml (SSDTTime 產生) - 電源管理修正
  • SSDT-EC.aml (SSDTTime 產生) - 內崁控制器修正
  • SSDT-USBX.aml (網頁右邊點擊 Download 按鈕下載)- USBX電源修正

其他

  • SSDT-AWAC.aml (SSDTTime 產生) - 時鐘修正 (僅 Gigabyte 和 Asrock 板子需要)
  • SSDT-PMC.aml (SSDTTime 產生) - NVRAM 修正 (非 Z370 都需要)

SSDTTime 自動產生

雖然 SSDTTime 有 macOS 的版本(一開始其實就是 macOS 版),不過考量到不是每個人都有 Dump DSDT 的能力(這功能只有 Clover 有),所以這邊用 Linux 和 Windows 版來做示範。

(我這邊會使用 Linux,因為我的電腦裡面沒有 Windows 可用。但我還是會提示 Windows 使用者的操作。)

  1. (已有作業系統者請跳至4.) 下載 Ubuntu 的 ISO
  2. 下載 etcher 後開啟,將 ISO 拖入另一隻隨身碟當中,按下 Flash,輸入密碼後製作開機隨身碟。

3. 電腦使用安裝隨身碟開機,GRUB 選單對著 Ubuntu 按下 Enter,進到圖形化介面左側選擇 中文(繁體),點選 試用 Ubuntu 就能進到 Gnome 桌面開始操作。

4. SSDTTime 取得

(Linux使用者)
打開 終端機 (Terminal) 一行行輸入指令,下載 SSDTTime 並開啟

git clone https://github.com/corpnewt/SSDTTime
cd SSDTTime
python3 SSDTTime.py

若電腦沒有 git 安裝,請使用指令 sudo apt install git 安裝後再來運行上面的指令。

(Windows 使用者)
打開 SSDTTime repo 點擊 code > Download Zip 下載專案,解壓縮後雙擊 SSDTTime.bat 開啟

5. 主畫面輸入 8,按下 Enter,進行 Dump DSDT 產生 DSDT.aml,結束後再按 Enter 回主畫面。

6. 主畫面輸入 2,按下 Enter,進行 Fake EC 產生 SSDT-EC.aml,結束後再按 Enter 回主畫面。

7. 主畫面輸入 4,按下 Enter,進行 Plugin Type 產生 SSDT-PLUG.aml,結束後再按 Enter 回主畫面。

PS. 若您的主機板有需要 SSDT-AWAC.aml 和 SSDT-PWC.aml 的話,還需要繼續執行功能 5 6。尤其是非 Z370 主機板的人。

8. 主畫面輸入 q,按下 Enter 離開。從 Result 資料夾複製產生出的 SSDT 開頭的 .aml 檔複製至 /EFI/EFI/OC/ACPI 當中。(DSDT.aml 建議備份下來)

最後整理好如下

config.plist 製作

工具準備

一行行輸入指令,下載開啟

git clone https://github.com/corpnewt/ProperTree
cd ProperTree
./ProperTree.command

(Linux 最後一行輸入改指令 python ./ProperTree.command 開啟)
(Windows 雙擊 ProperTree.bat 開啟)

一行行輸入指令,下載開啟

git clone https://github.com/corpnewt/GenSMBIOS
cd GenSMBIOS
chmod +x GenSMBIOS.command
./GenSMBIOS.command

(沒有 Linux 版,不知道為什麼wwww)
(Windows 雙擊 GenSMBIOS.bat 開啟)

開始之前

使用 ProperTree 開啟 config.plist(可以用 Open 或是 cmd+O / ctrl+O

清理 config.plist,使用鍵盤快捷鍵 cmd+R / ctrl+R
會跳出資料夾選取,選取 OC 資料夾根目錄

會跳出目標版本不符,選擇 Yes 就會把目標改成當前版本

以下只會列出跟我主機相關的(而且很簡略),以下並非每個都需要(也未必適合你),完整清單以及各項功能敘述請上 OpenCore Install Guide / Desktop Coffee Lake 或是直接翻 OpenCore 說明書 查看。

##WARNING

開頭警告敘述,閱讀完按 Delete 刪除。

ACPI

Add

檢查裡面是否已經確實抓到資料夾內所有的 SSDT,並且確保 Enabled 參數都要設為 True。若沒有請再使用快捷鍵清理一次或是手動新增。

Quirks

  • DevirtualiseMmio: True
  • EnableWriteUnprotector: False (如果安裝時跟我一樣 Kernel Panic 卡在 [EB|#LOG:EXITBS:START] 的話,請設 True)
  • ProtectUefiServices: False (Z390請設True)
  • RebuildAppleMemoryMap: True (如果安裝時跟我一樣 Kernel Panic 卡在 [EB|#LOG:EXITBS:START] 的話,請設 False)
  • SyncRuntimePermissions: True (如果安裝時跟我一樣 Kernel Panic 卡在 [EB|#LOG:EXITBS:START] 的話,請設 False)

DeviceProperties

Add

我不想使用純內顯,沒有要修正framebuffer,所以直接略過。
有需求請直接看原文的這個章節

PciRoot(0x0)/Pci(0x1b,0x0)

AppleALC 的 LayoutID 因為會填在後面所以這邊直接略過。

Kernel

Add

檢查裡面是否已經確實抓到資料夾內所有的 kext。若沒有請再使用快捷鍵清理一次或是手動新增。

Quirks

  • AppleXcpmCfgLock: False (若BIOS無法關閉CFG-Lock請設 True)
  • DisableIOMapper: True (若BIOS VT-D關閉的話可設 False)
  • LapicKernelPanic: True (HP電腦請設 True)
  • PanicNoKextDump: True
  • PowerTimeoutKernelPanic: True
  • XhciPortLimit: True

Misc

Debug

  • AppleDebug: True
  • ApplePanic: True
  • DisableWatchDog: True
  • Target: 67 (需要Debug版得以運作)

Security

  • AllowNvramReset: True
  • AllowSetDefault: True
  • ScanPolicy: 0
  • SecureBootModel: Default
  • Vault: Optional

NVRAM

Add

7C436110-AB2A-4BBB-A880-FE41995C9F82

  • boot-args: -v keepsyms=1 debug=0x100 alcid=20 (開機引述設定)

詳細敘述:

  • -v: 文字模式開機
  • debug=0x100: 停用 watchdog 並讓 Kernel Panic 時不會重新啟動方便除錯。
  • keepsyms=1: 讓 Kernel Panic 印出除錯代碼方便除錯,與上面並用
  • alcid=xx: AppleALC layout-id 填寫位置,預設是1,請在此填上你主機板適合的設字,可以從清單或是Google尋找。
  • prev-lang:kbd : String : zh-Hant:-16900 (預設語言與鍵盤設定,格式記得改成 String,其他語言可以看這裡。)

WriteFlash

  • WriteFlash: True

PlatformInfo

GenSMBIOS

  1. 打開 GenSMBIOS (下載與開啟方法寫在上面)

2. 主畫面輸入 1,按下 Return,下載(或更新)MacSerial,結束後再按 Enter 回主畫面。MacSerial 會顯示目前版本。

3. 主畫面輸入 3,按下 Return,並且在下一個畫面輸入 型號 數量iMac19,1 5 ,再按下 Return 產生 SMBIOS。

4. 將 Serial 後的序號複製,貼上蘋果的檢查保固範圍網頁,若顯示「很抱歉,此序號無效。請檢查您的資訊並再試一次。」即為可使用。若是其他狀況請換一個序號使用。

5. 將最終能使用的序號以及其他項抄起來,填入下方 Generic 欄位。

Generic

  • SystemProductName: 填入 Type (CoffeeLake 建議使用 iMac19,1)
  • SystemSerialNumber: 填入 Serial
  • MLB: 填入 Board Serial
  • SystemUUID: 填入 SmUUID

Automatic

  • Automatic: True

UEFI

Drivers

檢查裡面是否已經確實抓到資料夾內所有的 Drivers。若沒有請再使用快捷鍵清理一次或是手動新增。

Quirks

  • UnblockFsConnect: False (HP電腦請設 True)

到這邊,config.plist 的編輯就告一段落 在插入電腦重開機之前,強烈建議使用 Sanity Checker 檢查自己的 config.plist 是否有問題。並且確實將 EFI 資料夾備份起來。

BIOS 設定

以下只會列出跟我主機板有關的選項,想要看完整清單請上 這個章節 查看。

  • Ai Tweaker/Ai智慧超頻: XMP
  • 啟動/快速啟動: Disabled
  • 啟動/CSM(Compatibility Support Module)/開啟相容性支援模組: 已關閉
  • 啟動/安全啟動選單/作業系統類型: 其他作業系統
  • 啟動/啟動設定/設定模式: 進階模式
  • 進階/中央處理器設定/Intel Virtualization Technology: 開啟
  • 進階/中央處理器設定/SW Guard Extensions (SGX): 已關閉
  • 進階/中央處理器設定/CPU — Power Management Control/CFG Lock: 已關閉
  • 進階/系統代理設定/VT-d: 開啟
  • 進階/系統代理設定/Above 4G Decoding: 開啟
  • 進階/系統代理設定/顯示設定/混合多螢幕輸出模式: 開啟
  • 進階/系統代理設定/顯示設定/首選顯示卡: PCIE
  • 進階/系統代理設定/顯示設定/DVMT Pre-Allocated: 64M
  • 進階/PCH存儲設定/SATA模式選擇: AHCI
  • 進階/內建裝置設定/RGB LED 燈光/When system is in sleep, hibernate or soft off states: 關閉
  • 進階/內建裝置設定/序列埠設定/序列埠1: Off

安裝之後

免隨身碟開機

  1. 在新灌好的電腦上,一行行輸入指令,下載 MountEFI、設好權限並且開啟
git clone https://github.com/corpnewt/MountEFI
cd MountEFI
chmod +x MountEFI.command
./MountEFI.command

若您輸入指令提示要閱讀並同意 XCode 授權條款,請在輸入指令前使用 sudo xcodebuild -license 打開授權條款,按下 return 進入條文按 space 捲動。最終輸入 accept 按下 return 結束後即可使用 git 指令。

2. 在 MountEFI,輸入隨身碟 (Install macOS Big Sur) 對應的數字,按下 return

3. 可在 Finder 看到 EFI 磁區,將 EFI 資料夾複製到其他地方(如桌面)

4. 退出隨身碟的 EFI 磁區

5. 回到 MountEFI,輸入安裝硬碟 (系統硬碟) 對應的數字,按下 return

6. 將剛剛複製出來的 EFI 資料夾覆蓋至剛剛掛載安裝硬碟的 EFI 裡頭。APPLE 資料夾可不保留,裡頭是存放白蘋果韌體更新我們無法使用

7. 拔除安裝隨身碟,重新開機,選擇安裝硬碟開機

參考資料

地球表面上所有要研究用 OpenCore 灌黑蘋果的人最推薦看的教學 Dortania’s OpenCore Install Guide

--

--

Pedro Sheng (沈P)
the Lab.

對未來充滿迷茫的遊戲系學生,試圖從生活找到未來人生道路的線索。