OpenCore 0.7.2 中的 SecureBootModel 簡易說明

注意:強烈建議閱讀 Dortania指南,其中詳細解釋了此過程。這篇文章基於我個人經驗旁邊的本指南。我也對 BIOS 安全啟動和 OpenCore 安全啟動之間的關係感興趣。

OpenCore SecureBootModel

Apple Secure Boot 是 Mac 中用於在啟動時驗證操作系統完整性的技術:啟動加載程序 > 內核 > 系統卷快照。如果此檢查失敗,macOS 將無法啟動。Apple Secure Boot 僅在啟動過程中起作用,一旦 macOS 運行,它就不再執行任何功能。

Apple 定義了 3 種安全啟動模式:

  • 完全安全:僅允許啟動已安裝的操作系統或 Apple 當前信任的其他簽名版本的 macOS。它還檢查已安裝版本的完整性。如果檢查失敗,系統會提供重新安裝 macOS 或從其他磁盤啟動。
  • 中等安全性:檢查已安裝的 macOS 版本是否合法,但不檢查系統的完整性。讓您啟動 Apple 曾經信任的任何簽名版本的 macOS。
  • 無安全性:允許與安全選項中提及的不同的其他系統或版本。對引導操作系統沒有要求。

OpenCore 有一個 SecureBootModel 密鑰,可以調整 Apple 安全啟動模式,使其類似於 Mac。此密鑰在 OpenCore 版本 0.7.2 中已更改。

  • 在 OpenCore 0.7.1 中,SecureBootModel 的故障安全值為 Default,該值將 Apple Secure Boot 硬件型號設置為 j137(iMacPro1,2017 年 12 月 1 日 macOS 10.13.2)。這意味著無法使用此 SecureBootModel 值安裝 10.13.2 之前的 macOS 版本。
  • 在 OpenCore 0.7.2 中,SecureBootModel 的故障安全值保持默認,但該值將 Apple Secure Boot 硬件模型設置為 x86legacy,新值(在以前的版本中不存在)對應於沒有 T2 芯片的硬件上的 macOS 11 Big Sur 和 12 Monterey。

請注意,對於 OpenCore 0.7.2:

  • x86legacy(現在默認)專為沒有 T2 芯片* 的 Big Sur 機器設計,特別是 Monterey,如果我們想要 Apple Secure Boot(最低 macOS 11)
  • j137 不適用於蒙特雷
  • j137 是 macOS 10.13.2 到 10.15.x 的推薦值
  • macOS 10.13.2 之前的系統必須設置 SecureBootModel=Disabled
  • 出於任何原因不想擁有 Apple Secure Boot 的用戶可以設置 SecureBootModel=Disabled,即使在大蘇爾和蒙特雷也是如此。

*根據 Apple 的說法,這些 Mac 電腦配備 Apple T2 安全芯片:

  • iMac (2020)
  • Mac Pro (2019)
  • Mac Pro(機架,2019 年)
  • Mac mini (2018)
  • MacBook Air (2020)
  • MacBook Air (2019)
  • MacBook Air (2018)
  • MacBook Pro (2020)
  • MacBook Pro (2019)
  • MacBook Pro (2018)
  • iMac Pro (2017)。

OpenCore 0.7.2 中的有效值(都是 T2 但 x86legacy 和禁用的模型):

  • 默認 – 最近可用的模型,當前設置為 x86legacy
  • 已禁用 — 無型號,安全啟動將被禁用
  • j137 — iMacPro1,1(2017 年 12 月)最低 macOS 10.13.2
  • j680 — MacBookPro15,1(2018 年 7 月)最低 macOS 10.13.6
  • j132 — MacBookPro15,2(2018 年 7 月)最低 macOS 10.13.6
  • j174 — Macmini8,1(2018 年 10 月)最低 macOS 10.14
  • j140k — MacBookAir8,1(2018 年 10 月)最低 macOS 10.14.1
  • j780 — MacBookPro15,3(2019 年 5 月)最低 macOS 10.14.5
  • j213 — MacBookPro15,4(2019 年 7 月)最低 macOS 10.14.5
  • j140a — MacBookAir8,2(2019 年 7 月)最低 macOS 10.14.5
  • j152f — MacBookPro16,1(2019 年 11 月)最低 macOS 10.15.1
  • j160 — MacPro7,1(2019 年 12 月)最低 macOS 10.15.1
  • j230k — MacBookAir9,1(2020 年 3 月)最低 macOS 10.15.3
  • j214k — MacBookPro16,2(2020 年 5 月)最低 macOS 10.15.4
  • j223 — MacBookPro16,3(2020 年 5 月)最低 macOS 10.15.4
  • j215 — MacBookPro16,4(2020 年 6 月)最低 macOS 10.15.5
  • j185 — iMac20,1(2020 年 8 月)。最低 macOS 10.15.6
  • j185f — iMac20,2(2020 年 8 月)。最低 macOS 10.15.6
  • x86legacy — 沒有 T2 芯片和 VM 的 Mac。最低 macOS 11.0.1。

