前言:
本教學是針對沒有蘋果電腦的新手,如何在winsows 環境下,自行編輯OC引導文件以及製作macOS 安裝碟的方法。類似的教學文章和影片很多,但繁體中文教學的部分卻是很少,這對新手來說,即為最大的挑戰,也基於此,個人以實際的操作,並以圖文解說的模式,寫下這一篇教學文章,讓大家很快的構建屬於自己的黑蘋果。
社長看過很多的教學文章和影片之後,經過長時間的研究與測試,並整理所有的資訊和需要的文件,並簡化所有製作過程,而寫下以下的教學文章,前後一共有三個部分,分別為 Bios、編輯OC引導文件、製作安裝碟等三步驟。新手只要遵循以下要點,很快的就能製作macOS 安裝碟。
備註:
本教學製作的安裝碟,安裝的過程當中,必須要連網下載 macOS 映像檔,來進行安裝 macOS ,如果自己沒有固線連網的話,而是採用 Wifi 連網的情況下,成功率可能不高,不過,也可以下載完整的 macOS 映像檔安裝包來安裝也是可以。
以下的教學針對 10th/11th 設備使用,若是用戶的設備為可能是 9th 或是以下者,製作方法也可以套用沒問題。唯獨 OC引導文件部分,可以參考 Dortnia 的教學文章。
硬體設備:
- GA Z490 ELITE AC
- CPU:i9-10900K
- RAM:美光DDR4 3200 8GB x2
- SSD:WD BK SN750 1TB
- GPU:藍寶石 RX5700 XT
- EFI:OC 0.7.2、0.7.3 適用
- OS:適用Catalina、Big Sur、Monterey
這裏要特別要注意的地方是主機板所內建的網路卡、音效卡的晶片型號。我用的是技嘉主機板,所以我從官網該主板型號的內容當中,找到相關資訊。如果你是用ASUS、MSI、ASRock 的主板,也可以嘗試到官網找到相關的資訊!
網卡:內建Realtek® 2.5GbE 網路晶片 (2.5 Gbit/1 Gbit/100 Mbit)
WiFI:Intel® Wi-Fi AC 9462
音效:內建Realtek® ALC1200晶片
這樣大家就可以找出對應 macOS 驅動程式了。請往下一個章節。
壹、準備工作:
這裡我列出的文件,請大家全數下載到桌面。
其他所需的檔案連結如下,請先下載好,並放在同一資料夾內
Python | 3.9.7 | 程式碼腳本 |
RAR 解壓縮程式 | 解壓縮程式。7zip 亦可 | 解壓縮用 |
OpenCore 引導 | RELEASE | |
gibMacOS | ZIP | macOS 安裝檔下載器 |
ProperTree | ZIP | plist 編輯器 |
KEXT 10th 適用
Lilu.kext | |
VirtualSMC | 蘋果仿真器 |
WhateverGreen.kext | 顯示卡驅動 |
AppleALC.kext | 音效卡驅動 |
LucyRTL8125Ethernet.kext | Realtek 2.5G 網路卡 |
IntelMausi.kext | Intel 網路卡 |
Intel I225-V | 以下有說明 |
FakePCIID.kext | 連接到任何IOPCIDevice |
FakePCIID_Intel_HDMI_Audio.kext | 用於將Mac不支持的硬件設備仿冒成受支持的設備以開啟原生功能,這裡指的是音效部分 |
USBInjectAll.kext | USB 驅動 |
KEXT 9th 以下適用
Realtek (81xx) | Realtek 網路卡 |
AtherosE2200Ethernet.kext | Atheros (Killer) 有線網卡 |
收集文件
尚未開始編輯 OC引導文件時,得先做好以下的準備工作:
ㄧ、更名:
複製 Docs/Sample.plist 移到 EFI/OC/ 資料夾,並更名為 config.plist
二、ACPI資料夾:收集SSDT 修正檔
位置:EFI/OC/ACPI 資料夾
這裡需要幾個 SSDT 來恢復 Clover 提供的功能:
SSDT-PLUG.aml | CPU 電源管理。 |
SSDT-EC-USBX.aml | 修復了嵌入式控制器和 USB 電源。 |
SSDT-AWAC.aml | 10th以後主板採用最新的 AWAC 設備,而影響 macOS 系統啟動,故需要修護 RTC 設備問題。當 SSDT-AWAC.aml 由於缺少 Legacy RTC 時鐘而不兼容時,另替代方案是SSDT-RTC0.aml。 |
SSDT-RHUB.aml | 需要修復華碩、MSI 主機板上的根設備錯誤。技嘉和華擎主板並不需要。 |
檢查 ACPI 資料夾是否有 SSDT-PLUG.aml、SSDT-EC-USBX.aml、SSDT-AWAC.aml、SSDT-RHUB.aml 等修護文件,你可以從 Docs/AcpiSamples/Binaries 資料夾取得,或者是下載 通用版的修護檔SSDT-Install.aml。
三、Drivers 資料夾:啟動核心文件
OpenCanopy.efi、OpenHfsPlus.efi、OpenRuntime.efi
四、Kexts 資料夾:音效、網卡、顯示等驅動文件
AppleALC.kext、FakePCIID_Intel_HDMI_Audio.kext、FakePCIID.kext、Lilu.kext、LucyRTL8125Ethernet.kext、SMCProcessor.kext、SMCSuperIO.kext、USBInjectAll.kext、VirtualSMC.kext、WhateverGreen.kext、XHCI-unsupported.kext
五、Tools 資料夾:修護工具腳本
CleanNvram.efi、ResetSystem.efi
請確認以上收集主板所必須的文件是否已放入各自的資料夾之後,接下來就開始編輯 canfig.plist 。
貳、編輯 config.plist
下載 python 工具軟體並執行後,先不要關閉視窗,點一下DIsable path length limit,這樣你在編輯時,才不會出錯。
再開啟 plist 編輯器 ProperTree ,點選 ProperTree.bat , 一下從 開啟 EFI/OC/config.plist 文件。如圖:點選 #WARNING 系列資訊反白後,直接按 DEL 刪除。.
加載文件:
把收集好的必須文件,全數加載在 config.plist 文件上。同時刪除原本已內建加載的『資訊』。這個動作可以省去分別加載SSDT文件、Kext 文件、OC 核心文件。
選擇 EFI/OC 資料夾,確認。
ㄧ、ACPI
1-1 Add
確認所有的SSDT 文件都有加載。SSDT-PLUG.aml、SSDT-EC-USBX.aml、SSDT-AWAC.aml、SSDT-RHUB.aml
1-2 Delete:刪除內容。
1-3 Patch:修補 ACPI 的DSDT、SSDT 等文件。這裡暫不動作。
1-4 Quirks:默認值即可。
二、Booter
這是使用 OpenRuntime 文件來修補 boot.efi 相關的問題。
2-1 MimoWhitelist
本節允許設備直通到通常被忽略的 macOS,這裡可以跳過。
2-2 Patch
這裡不做修改。
2-3 Quirks
More in-depth Info
- AvoidRuntimeDefrag: YES
- 修復 UEFI 運行時服務,如日期、時間、NVRAM、電源控制等。
- DevirtualiseMmio: YES
- 減少被盜內存佔用的問題
- EnableSafeModeSlide: YES
- 啟用要在安全模式下使用 slide variables 。
- ProtectUefiServices: YES
- 保護 UEFI 服務不被 Z490 所需的 firmware 覆蓋。
- ProvideCustomSlide: YES
- 用於 Slide 滑動變量計算。啟用這個 Quirks 的必要性,是由 OCABC: Only N/256 slide values are usable!調試日誌中的消息決定的。如果該消息OCABC: All slides are usable! You can disable ProvideCustomSlide!出現在您的日誌中,您可以禁用。
- RebuildAppleMemoryMap: YES
- 生成與 macOS 兼容的內存映射,可能會破壞某些筆記本電腦 OEM 固件,因此如果您收到早期啟動失敗,請禁用此功能。
- SyncRuntimePermissions: YES
- 修復了與 MAT 表的對齊問題,並且需要使用 MAT 表啟動 Windows 和 Linux,也推薦用於 macOS。主要與 RebuildAppleMemoryMap 用戶相關。
三、DeviceProperties
添加音效、網卡、顯卡等設備的路徑和修正值。
3-1 Add
核顯設定:PciRoot(0x0)/Pci(0x2,0x0)
這是通過 WhateverGreen 的 **Framebuffer Patching Guide 設置的,**用來設定 iGPU 屬性。如果您使用帶有-F
系列 CPU,無需設定。
AAPL,ig-platform-id
是 macOS 用來確定 iGPU 驅動程序如何與我們的系統交互的值,有兩個值可供選擇,如下所示:
3-1-1 獨顯設定:
無頭幀緩衝區(其中 dGPU 是顯示輸出)。
07009B3E | 無獨顯專用。 |
00009B3E | 若該值不做用,可用 07009B3E 替代 |
0300C89B | 核顯僅計算不驅動。 |
- Note::在 macOS 10.15.5 和更新版本中,使用 似乎有很多黑屏問題 07009B3E,如果您遇到類似問題,請嘗試切換到 00009B3E
- iMac20,1:使用 i5 以下 CPU 使用 0300C89B
- iMac20,2:使用 i7 以下 CPU 使用 0300C59B
3-1-2 核顯設定:
添加 framebuffer-patch-enable、framebuffer-stolenmem 屬性。第一個啟用通過 WhateverGreen.kext 進行修補,第二個將最小被盜內存設置為 19MB。一般是不需要的,因為在 BIOS 中以設定(推薦 64MB),萬一不起作用時,仍需要加入。
AAPL,ig-platform-id | DATA | 07009B3E |
framebuffer-patch-enable | DATA | 01000000 |
framebuffer-stolenmem | DATA | 00003001 |
3-1-3 網卡設定:PciRoot(0x0)/Pci(0x1C,0x1)/Pci(0x0,0x0)
如果你的主板採用 Intel I225-V 2.5GBe controller 有關,這裡是要欺騙 Apple’s I225LM driver 以便支持主板 I225-V network controller:
device-id | Data | F2150000 |
- **Note:**如果主版沒有 Intel I225 NIC,無需設定。
- Note 2:如果你遇到 AppleIntelI210Ethernet kext 內核恐慌,改用這個設備路徑
PciRoot(0x0)/Pci(0x1C,0x4)/Pci(0x0,0x0)
- 技嘉主板網卡位置 PciRoot(0x0)/Pci(0x1C,0x4)/Pci(0x0,0x0)
3-1-4 音效卡設定:PciRoot(0x0)/Pci(0x1f,0x3)
layout-id 設定為1
亦可在 boot-argalcid=1來完成。
3**-2 Delete**
刪除內容。
四、Kermel
4-1 Add
這是加載 kext 的部分。這裡我們要調整kext 的順序,否則將無法順利啟動或是安裝系統。請依照以下順序調整。
Lilu.kext
VirtualSMC.kext(仿真器)
WhateverGreen.kext(顯卡)
AppleALC.kext(音頻)
LucyRTL8125Ethernet.kext(網卡)
FakePCIID.kext
FakePCIID_Intel_HDMI_Audio.kext
4-2 Block
阻止某些 kexts 加載。無需設定
4-3 Emulate
需要欺騙不受支持的 CPU,幸運的是,在 10.15.5+ Comet Lake S 中添加了支持,因此無需在此處進行欺騙。
4-4 Force
用於從系統卷加載 kext,僅與緩存中不存在某些 kext 的舊操作系統相關(即 10.6 中的 IONetworkingFamily)。對我們來說,可以忽略。
4-5 Patch
Patches both the kernel and kexts.
Fixing I225-V controllers
This entry relates to Intel’s I225-V 2.5GBe controller found on higher end Comet Lake boards, what we’ll be doing here is tricking Apple’s I225LM driver into supporting our I225-V network controller. However, this is only needed on Catalina and Big Sur, up to 11.3.
Base | String | __Z18e1000_set_mac_typeP8e1000_hw |
Comment | String | I225-V patch |
Count | Number | 1 |
Enabled | Boolean | True |
Find | Data | F2150000 |
Identifier | String | com.apple.driver.AppleIntelI210Ethernet |
MinKernel | String | 19.0.0 |
MaxKernel | String | 20.4.0 |
Replace | Data | F3150000 |
- Note 1: If your board didn’t ship with the Intel I225 NIC, there’s no reason to add this entry.
- Note 2: Leave all other keys at their default values
4-6 Quirks
與內核相關的設定。
AppleXcpmCfgLock | Yes | 解除 CFG-Lock |
DisableIoMapper | Yes | 關閉 VT-D |
PanicNoKextDump | Yes | |
PowerTimeoutKernelPanic | Yes | |
XhciPortLimit | Yes | 解除 USB 15端口限制,若是運行 macOS 11.3+ 則禁用 |
4-7 Scheme
與舊版引導相關的設置(即 10.4-10.6),對於大多數人來說,您可以跳過。
五、Misc
這是啟動螢幕的設置。請依照紅線部份啟用。
5-1 Boot
Settings for boot screen (Leave everything as default).
5-2 Debug
5-3 Security
安全設定
AllowNvramReset | Yes | 允許在引導選擇器中和按下時重置 NVRAM |
AllowSetDefault | Yes | 允許CTRL+EnterCTRL+Index 並在系統碟中設置默認引導設備 |
BlacklistAppleUpdate | Yes | |
ScanPolicy | 0 | 安裝用設定值 |
SecureBootModel | Disabled | |
Vault | Optional | 檔案保險庫設定,這裡不啟用。 |
- AllowNvramReset : 是
- 允許在引導選擇器中和按下時重置 NVRAM
Cmd+Opt+P+R
- 允許在引導選擇器中和按下時重置 NVRAM
- AllowSetDefault : 是
- 允許
CTRL+EnterCTRL+Index
並在選擇器中設置默認引導設備
- 允許
- ApECID:0
- 用於收集個性化的安全啟動標識符,目前由於 macOS 安裝程序中的錯誤,此怪癖不可靠,因此我們強烈建議您將其保留為默認值。
- AuthRestart : 否
- 為 FileVault 2 啟用經過身份驗證的重新啟動,因此重新啟動時不需要密碼。可以考慮安全風險所以可選
- BlacklistAppleUpdate : 是
- 用於阻止固件更新,用作額外級別的保護,因為 macOS Big Sur 不再使用
run-efi-updater
變量
- 用於阻止固件更新,用作額外級別的保護,因為 macOS Big Sur 不再使用
- DmgLoading : Signed
- 確保僅加載已簽名的 DMG
- ExposeSensitiveData:
6
- 顯示更多調試信息,需要調試版本的 OpenCore
- Vault:
Optional
- 保險文件酷的設定,這裡不建議使用。一旦啟用可能無法使用此設置啟動安全
- 建議設定
Optional
,注意區分大小寫
- ScanPolicy:
0
- 掃描主機可用的設備。**將此設置為默認值不會啟動 USB 設備,**允許您查看所有可用硬碟和設備。
- SecureBootModel : Disabled
- 在 macOS 中控制 Apple 的安全啟動功能,請參閱**安全部分了解更多詳情。
- 注意:用戶可能會發現在已安裝的系統上升級 OpenCore 會導致過早啟動失敗。
6-4 Tools
加入修護工具。
- CleanNvram.efi 清除NVRAM
- ResetSystem.efi 重新啟動
六、NARAM
這裡是設定有關OC 目錄和解析度、引導參數的的設定。
6-1 Add
6-1-1 4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14
用於 OpenCore 的 UI 縮放,默認對我們有用。
DefaultBackgroundColor:boot.efi 使用的背景顏色
00000000
: Syrah BlackBFBFBF00
: Light Gray
UIScale:
01
: 標準分辨率02
: HiDPI(通常需要 FileVault 在較小的顯示器上正常運行)如4K 螢幕
6-1-2 4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102
OpenCore’s NVRAM GUID, mainly relevant for RTCMemoryFixup users
- rtc-blacklist: <>
- 要與 RTCMemoryFixup 結合使用,請參閱此處了解更多信息:修復 RTC 寫入問題
- 大多數用戶可以忽略此部分
6-1-3 7C436110-AB2A-4BBB-A880-FE41995C9F82
系統完整性保護位掩碼
-v igfxfw=2 igfxonln=1 keepsyms=1 shikigva=80 agdpmod=pikera -lilubetaall
- General Purpose boot-args:
-v | 跑碼畫面,以便除進行除錯 |
debug=0x100 | 進用 macOS’s watchdog ,防止內核崩潰重新啟動。 |
keepsyms=1 | 這是 debug=0x100 的配套設置,它告訴操作系統也在內核崩潰時打印符號。這可以提供一些關於導致恐慌本身的更有用的見解。 |
alcid=1 | AppleALC 設置 layout-id |
- Networking-Specific boot-args:
dk.e1000=0 | 禁用com.apple.DriverKit-AppleEthernetE1000(Apple 的 DEXT 驅動程序)與高端 Comet Lake 板上的 Intel I225-V 以太網控制器匹配,導致加載 Apple 的 I225 kext 驅動程序。 這個引導參數在大多數板上是可選的,因為它們與 DEXT 驅動程序兼容。但是,技嘉和其他幾個板子需要它,只能使用kext驅動程序,因為DEXT驅動程序會導致掛起。 如果您的主板未隨附 I225-V NIC,則您不需要此功能。 |
- GPU-Specific boot-args:
agdpmod=pikera | 用於禁用 Navi GPU(RX 5000 系列)上的板 ID 檢查,否則您將獲得黑屏。如果您沒有 Navi,請不要使用(即 Polaris 和 Vega 卡不應使用此功能) |
-wegnoegpu | 用於禁用除集成 Intel iGPU 之外的所有其他 GPU,對於那些希望運行不支持其 dGPU 的較新版本 macOS 的用戶很有用 |
- csr-active-config:
00000000
- “系統完整性保護”(SIP) 的設置。通常建議csrutil通過恢復分區更改此設置。
- csr-active-config 默認設置為00000000啟用系統完整性保護。您可以選擇許多不同的值,但總體而言,我們建議啟用此選項以獲得最佳安全實踐。更多信息可以在我們的故障排除頁面中找到:禁用 SIP
- run-efi-updater:
No
- 這用於防止 Apple 的固件更新包安裝和破壞啟動順序;這很重要,因為這些固件更新(適用於 Mac)將不起作用。
- prev-lang:kbd: <>
- 設定系統語言,繁體中文 zh-Hant:2
prev-lang:kbd | String | zh-Hant:2 |
6-2 Delete
Info
Forcibly rewrites NVRAM variables, do note that Add
will not overwrite values already present in NVRAM so values like boot-args
should be left alone. For us, we’ll be changing the following:
LegacyEnable | No | 允許將 NVRAM 存儲在 nvram.plist 上,這是沒有本機 NVRAM 的系統所需要的 |
LegacyOverwrite | No | 允許從 nvram.plist 覆蓋固件變量,只有沒有本機 NVRAM 的系統才需要 |
LegacySchema | 用於分配 NVRAM 變量,與 LegacyEnable 設置為 YES 一起使用 | |
WriteFlash | Yes | 允許為所有添加的變量寫入閃存。 |
七、PlatformInfo
這裡是要設定蘋果的機型。
使用 CorpNewt 的**GenSMBIOS**應用,設置 SMBIOS 信息。
Comet Lake 有兩個主要的 SMBIOS:
iMac20,1 | i7-10700K and lower(ie. 8 core and lower) |
iMac20,2 | i9-10850K and higher(ie. 10 core) |
執行 GenSMBIOS 工具,選擇選項 1 下載 MacSerial 和選項 3 選擇 SMBIOS。
這將為我們提供類似於以下內容的輸出:
######################################################
iMac20,2 SMBIOS Info
######################################################
Type: iMac20,2
Serial: C02FRJYK046M
Board Serial: C02121310GU0000JC
SmUUID: 5622BA2B-6508-4673-882D-2E2CBB9B3BE
Apple ROM: DC0C5CB0B420
- Note: MacSerial currently does not support Linux, so you must grab a Windows or macOS machine to generate the values
Type
填入 Generic -> SystemProductName.Serial
填入 Generic -> SystemSerialNumber.Board Serial
填入 Generic -> MLBSmUUID
填入 Generic -> SystemUUID.
注意: Generic -> ROM 設置為 Apple ROM(從真正的 Mac 轉儲),默認值為11223300 0000,安裝後在進入系統裡者出網卡 NIC MAC 地址或任何的 MAC 地址填入即可。
提醒:如何得知生成的序號是否有效?透過查詢查詢蘋果產品保固網頁,就可以知道“序列號無效”或“購買日期未驗證”。
Automatic: YES
- 基於 Generic 部分而不是 DataHub、NVRAM 和 SMBIOS 部分生成 PlatformInfo
八、UEFI
ConnectDrivers: YES
- 強制 .efi 驅動程序,更改為 NO 將自動連接添加的 UEFI 驅動程序。這可以使啟動稍微快一點,但並非所有驅動程序都會自行連接。例如,某些文件系統驅動程序可能無法加載。
8-1 APFS
關於 APFS 驅動程序加載器設置,我們將更改以下內容:
MinDate | -1 | Catalina 以下的系統使用 |
MinVersion | -1 | Catalina 以下的系統使用 |
8-2 AppleInput
無需更動
8-3 Audio
啟用開機聲、音頻設備指定路徑、音量大小。助理不設定。
8-4 Drivers
加載啟動核心文件。裏面至少有:
- OpenRuntime.efi
- OpenHfsPlus.efi
- OpenCanopy.efi
- AudioDxe.efi
請依照順序排列。否則開機會有問題。
8-4 Input
無需更動
8-5 Output
無需更動
8-6 ProtocolOverrides
無需更動
8-7 Quirks
這里只要注意你的CFG 是否有解鎖。
IgnorelnvalidFlexRatio. CFG 未解鎖『Yes』
8-8 ReservedMemory
無需更動,最後完工存檔。
參、製作安裝碟
開啟 gibMacOS/MakeInstall.bat windows批次檔
選擇 USB 安裝碟 編號 :2
格式化 GPT 格式 :G
再輸入端填入:2G
Please select a disk or press [enter] with no options to refresh:2G
終端機會自動把 USB 隨身碟格式化,等待下一步安裝映像檔的動作。如下圖,選擇 y
下圖則是告訴你貼上恢復鏡像檔的路徑。
下載 macOS 恢復鏡像檔:
開啟 gibMacOS/gibMacOS.bat windows批次檔,如下圖
再輸入端鍵入:R
R. Toggle Recovery-Only (Currently Off)
這裡看到的都是升級檔和鏡像檔,這裡我們就選擇 11. macOS Catalina 10.15.7 (19h15)
輸入端鍵入:11
這個時候終端就開始下載約 500MB 的 macOS 恢復鏡像檔,同時也出現路徑:
C:\Users\SKY\Desktop\gibMacOS-master\macOS Downloads\publicrelease\001-68446 – 10.15.7 macOS Catalina
我們把該路徑完整的複製起來,
終端機開始複製檔案到 USB 隨身碟
複製完後,出現以下畫面,代表已經成功了。
肆、BIOS 設定
BIOS是什麼?
BIOS是個程序,存儲在主機板的BIOS晶片中。BIOS用於計算機硬體自檢、CMOS設置、引導作業系統啟動、提供硬件I/O、硬體中斷等4項主要功能,因此BIOS程序主要有Boot Block引導模塊、CMOS設置模塊、擴展配置數據(ESCD)模塊、DMI收集硬件數據模塊,其中引導模塊直接負責執行BIOS程序本身入口、計算機基本硬件的檢測和初始化,ESCD用於BIOS與OS交換硬件配置數據,DMI則充當了硬件管理工具和系統層之間接口的角色,通過DMI,用戶可以直觀地獲得硬件的任何信息,CMOS設置模塊就是實現對硬件信息進行設置,並保存在CMOS中,是除了啟動初始化以外BIOS程序最常用的功能。
當按下電源開關時,電源就開始向主板和其他設備供電,由主板北橋向CPU發復位信號,對CPU初始化;穩定電壓後復位信號便停止。當電壓穩定後,CPU便在系統BIOS保留的內存地址處執行跳轉BIOS起始處指令,開始執行POST自檢。
在POST自檢中,BIOS只檢查系統的必要核心硬體是否有問題,主要是CPU、640K基本內存、顯卡是否正常,PS/2鍵盤控制器、系統時鐘是否有錯誤等等。由於POST檢查在顯卡初始化以前,因此在這個階段如發生錯誤,是無法在屏幕上顯示的,不過主板上還有個報警揚聲器,而且如果主板的8255外圍可編程接口晶片沒有損壞的話,POST報警聲音一定是會出來的。可以根據報警聲的不同大致判斷錯誤所在,一般情況下,一聲短「嘀」聲基本代表正常啟動,不同的錯誤則是不同的短「嘀」聲和長「嘀」聲組合。POST自檢結束後,BIOS開始調用中斷完成各種硬件初始化工作。
EFI是什麼?
是Extensible Firmware Interface的詞頭縮寫,由Intel 所創,直譯過來就是『可擴展固件接口』,它是用模塊化、高級語言(主要是C語言)構建的一個小型化系統,它和BIOS一樣,主要在啟動過程中完成硬件初始化,但它是直接利用加載EFI驅動的方式,識別系統硬體並完成硬體初始化,徹底摒棄讀各種中斷執行。EFI完全是32位或64位,在EFI中就可以實現處理器的最大尋址,因此可以在任何內存地址存放任何信息。
UEFI是什麼?
在新的主機板看到花花綠綠酷炫的圖形化介面,以及可以用滑鼠鍵盤操作的”BIOS”畫面,就是UEFI介面。(但是也有類似BIOS文字介面的UEFI哦!)即使你的PC使用術語“BIOS”,你今天購買的新型電腦或主機板肯定會附帶UEFI韌體而不是BIOS。而UEFI對於一般使用者來說最顯著的就是開機速度明顯提升!
當EFI發展到1.1的時候,英特爾決定把EFI交給了Unified EFI Form的國際組織,後續也稱為UEFI,UEFI,其中的EFI和原來是一個意思,U則是Unified(一元化、統一)的縮寫,所以UEFI的意思就是「統一的可擴展固件接口」,與前身EFI相比,UEFI主要有以下改進:
首先,UEFI具有完整的圖形驅動功能,完整的圖形驅動,無論是PS/2還是USB鍵盤和鼠標,UEFI一律是支持的。
安全啟動:
安全啟動(Secure Boot),實際上通俗的解釋是叫做韌體驗證。開啟UEFI的安全啟動後,主板會根據TPM晶片(或者CPU內置的TPM)記錄的硬體簽名對各硬體判斷,只有符合認證的硬體驅動才會被加載,而Win8以後的作業系統加載的過程中對硬體驅動繼續查簽名,凡符合Windows記錄的硬體才能被Windows加載,據說這是防止駭客入侵所設下的機制,相對地也會造成系統安裝變得壟斷。最後這項也有選擇項,讓用戶是否開啟或是關閉。
GPT 是什麼?
伴隨著EFI,一種全新的GUID磁盤分區系統(GPT)被引入支持,傳統MBR磁盤只能存在4個主分區,只有在創建主分區不足4個時,可以建立一個擴展分區,再在其上建立被系統識別的邏輯分區,邏輯分區也是有數量的,太多的邏輯分區會嚴重影響系統啟動,MBR硬盤分區最大僅支持2T容量,對於現在的大容量硬盤來說也是浪費。GPT支持任意多的分區,每個分區大小原則上是無限制的,但實際上受到OS的規定限制不能做到無限,不過比MBR的2T限制是非常重要的進步。GPT的分區類型由GUID表唯一指定,基本不可能出現重複,其中的EFI系統分區可以被EFI存取,用來存取部分驅動和應用程式,雖然這原則上會使EFI系統分區變得不安全,但是一般這裏放置的都是些「邊緣」數據,即使其被破壞,一般也不會造成嚴重後果,而且也能夠簡單的恢復回來。
CSM是什麼?
CSM: Compatibility Support Module相容性支援模組,主機板改進到UEFI之後,那沒有支援UEFI的顯示卡,硬碟等等硬體怎麼辦呢?這時就需要CSM的出現,他是在UEFI淘汰掉BIOS中的過度功能,模擬傳統BIOS。也就是說在UEFI架構下,透過CSM模擬BIOS來相容只支援BIOS開機的裝置。也稱為Legacy模式、LegacyMode、Legacy BIOS。所以如果要安裝純UEFI也就是將CSM給關閉(Disable)。
BIOS與UEFI 之間的差異
無論EFI還是UEFI,都必須要有預加載環境、驅動執行環境、驅動程序等必要部分組成,為了支持部分舊設備(如在UEFI下掛載傳統MBR硬碟,不支持UEFI啟動的顯卡在UEFI下仍然支持運行等),新增了一個CSM兼容性支持模塊。而EFI或UEFI都是僅支持GPT磁盤引導系統的。蘋果就是採用這樣的硬碟格式。
BIOS先要對CPU初始化,然後跳轉到BIOS啟動處進行POST自檢,若過程如有嚴重錯誤,則電腦會用不同的報警聲音提醒,接下來採用讀中斷的方式加載各種硬體,完成硬件初始化後進入作業系統啟動過程。而UEFI則是運行預加載環境先直接初始化CPU和內存,其後啟動PXE採用枚舉方式搜索各種硬件並加載驅動,完成硬體初始化,之後同樣進入作業系統啟動過程。
一、ACPI是什麼?ACPI其實是一種電源管理標準,ACPI是Advanced Configuration and Power Interface的首字母縮寫,一般翻譯成高階電源管理,是Intel、Microsoft和東芝共同開發的一種電源管理標準。
ACPI是什麼?
ACPI (Advanced Configuration and Power Interface),故名思義是對硬體的電源管理和設定的介面。它是由Intel、Microsoft、Phoenix、Toshiba等不同領域的製造商所訂定,它的目的就是讓OS可以對hardware做以上的動作。它的架構主要都在BIOS階段會建立起來,所以我們必須熟悉這本ACPI spec, 目前最新的版本是6.3。
ACPI既不是軟體的spec,也不是硬體的spec,它包括了軟體和硬體的元素,目的上面也說過,它是讓OS可以對Hardware做電源管理和設定的介面。如圖紅色部分就是ACPI的範圍:
ACPI可以做的事情很多,大致可分為十大類:
System power management: 整個系統的電源管理:
ACPI定義了許多Sleep狀態,如S1、S3、S4、S5等,可以在Sleep狀態被Device喚醒,Sleep狀態數字愈高表示睡得越深、耗的電量越少,需要被喚醒的時間也越長。
Device power management: 週邊裝置的電源管理:
ACPI定義D0、D1、D2、D3…,數字越大表示耗電量越少,D0表示週邊裝置運作中。ACPI Table也定義了週邊裝置的相關電源控制,可以在OS端透過AP將週邊裝置設定較省電的模式。
Processor power management: 處理器的電源管理:
ACPI定義了當CPU不在Sleep狀態時且閒置時,可以進入low power 狀態,也就是C State,數字越大表示越省電,C0表示運作中。
Device and processor performance management:週邊裝置和處理器的效能管理:
ACPI定義為當CPU和設備在動作的時候(C0或D0),做改變效能的動作,這裡指的是P State,它的狀態改變會影響運作的效能,通常是降頻來動作,也可以達到省電的功能。
介紹完四個功能,發現了許多狀態,這是屬於Power State的部份,下面以G State圖表示可以看得更清楚。G0表示系統在工作中,G1為Sleeping, G2為soft off (S5), G3為Mech off(電源斷開).
Configuration / Plug and Play: 組態和隨插即用:
ACPI提供了介面讓OSPM可以把資源在插入和移除之間做組態。這些組態將定義在DSDT和SSDT中,它將有一個ID來代表它的Device.
System Event: 糸統事件:
ACPI定義了通用的事件模組,如Plug and Ply、Power management、Thermal 等。當系統事件發生時,core logic會設定一個bit在Status Register中來表示事件發生,如果對應的Bit在enable register 被設定,那麼會發出SCI來告訴OS. 當OS 收到SCI事件時,它會去找該事件所對應的control method. 這些control method會以AML的方式告訴OS做什麼事,我們則要用ASL來撰寫它。
Battery management: 電池管理:
支援ACPI的電池裝置它是透過OS且以EC來控制,或者由電池的control method來控制。這邊的control method也是由ASL來實作它。
Thermal management: 熱的管理:
對於Device的熱管理也是在ACPI定義的範圍,它提供了簡單的、可調整的模組來給OEM定義其Thermal zone、Thermal indicator和method for cooling thermal zones.
Embedded Controller: ACPI:
定義了標凖的硬體的和軟體的溝通介面給OS bus enumerator和EC之間來做溝通,也就是說可以由Driver來存取EC的資源,讓OEM可以提供platform features給OS的AP使用。
SMBus Controller: ACPI:
定義了標凖的硬體的和軟體的溝通介面給OS bus enumerator和SMBus Controller之間來做溝通,也就是說可以由Driver來存取SMBus device的資源,讓OEM可以提供platform features給OS的AP使用。
在計算機應用平台,ACPI 越來越重要。ACPI由很多表組成,包括:RSDP,SDTH,RSDT,FADT,FACS,其中DSDT 包含了所有和基本系統(basesystem)不同的設備的信息,basesystem 每台機器都是一樣的,這個是在acpispec 裡指定的,但是每台機器都是不相同的,所以不相同的設備大都是由DSDT 表來描述。它包含了很多AML代碼。大多數BIOS 是針對windows 開發的,而windows 自己也不完全遵循acpi 規範,所以因為BIOS 的bug,這些代碼本身可能有錯,導致其他的系統,如linux,mac os 出錯。
Mac OS X不完整支持ACPI規範,僅支持它的子集DSDT,對於非蘋果電腦,要使用上盡可能完美的OS X系統,可以說修改DSDT是最有效的方法。
DSDT 是The Differentiated System Description Table 的簡寫。字面上就可以知道它是一個ACPI描述系統不同信息的表。它包含了所有除基本系統以外所有不同設備的信息,也就是 DSDT 表代碼為ACPI Machine Language (AML)。用戶通過修改DSDT可以得到更好的硬件支持,最簡單的理解就是DSDT是描述硬件的。修改DSDT 的主要目的就是讓mac系統識別存在這個硬件並告訴mac 系統你的硬件位置,以便讓mac 系統內置的驅動來驅動硬體工作。這裡往後再來詳述吧!
五、結論:
所以主機板使用UEFI不僅可以擴展更多硬體設備達到最佳化,不僅開機速度快,同時也減少了開機等待的時間。打從蘋果採用Intel CPU x86 架構以後,對自家的硬體也是採用這樣UEFI的規格。
以上的簡易說明,大家可以明白蘋果在自家的電腦應上,採用何種規格與技術,那麼接下來UEFI SET 就非常的簡單多了,只要模擬蘋果電腦所需要的環境,那麼安裝黑蘋果就不是一件困難的事情了。以下的設置是根據主機板UEFI 選項來設定,這也可以套用其他不同品牌的主板來設定唷。
Disable
- Fast Boot
- Secure Boot
- Serial/COM Port
- Parallel Port
- VT-d (can be enabled if you set
DisableIoMapper
to YES) - CSM
- Thunderbolt(For initial install, as Thunderbolt can cause issues if not setup correctly)
- Intel SGX
- Intel Platform Trust
- CFG Lock (MSR 0xE2 write protection)(This must be off, if you can’t find the option then enable
AppleXcpmCfgLock
under Kernel -> Quirks. Your hack will not boot with CFG-Lock enabled)
Enable
- VT-x
- Above 4G decoding
- 2020+ BIOS Notes: When enabling Above4G, Resizable BAR Support may become an available on some Z490 and newer motherboards. Please ensure this is Disabled instead of set to Auto.
- Hyper-Threading
- Execute Disable Bit
- EHCI/XHCI Hand-off
- OS type: Windows 8.1/10 UEFI Mode
- DVMT Pre-Allocated(iGPU Memory): 64MB
- SATA Mode: AHC
et BIOS settings as follows (what worked for me):
CFG-Lock: Disabled
Super IO Serial Port: Disabled
VT-d: Disabled
CSM Support: Enabled
XHCI Hand-Off: Enabled
Legacy USB Support: Disabled
Network Stack: Disabled
XMP: Profile 1: Enabled
UEFI Booting: Enabled
Secure Boot: Disabled
Fast Boot: Disabled
OS Type: Other
Platform Power Management: Enabled
AC BACK: Always On
Power On By Keyboard: Disabled
Power On By Mouse: Disabled
ErP: Disabled
Initial Display Output: IGFX
Internal Graphics: Enabled
DVMT Pre-Allocated: 64M
DVMT Total Gfx Mem: MAX
IO APIC 24-119 Entries: Enabled
Security Device Support: Disabled
Intel Platform Trust Technology (PTT): Disabled
5) Save and Exit