概述本文最后更新:2021/6/13 隨著 OpenCore 逐漸進(jìn)入穩(wěn)定更新周期(大約每月一個(gè)新版本),很多從各處拿到 EFI 文件并成功安裝了黑蘋果的精神小伙們開始發(fā)愁一個(gè)問題,,就是怎么樣升級引導(dǎo)工具。 升級這個(gè)操作其實(shí)挺簡單,,但難倒了一片小白同學(xué),。全部操作就是替換新版文件和修改 config。替換新版文件比較簡單,,麻煩的是修改 config 文件,。其實(shí)無論是 OpenCore 或 Clover,其核心設(shè)置都是儲存在 config.plist 這個(gè)文件中的,。筆者在過往的文章里提到過,,config.plist 并沒有多神秘,其本質(zhì)上其實(shí)是一個(gè) XML 文件,,任意一個(gè)專業(yè)的代碼編輯器都可以操作它,。它擁有 XML 的所有基本特征,內(nèi)容上主要就是使用標(biāo)簽的樹狀結(jié)構(gòu),,XML 基礎(chǔ)知識可以參閱這個(gè)網(wǎng)站,,只需了解一點(diǎn)基礎(chǔ)即可。 config.plist 在 OpenCore 和 Clover 中主要作用是儲存各項(xiàng)設(shè)置的內(nèi)容,,當(dāng) OpenCore 和 Clover 升級時(shí),,其開發(fā)團(tuán)隊(duì)會通過修改 config.plist 的文件結(jié)構(gòu),增減功能區(qū)或?qū)?yīng)的選項(xiàng),,以支持新版本擴(kuò)展出來的功能,。也正因?yàn)槿绱耍?dāng)你替換了引導(dǎo)工具主文件而沒有升級 config.plist 后,,常會見到類似下面的錯(cuò)誤:
當(dāng)理解了 config.plist 文件后,,再來看這個(gè)錯(cuò)誤,其原因就非常容易理解:新版本引導(dǎo)工具擁有新的功能,,但是沒有在 config.plist 找到新功能對應(yīng)的設(shè)置,。本文接下來將介紹幾種比較“穩(wěn)”方法進(jìn)行升級操作,分別適合新手和有一定代碼基礎(chǔ)的老手,。
「特別提示」OpenCore 部分版本升級后依然提示沒有升級,一般常見于 0.6.5,、0.6.6,、0.6.7 這三個(gè)版本,需要通過在引導(dǎo)界面重置 NVRAM 解決,,如果你的引導(dǎo)界面沒有 ResetNVRAM 的選項(xiàng),,打開以下設(shè)置:
掛載 EFI 分區(qū)如果你已經(jīng)進(jìn)入 macOS,可以使用 Clover/OpenCore Configurator 一樣的掛載 EFI 分區(qū)步驟,,OpenCore Configurator: 下圖是 Clover Configurator: 如果你不愿意使用配置工具,,可在終端使用下面的命令: 每次執(zhí)行一個(gè)命令,其中 disk1s1 需要根據(jù)你實(shí)際情況填寫,,一般情況下,,當(dāng)前系統(tǒng)的 EFI 分區(qū)是 disk1s1。 如果你還在 Windows,,打開 EFI 文件夾,,找到 config.plist,使用代碼編輯工具打開即可,;如果你的 EFI 文件在 U 盤里,,可使用 Diskgenuis 等軟件將 EFI 文件夾拷貝到桌面,修改后再拷貝回原來的位置(沒有配圖,,實(shí)在不明白請自行百度一下),。
方案一:復(fù)刻法復(fù)刻法具體來說,需要根據(jù)你準(zhǔn)備使用的工具來劃分,,一種是圖形化配置工具,,例如 OpenCore Configurator;另一種是傳統(tǒng)的 Plist 編輯工具,,例如 ProperTree。當(dāng)每個(gè)新版本 OpenCore 和 Clover 發(fā)布時(shí),,開發(fā)團(tuán)隊(duì)一般都會提供一個(gè) Sample.plist,,OpenCore 一般位于 /doc/ 文件夾內(nèi);Clover 一般位于 /EFI/Clover/,,這個(gè)文件就是我們 EFI 文件夾內(nèi)的 config.plist 的原型,,把它拷貝到你的 efi 文件夾中即可進(jìn)行修改操作,下面將分別進(jìn)行操作演示,。
OpenCore/Clover Configurator對應(yīng) OpenCore 的配置工具簡稱 OCC,,對應(yīng) Clover 的配置工具簡稱 CC,是一個(gè)讓人又愛又恨的東西。用它吧,,新版出來的時(shí)候經(jīng)常掉鏈子它自己的 bug 就能給你搗不少亂,;不用吧,一鍵生成各類設(shè)置確實(shí)相當(dāng)方便,,就便利性而言確實(shí)秒殺其它現(xiàn)有工具,。是否使用,各位見仁見智,,只強(qiáng)調(diào)一點(diǎn),,修改 config.plist 前務(wù)必注意備份!
方法一,,直接使用支持新版的 Configurator 保存一遍舊版 config.plist,。是的就是這么簡單,就是使用支持新版本的配置器,,打開你的舊版 config.plist,,直接保存退出即可。如果使用代碼工具打開保存后的文件,,你會發(fā)現(xiàn)其結(jié)構(gòu)已經(jīng)幾乎和新版無異,。如何確認(rèn)配置工具支持的版本?比如這里: 或者配置在“關(guān)于”菜單中也會提到支持的版本,。這是筆者在星球交流群內(nèi)注意到有小伙伴提出來的方法,,簡單暴力,但是筆者經(jīng)實(shí)測,,并不能 100% 解決所有問題,,但在版本跨度較小的情況下可以,例如筆者測試過 OpenCore 0.6.1 升級到 0.6.2 使用此方法基本沒有問題,。但是版本跨度比較大的時(shí)候,,比如 OpenCore 0.5.5 升級到 0.6.2,此方法就非常容易出問題了,,版本跨度太大建議使用其他方法操作,。
方法二,分別打開新版和舊版的配置文件,,手動對照復(fù)刻選項(xiàng),,如下圖: 如圖,把每一個(gè)區(qū)域的選項(xiàng)和掛載的文件以及對應(yīng)的設(shè)置內(nèi)容逐一復(fù)制到新的文件里,,注意不要遺漏任何選項(xiàng),。 Clover 也是一樣的操作,需要注意的是 Clover r5120 以上版本集成了 OcQuirks,,r5125 及以上進(jìn)一步擴(kuò)展了其對應(yīng)的選項(xiàng),,r5120 以下版本到以上會是一個(gè)比較大的改動,,這里簡單梳理一下(OpenCore 用戶可以不用看這個(gè)部分):
ProperTree/PlistEdit Pro此類工具是 Plist 的專用編輯工具,,好處是不容易出現(xiàn)編輯導(dǎo)致的錯(cuò)誤,,劣勢嘛也很明顯,不如上面的配置工具來的方便,。 具體操作流程來說,,一共有兩個(gè)步驟,第一是批量復(fù)制 add 區(qū)域的內(nèi)容,,例如 acpi 下的各個(gè) ssdt 文件,,以及 Kernel 下的各個(gè) Kext,如圖: 上圖中,,紅色代表需要刪除,,藍(lán)色代表可以批量復(fù)制粘貼,綠色是一般機(jī)型用不到的,,但是如果你的舊版 config.plist 里有就必須復(fù)制過去,;其余未提及的部分請逐個(gè)檢查 + 復(fù)刻值(例如 Quirks 部分)。至于如何批量復(fù)制粘貼,?見下圖: 以 ACPI 區(qū)域下的 SSDT 表為例,,打開新版文件,找到 ACPI → Add,,右鍵刪除(Remove)整個(gè) Add 區(qū),。 打開舊版文件,找到 ACPI → Add,,右鍵復(fù)制(Copy)整個(gè) Add 區(qū),。 在新版文件中,找到 ACPI(因?yàn)檫@是之前 Add 區(qū)的父節(jié)點(diǎn)),,選中,右鍵并粘貼(Paste)整個(gè) Add 區(qū),。 最后可以拖動最右側(cè)滑塊調(diào)整區(qū)域順序,。 其二,就其它設(shè)置方面,例如 Kernel → Quirks,,照著你的舊版的文件抄設(shè)置即可,。注意 Kernel 這個(gè)部分其實(shí)是最近幾個(gè)版本變化比較多的地方,例如 0.6.1 升級到 0.6.2 就把 DummyPowerManagement 挪到了別的地方,,這種情況,,如果你用不到這個(gè) Quirk 還好,需要用的話,,那就需要去看官方的說明文檔啦,。
方案二:對照法此方法適合有一定代碼基礎(chǔ)的小伙伴,手法熟練的話效率非常高,,但完全沒有任何代碼基礎(chǔ)和悟性的新手請勿輕易嘗試,,很容易弄壞你的 config.plist,請務(wù)必做好備份,。 這里需要用到一個(gè)代碼對比工具:Beyond Compare,。這是一個(gè)跨平臺對比工具,可以對比多種文件/文件夾,,有 Windows/macOS/Linux 版本,。很容易找到下載地址,這里就不貼了,。 當(dāng)前內(nèi)容被隱藏,,登陸后查看 已有35674次閱讀 首先運(yùn)行 BeyondCompare,這里有兩種思路,,其一是新版 sample.plist 和舊版的 sample.plist 進(jìn)行對比,,因?yàn)槿绻?sample.plist 和 config.plist 對比,不一樣的地方會特別多,,不熟悉代碼的人很容易弄錯(cuò),;其二是 sample.plist 直接和 config.plist 進(jìn)行對比,因?yàn)榭梢灾苯釉诓町惪梢暬那闆r下進(jìn)行修改替換內(nèi)容,。
Sample.plist 對照那么先說說第一種思路的實(shí)踐方式,,首先打開兩個(gè)版本的 sample.plist,可以清晰的看到兩個(gè)版本不同的地方: 接下來打開 Visual Studio Code,,這是一款微軟推出的跨平臺代碼編輯工具,,非常好用。使用 VScode 打開你舊版本的 config.plist,,定位到差異位置,,根據(jù)新版本結(jié)構(gòu)進(jìn)行修改。 如下圖,,這一處就修改完成了,。 其它部分根據(jù)比對結(jié)果修改你的 config.plist,,完成后保存即可。 上圖中部分,,注意 Quirks 后面都有一個(gè)對應(yīng)的布爾值<false/>或<true/>,,在增減的過程中不要遺漏,否則會導(dǎo)致 OpenCore 無法正確讀取 config 文件,。 若根據(jù)此方法修改,,最終你使用的還是原來的 Config.plist 文件。
Config.plist 對照第二種方法是直接在對照工具中進(jìn)行修改,。此方法需要有一定的代碼基礎(chǔ),,需要能自行判斷代碼結(jié)構(gòu)。 修改完所有差異部分后,,保存文件即可,。這個(gè)方式雖然看起來繁瑣,但實(shí)際上沒有多少地方是需要修改的,,懂的自然懂,,能確定的是此方法不適合沒有任何代碼基礎(chǔ)的新手,具體過程這里不再贅述,。
替換引導(dǎo)工具文件上一步完成配置文件的修改后,,把原來的 Config.plist 刪除,新版文件修改為 Config.plist,,這樣配置文件就完成了,。最后一步是替換新版文件。
OpenCoreOpenCore 的關(guān)鍵文件如下圖所示,,使用新版本替換即可:
「再次提示」OpenCore 部分版本升級后依然提示沒有升級,,一般常見于 0.6.5、0.6.6,、0.6.7 這三個(gè)版本,,需要通過在引導(dǎo)界面重置 NVRAM 解決,如果你的引導(dǎo)界面沒有 ResetNVRAM 的選項(xiàng),,打開以下設(shè)置:
CloverClover 目前的情況較為復(fù)雜(因?yàn)樾掳姹救诤狭?OpenCore 核心),,總的來說,,基本上 r5119 及以下的版本,替換以下文件(以 UEFI 版為例):
Clover r5120 — r5122 版本需要刪除以下文件(以 UEFI 為例):
添加以下文件:
Clover r5123 及以上:
最終檢查最后,,請依次檢查一遍所做的配置和替換的文件,也可通過下面這個(gè)網(wǎng)站驗(yàn)證 config.plist 文件配置正確性,。
如果你足夠幸運(yùn),那么上面這些都做完以后,,你就可以愉快地使用新版本引導(dǎo)工具正常進(jìn)入 macOS,。但對于跑代碼過程中的小伙伴,可以先恢復(fù)備份,,或參考這篇文章:OpenCore 安裝卡住的拯救手冊Q&A,。
|
|