注意:iMac19,1(2019 年 3 月 – 最低 macOS 10.14.4)不在列表中,因為它沒有 T2 芯片。

當然,您也可以將 Secure Boot Model 設置為上面列表中與您要引導的 macOS 版本相對應的值(例如 j160 用於 macOS Catalina 10.15.1)。如果您對舊操作系統持懷疑態度,您可以隨時放置僅支持您需要的 macOS 版本而不支持以前版本的型號。例如,j140k 將過濾 10.13 及更低版本,j152f 將過濾 10.14 及更低版本,x86legacy 將過濾 10.15 及更低版本。

hackintosh 中的

Apple Secure Boot 如何在 Hackintosh 中獲得 Apple Secure Boot?OpenCore 提供 3 個密鑰來啟用安全啟動:

  • Misc >> Security >> DmgLoading:在 OpenCore 中使用 DMG 設置加載策略;它可以是 Any(如果啟用 Secure Boot,則啟動失敗)、Signed 和 Disabled(都支持 Secure Boot)
  • Misc >> Security >> SecureBootModel:設置 Apple Secure Boot 硬件模型和策略;SecureBootModel 等同於中等安全性,要獲得完全安全性,您必須使用 ApECID
  • Misc >> Security >> ApECID:Apple Enclave Identifier,使用個性化的 Apple Secure Boot 標識符並在與 SecureBootModel 配對時具有完全安全性。

對於 ApECID 值,您必須以加密安全的方式隨機生成一個 64 位整數。如果你安裝了 Python 3,你可以在終端中使用這個命令:
Python:

python3 -c 'import secrets; print(secrets.randbits(64))'

如果你沒有 Python 3,你可以在終端中使用 urandom bash 命令。這個工具可以生成一個隨機的 32 位整數,如果我們運行該工具兩次並組合 2 個 32 位整數,我們會得到一個 64 位的值。將此文本複製到一個文件中,使用 sh 擴展名保存並雙擊運行它:
重擊:

#!/bin/sh
# first 32 bit integer
low32=$(od -An -N4 -tu4 < /dev/urandom)
# second 32 bit integer
high32=$(od -An -N4 -tu4 < /dev/urandom)
# joining the 2 numbers
long=$(($low32 + ($high32 << 32)))
# removing leading minus sign if exists
echo $long | sed 's/-//'

現在您可以在 config.plist 中的 Misc -> ApECID 下輸入它。
注意:不要使用 random 代替 uramdom,它不是加密安全的。

使用 ApECID 時,SecureBootModel 必須有一個定義的值而不是默認值(默認值可以在 OpenCore 的以下版本中更改)。

建議在 macOS 首次使用 ApECID 值啟動時個性化啟動卷。去做這個:

  • 啟動到恢復
  • 確保您有 Internet 連接
  • 打開終端
  • bless –folder “/Volumes/HD/System/Library/CoreServices” –bootefi –personalize
    (把HD換成你係統卷的名字)
  • 重新啟動到 macOS。

SecureBootModel 和 ApECID:

  • SecureBootModel=Disabled 我沒有安全性 (%00)
  • 使用 SecureBootModel=x86legacy 或任何有效值我具有中等安全性 (%01)
  • 使用 SecureBootModel=x86legacy 或任何有效值加上 ApECID 非零值,我擁有完全的安全性 (%02)。

基於 Intel 的 Mac 上的 Apple Secure Boot 狀態可以從 NVRAM 獲得:
nvram 94b73556-2197-4702-82a8-3e1337dafbfb:AppleSecureBootPolicy

如果找到該變量,它可以是以下之一:

  • %02 – 完全安全模式
  • %01 – 中等安全模式
  • %00 – 無安全模式

如果未找到該變量,則不支持 Apple Secure Boot。

Vault

這是 OpenCore 的安全啟動,對 OpenCore.efi 進行數字簽名,因此除了您之外沒有人可以修改啟動加載程序文件。

config.plist
作為第一個任務,您必須修改 config.plist:

  • 雜項 >> 安全 >> Vault:
    – 基本:只需要存在 vault.plist 文件,用於文件系統完整性驗證
    – 安全:需要 vault.plist 和 vault.sig 文件,用於最佳安全性,因為 vault.plist 更改需要一個新的簽名
  • Booter >> ProtectSecureBoot=Yes >> Insyde 固件需要用於修復安全啟動密鑰和報告違規行為。

