為什麼要解鎖CFG lock (MSR 0xe2)
MSR 0xE2。MSR正確名稱為Model Specific Register,特定模塊寄存器,屬於非標準寄存器,是用來控制CPU的工作環境和讀取工作狀態,例如電壓、溫度、功耗等非程序性能指標。然而macOS的電源管理中CPU的C-state (睡眠) 和 P-state (頻率) 就是放在MSR寄存器裡的。市面上大多數有UEFI主機板廠商,默認鎖定了MSR寄存器,也就是MSR 0xE2 Locking(BIOS中叫CFG Lock)。
假設MSR 0xE2被認鎖定為只能讀取時,當AppleIntelCPUPowernamegement一旦去寫入數據,馬上就核心崩潰。有些主機板上BIOS有選項“CFG Lock”,其說明內容為”關閉或開啟MSR 0xE2″,可以手動開關。當你需要使用黑蘋果時,則必須解鎖MSR 0xE2,否則無法使用蘋果原生電源管理。萬一沒得解就得改用 nullpowermanagement.kext 來關閉這個功能。
如何確認主機板CFG Lock上鎖
使用Hackintools,選擇工具選項,點擊最左邊Intel的圖示,輸入密碼,視窗內出現了大量數據。接下來往下找MSR_PMG_CST_CONFIG_CONTROL……..(0xE2) : 0x7E000008項目中的第二項: CFG Lock……………………….. : 0 (MSR not locked) 這是已解鎖的狀態。反之亦然。
備份目前的引導程式
當你尚未解鎖CFG-Lock動作之前,務必先把原來系統碟的引導程序做好備份,為什麼呢?一旦你做好了CFG-Lock程序之後,引導程序和系統本身將會『重新編譯』改變體質。無論是使用OC引導或是CLOVER 引導結果都是一樣。萬一某天系統掛了,或是需要重灌系統時,有被執行過CFG=Lock 的引導程序,將會無法使用,這一點請注意。
準備工作
在開始運作以下動作之前,請先檢查你的主機板BIOS之相關設定。
- BIOS中解锁CFG(如果主機板有這個選項)
- BIOS中CSM disabled
- BIOS中EHCI/XHCI Hand-off enabled
- BIOS中Above 4G Decoding enabled
- BIOS中VT-d disabled
- 構建Z300系列主機板黑蘋果主機的使用者要留意,因Z300主機版不支援macOS NVRAM的問題,導致過去我們熱衷於使用修護記憶體AptioMemoryFix插件,在這Z390主機板恐怕無法使用的情況之下,得添加這個添加OsxAptioFix2Drv-free2000.efi啟動插件,方可順利安裝或者是啟動macOS 系統。請確認你的EFI引導程序裡面位於/EFI/CLOVER/drivers/UEFI/ 移除AptioMemoryFix-64.efi,並添加OsxAptioFix2Drv-free2000.efi。
- 在config.plist 引導文件當中,boot argument 添加slide=xxx。如何計算出slide值,請參考這裡。針對不支援NVRAM 主板使用者。CFG解鎖請可跳過這一步。
EFI引導程序整個先備份起來,你可以製作U盤開機碟。該EFi擋作為開機救援之用(尚未CFG Lock解鎖)。
開啟config.plist 左邊菜單 Kemel and Kext Patches ,把kernelPM以及AppleIntelCPUPM
二項勾選起來。
grub-mod-setup_var:下載modGRUBShell.efi這個修改過GRUB sdell檔案。
UEFITool:請下載UEFITool版本。UEFITool_NE_A56_mac.zip Mac版本。
UniversalIFR-Extractor:請下載ifrextract_v0.3.6.osx.zip。BIOS的訊息轉化成文字的工具軟體
BIOS:根據你的主機板所使用的BIOS安裝檔,從官網下載。以我的主機板BIOS為Z390AOPW.F12
sublime text:文字編輯工具。
EFITool
尋找CFG Lock的數值有兩種方法:
ㄧ、打開Terminal(终端機)輸入以下執行命令。
cd ~/Desktop/CFG
./UEFITool.app/Contents/MacOS/UEFITool /Users/電腦名稱/Desktop/CFG/Z390AOPW.F12
二、另一方式。開啟UEFITool.app,把Z390AOPW.F12韌體檔直接拖拉放到UEFITool.app執行。
輸入執行命令之後,在UEFITool.app的介面,按下快捷鍵Command+F,點擊Text項目,鍵入『CFG Lock』執行。在最下方會出現這個資訊。
Unicode text “CFG Lock” found in PE32 image section at header-offset 8B2FCh
直接點擊該信息二次,軟體會自動定位到含有CFG Lock信息的模塊。
PE32 image section。 這個時候,選擇該信息,按下滑鼠右鍵,選擇extract body。
把該文件存檔到桌面的CFG文件夾,名稱默認為Section_PE32_image_Setup_Setup_body.efi,因為檔名太長了,我們可以簡化為『PE32.efi』或是其他簡易的名稱就可以了。
ifrextract
打開終端機,輸入以下指令,我們要把PE32Section.efi轉換成文字擋。
cd ~/Desktop/CFG
./ifrextract PE32.efi PE32.txt
sublime text
使用sublime text app,開啟剛剛轉換的PE32.txt 文件檔。同樣地使用快捷鍵Command+F 搜尋『CFG Lock』。 整理了該信息數據: VarStorCFG LockeInfo (VarOffset/VarName): 0x5C1, VarStore: 0x1, One Of Option: Disabled, Value (8 bit) One Of Option: Enabled, Value (8 bit) 軟體會定位到這裡,VarStorCFG LockeInfo (VarOffset/VarName): 0x5C1,0x5C1就是我們要找的偏移量。VarStore: 0x1意思指的是鎖住,若是想要解鎖它,就需要把該選擇修改成0x0的Disabled,也就是要把0x5C1這個地址的数值修改为0x0。
modGRUBShell.efi
下載好modGRUBShell.efi, 重新命名為 bootx64.efi,再請大家拿出我教給CFG大家使用多功能引導工具碟。插入電腦後,桌面出現WEPC的磁碟,在U盤内的資料可以暫時放入一個資料夾,另創建一個EFI文件夾,同時在此文件夾中,另建文件夾為BOOT,並將bootx64.efi放入BOOT裡面。
如果你沒有我所製作多引導工具碟,也可以自行製作,把U盘插入電腦,用磁碟工具把U盤格式化為fat32格式,命名為EFI,就可以了。
電腦透過U盤重啟,將會啟動grub模式,執行setup_var命令。先来解鎖MSR 0xE2,輸入
setup_var_3 0x5C1
該命令是查詢0x5C1這個地址(偏移量)的数值,0x5C1是我们在上面一步中查找到的CFG-Lock選項的地址,從下圖中我們可以看到該0x5C1地址数值為0x01,即對應Enabled。
输入 setup_var_3 0x5C1 0x00 該命令是修改0x5C1這個地址的数值为0x00,也就是把CFG-Lock這個選項设置為Disabled。執行完畢後,再輸入EXIT 離開。
備註:某些主板可能使用 setup_var 這樣的命令。其作法大致相同。
回到系統,用Hackintool 工具來查看。
最後工作
把CLOVER EFI 的config.plist引導文件,取消下列設定。
Kemel and Kext Patches ,把kernelPM以及AppleIntelCPUPM
這樣就完工了!
如果你是OC引導使用者,請到這裡。