CreateVault
複製 EFI 分區內 EFI 文件夾旁邊的 OpenCorePKG/Utilities/CreateVault 文件夾。結果路徑必須是:EFI 分區/Utilities 文件夾/CreateVault 文件夾。
重擊:

/Volumes/EFI/Utilities/CreateVault > ./sign.command
../../EFI/OC for hashing...
Hashing files in ../../EFI/OC...
ACPI\\SSDT-AWAC-DISABLE.aml: 68de84a90faa6948f7be97a229908460da0aafb90afcf8a49dea9804e1ffc88c
... / ...
Drivers\\OpenRuntime.efi: 84289c9187273e9fe20bf48e1ebee95a98740c9e3320e1f198da467189192457
... / ...
Kexts\\Lilu.kext\\Contents\\MacOS\\Lilu: bbe867b06c523551460decbf5e760662c057fc004fe65bb138d59135729ab167
... / ...
Resources\\Label\\Shell.lbl: ef2b6cd9fc4e11c3ed558555fcfbe9fb3377fd5d87212ceb5e1dc1fa945e0445
... / ...
config.plist: ae9f0b531b1c1aeeb692b67c8cd120eba9d67cf161978f44c1c87b5666708c6b
Tools\\OpenShell.efi: 4c0f9209bb3b0a1ce369848690e0480bb80b3d5880f9cceba5e8af74dcf68cdf
config-ok.plist: 51645ec8117668763bcec3ba826cc9ab0554805c0367a8644f3031cb5a0d5786
All done!
Generating RSA private key, 2048 bit long modulus
... / ...
e is 65537 (0x10001)
Issuing a new private key...
Getting public key based off private key...
Signing ../../EFI/OC/OpenCore.efi...
Bin-patching ../../EFI/OC/OpenCore.efi...
528+0 records in
528+0 records out
528 bytes transferred in 0.000660 secs (799781 bytes/sec)
All done!
Cleaning up keys
/Volumes/EFI/Utilities/CreateVault >

如何禁用保險櫃?

  • 獲取 OpenCore.efi 的新副本
  • 雜項>>安全>>保險庫>>可選
  • 刪除 vault.plist 和 vault.sig。

BIOS

UEFI 安全啟動中的安全啟動選項僅允許啟動已簽名和受信任的操作系統。PC Bios 隨附受信任的 Microsoft 密鑰。因此,要使用安全啟動啟動 Windows,您需要在 BIOS 中啟用安全啟動並擁有 Windows 8/10 密鑰(通常包含在主板固件中)。但這僅適用於 Windows。macOS 有自己的實現,名為 Apple Secure Boot,此功能可以通過在 BIOS 中禁用 Secure Boot 來完成。因此,這是 2 個獨立的系統:PC BIOS 安全啟動和 Apple 安全啟動。

默認情況下,我們的黑客始終禁用 BIOS 安全啟動,這是使用 OpenCore 或 Clover 啟動所需的 BIOS 選項之一,但我想找到一些在啟用 PC BIOS 安全啟動的情況下運行 OpenCore 的不太複雜的方法(如果可能的話,至少現在可能不是以簡單的方式)。在 BIOS 中啟用 Secure Boot 模式啟動 OpenCore 時,OpenCore 之前的固件會顯示一條警告“安全啟動違規。檢測到無效簽名。檢查設置中的安全啟動策略”,該固件出現故障且無法啟動。

在啟用或禁用 BIOS 安全啟動的情況下,Windows 10 可以正常啟動。但是 OpenCore 僅在禁用 BIOS 安全啟動的情況下啟動(如預期的那樣)。這對於只使用 Macos 的用戶來說並不重要。但由於接近最終版本的 Windows 11 需要啟用 BIOS 安全啟動,這對於同時使用 Macos 和 Windows 併計劃升級到 Windows 11

的用戶來說非常重要。問題是因為 PC BIOS 帶有受信任的 Microsoft 密鑰(通常,主板製造商密鑰也是如此)。這些密鑰可以在安全模式下啟動 Windows,但不能在 OpenCore 下啟動。

我已經嘗試了與安全啟動相關的所有可能的 OpenCore 選項:

  • 在 BIOS 中啟用安全啟動模式
    – SecureBootModel 已禁用 >> 失敗
    – SecureBootModel 已啟用 >> 失敗
    – SecureBootModel 已啟用 + ApECID 已啟用 >> 失敗
    – SecureBootModel 已啟用 + ApECID 已啟用 + Vault 已啟用 >> 失敗
  • 在 BIOS 中禁用安全啟動模式
    – SecureBootModel 已禁用 >> macOS 無安全啟動
    – 已啟用 SecureBootModel >> macOS 以中等安全性啟動
    – SecureBootModel 已啟用 + ApECID 已啟用 >> macOS 以完全安全性啟動
    – SecureBootModel 已啟用 + ApECID 已啟用 + Vault 已啟用 >>具有完全安全性的 macOS 啟動和 OpenCore 文件都經過簽名和保護。

Khronokernel 有uefisecureboot.md,其中包含有關如何將自定義安全啟動密鑰添加到固件中的說明,我在 Internet 上找到了一些站點(見最後),其中包含對啟動加載程序文件進行數字簽名並將簽名包含在固件中的說明,但是他們都使用 Linux 系統,這個過程似乎非常困難,而且遠離普通用戶的知識。

因此,目前,BIOS 中的安全啟動模式將保持禁用狀態,以便啟動 OpenCore 和 macOS。

https://wiki.gentoo.org/wiki/User:Sakaki/Sakaki’s_EFI_Install_Guide/Configuring_Secure_Boot

 wiki.gentoo.org管理 Linux 的 EFI 引導加載程序:控制安全引導

https://github.com/profzei/Matebook-X-Pro-2018/wiki/Enable-BIOS-Secure-Boot-with-OpenCore

上面的列表沒有顯示所有包含 T2 芯片的 Apple 系統>> 雖然它只顯示了從 2017 年 12 月開始的 iMacPro1,1 型號,但顯示了所有帶有 T2 芯片的 Mac,因為 T2 是在iMac Pro。

任何使用這些系統 SMBIOS 之一的人都可以選擇使用上面列表中的匹配值作為 SecureBootModel >> 不,它們是獨立的東西,SecureBootModel 僅在啟動時有效,與 macOS 運行時無關。SMBIOS 和 SecureBootModel 完全不相關,不需要匹配,Apple Secure Boot 模型不依賴於 SMBIOS 模型,因此嘗試選擇相同是沒有意義的。根據您要啟動的 macOS 版本進行選擇,或者只是禁用它

他們還可以使用 j137 作為默認值運行 High Sierra 到 Catalina >> 是的,任何人都必須使用 j137 作為默認值運行 High Sierra (10.13.2) 到 Catalina。

任何運行 Big Sur 的人都需要使用他們的系統值或 x86legacy 作為默認值>> 是的,兩者都是有效的(甚至是 j137)但 x86legacy 是首選,因為它過濾 macOS 10.15 及更早版本並且只允許 Big Sur 或 Monterey(更安全)。

運行 Monterey Public beta 的任何人都需要使用 x86legacy >> 是的,這是正確的(當然,如果您想要 Apple Secure Boot)。

例如,我的 iMac15,1 在引導 Catalina 時將使用 j137,但在使用 OC 0.7.2 引導 Big Sur 時我需要切換到 x86legacy >> 不,

對於所有包含 T2 芯片的 Apple 型號,是否有更完整的系統列表以及相應的值?>> 根據 Apple 的說法,這些 Mac 計算機具有 Apple T2 安全芯片(它們與 OpenCore 列表中的相同):

  • iMac (2020)
  • Mac Pro (2019)
  • Mac Pro(機架,2019 年)
  • Mac mini (2018)
  • MacBook Air (2020)
  • MacBook Air (2019)
  • MacBook Air (2018)
  • MacBook Pro (2020)
  • MacBook Pro (2019)
  • MacBook Pro (2018)
  • iMac Pro (2017)。

仍然讓我感到困惑的部分是:j137 是 macOS 10.13.2 到 10.15.x 的推薦值。這是每個運行 High Sierra 10.13.2 到 Catalina 10.15.7 的人都應該使用的價值,即使他們相應的 Apple 系統不包含 T2 芯片?>> 是的,j137 是運行 High Sierra (10.13.2) 到 Catalina 的默認值。

x86legacy 能否在非 T2 系統上的這些早期版本的 macOS 中工作?> 不,只在大蘇爾和蒙特雷,因為它過濾了卡特琳娜和更老的人。

附錄

使用 macOS 10.13.2 之前的系統的任何人都必須設置 SecureBootModel=Disabled。

任何使用從 10.13.2 到 10.15.x 的 macOS 版本的人都可以選擇使用上面列表中的值作為 SecureBootModel 而不是 j137 過濾他想要運行的 macOS 版本。

所有系統,包括 Monterey,也可以使用 SecureBootModel=Disabled 啟動。

点赞
Share