OpenCore Legacy Patcher 安装后配置详解:无 USB 启动、隐藏 Boot Picker、SIP 设置与根补丁(Root Patch)
【免费下载链接】OpenCore-Legacy-PatcherExperience macOS just like before项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher
通过 OpenCore 完成 macOS 安装之后,还有一组关键的"安装后"工作:把 OpenCore 固化到内置硬盘实现无 U 盘启动、按需隐藏 OpenCore 启动选择器、正确配置 SIP(系统完整性保护)、以及为老 Mac 应用必须落盘的根补丁(Post Install Volume Patches / Root Patch)。本文基于仓库文档 POST-INSTALL.md 完整展开这四项内容,并结合 OpenCore Legacy Patcher(下称 OCLP)的源码,说明这些设置项在构建 EFI 与打补丁过程中实际生效的位置和机制。
1. 不使用 U 盘启动 macOS
通过 U 盘上的 OpenCore 完成安装流程后,可以完全摆脱 U 盘。操作步骤如下:
- 下载并打开 OpenCore Legacy Patcher;
- 按需要调整 Patcher 设置(SMBIOS、SIP、驱动等);
- 重新 Build OpenCore;
- 将构建出的 OpenCore 安装到内置硬盘(EFI 分区);
- 重启时按住 Option(⌥)键,选择内置硬盘上的 EFI 条目。
此后每次开机都可以直接由内置 EFI 引导,无需再插入 U 盘。若构建 OpenCore 时检测不到内置硬盘,可参考 TROUBLESHOOT-APP.md 中"Internal disk missing when building OpenCore"一节排查。
从源码结构看,"Build OpenCore"本质上是把仓库中的 默认 config.plist 作为基础模板,由 efi_builder 各模块按机型和设置逐层改写后写出的;内置 OpenCore 二进制与驱动同样来自 payloads/OpenCore 目录下的 OpenCore-RELEASE.zip / OpenCore-DEBUG.zip。
2. 隐藏 Boot Picker,实现"无感"启动
默认情况下每次开机都会看到 OpenCore 启动选择界面。如需隐藏它,进入 OpenCore Patcher 应用的Patcher Settings → Build 选项卡,取消勾选"Show OpenCore Boot Picker":
关闭该选项后重新构建并安装 OpenCore 到目标磁盘。隐藏之后,若想临时调出 OpenCore 选择器,只需在点击 EFI 启动条目时按住ESC键,看到左上角出现光标箭头后即可松开。
该设置在仓库中的实现链路清晰可循:
- 默认值定义在 constants.py:
self.showpicker: bool = True,即默认显示启动选择器; - GUI 中对应的复选框由 wx_gui/gui_settings.py 定义,描述文案与文档一致:"When disabled, users can hold ESC to show picker in the firmware";
- 构建 EFI 时,efi_builder/misc.py 中的
_general_oc_handling()会检查该设置,若为 False 则把 config 中的Misc → Boot → ShowPicker置为False; - 命令行场景同样支持:support/utilities.py 定义了
--hide_picker参数,由 support/arguments.py 解析后写入constants.showpicker = False。
同一处代码还会处理 "Boot Picker Timeout" 设置(默认 5 秒,范围 0–60,0 表示不超时):只要oc_timeout不等于默认值 5,就会写入Misc → Boot → Timeout,见 efi_builder/misc.py 与 wx_gui/gui_settings.py。
3. SIP 设置
SIP(System Integrity Protection)在需要进行根补丁的系统上必须"降低",因为根补丁要修改磁盘上的系统数据。具体需要降低到什么程度,取决于 macOS 版本与 Mac 机型。OCLP 默认会根据 OS 版本和机型自动确定合适的 SIP 选项,绝大多数情况下无需手动改动。
警告:不确定时请保持默认设置。已经执行过 Post Install Root Patching 的系统,若强行恢复完整 SIP,可能导致当前安装不可用。
仓库中 SIP 各档位对应的 GUI 截图如下(原文档以三栏对照表呈现):
| SIP Enabled(完整) | SIP Lowered(OCLP 默认降低档) | SIP Disabled(完全关闭) |
|---|---|---|
3.1 手动配置 SIP 的入口与判断依据
SIP 设置位于设置界面的Security 选项卡。修改后需回到主菜单重新 Build OpenCore 才会生效;在允许完整 SIP 的场景中,则需要在该处手动启用完整 SIP。
最简单的判断方法:查看主菜单中 "Post Install Root Patch" 区域。若它显示当前系统不需要补丁(或者你本就不打算打补丁,例如升级了独显的 Mac Pro 在 Monterey 下不需要 WiFi 补丁),即可认为可以启用完整 SIP。
3.2 分 macOS 版本的 SIP 建议
Ventura 及更新版本:所有不受支持的机型都需要降低 SIP。
Monterey:2013 年及以后的多数不受支持机型可启用完整 SIP。2012 年之前的"非 Metal"机型,以及搭载 NVIDIA Kepler 或 Intel HD 4000 显卡的机型需要降低 SIP。Mac Pro 因根补丁的存在,原装无线网卡与原装显卡场景也需要降低 SIP;但如果不需要 WiFi(或计划升级 WiFi)且已换装升级显卡,则无需根补丁,SIP 可完整启用。
Big Sur:2012 年及以后所有支持 Metal 的机型(含 NVIDIA Kepler 与 Intel HD 4000),以及换装显卡的 Mac Pro,可启用完整 SIP;非 Metal 机型仍需降低 SIP。
3.3 源码视角:SIP 位与降低档位的实际取值
OCLP 中所有 SIP 位定义在 datasets/sip_data.py,来源于 XNU 的 csr 标志位,主要包括:
| 标志位 | 值 | 含义 | 引入版本 |
|---|---|---|---|
| CSR_ALLOW_UNTRUSTED_KEXTS | 0x1 | 允许加载未签名 Kext | El Capitan |
| CSR_ALLOW_UNRESTRICTED_FS | 0x2 | 文件系统访问(挂载/编辑系统卷) | El Capitan |
| CSR_ALLOW_TASK_FOR_PID | 0x4 | 无限制 task_for_pid() | El Capitan |
| CSR_ALLOW_KERNEL_DEBUGGER | 0x8 | 允许内核调试器 | El Capitan |
| CSR_ALLOW_APPLE_INTERNAL | 0x10 | 启用 AppleInternal 特性 | El Capitan |
| CSR_ALLOW_UNRESTRICTED_DTRACE | 0x20 | 无限制 DTrace | El Capitan |
| CSR_ALLOW_UNRESTRICTED_NVRAM | 0x40 | 无限制 NVRAM 写入 | El Capitan |
| CSR_ALLOW_ANY_RECOVERY_OS | 0x100 | 跳过 BaseSystem 校验 | Sierra |
| CSR_ALLOW_UNAPPROVED_KEXTS | 0x200 | 允许未公证 Kext | High Sierra |
| CSR_ALLOW_EXECUTABLE_POLICY_OVERRIDE | 0x400 | 覆盖可执行策略(源码注释表明该位实际并不需要,且从不被 csrutil disable 置位) | Mojave |
| CSR_ALLOW_UNAUTHENTICATED_ROOT | 0x800 | 允许挂载根卷 | Big Sur |
针对根补丁的组合在 sip_data.py 中按 macOS 大版本给出:
- Mojave / Catalina:0x1 + 0x2 + 0x200(未签名 Kext、文件系统访问、未公证 Kext);
- Big Sur / Monterey:0x2 + 0x800(文件系统访问、允许根卷挂载);若还涉及第三方 Kext,则追加 0x1 与 0x200;
- Ventura:0x1 + 0x2 + 0x800。
当 SIP 处于降低状态(sip_status is False)时,构建阶段由 efi_builder/security.py 的BuildSecurity处理,除了把csr-active-config写入 NVRAM 外,还会做一组配套动作:
- 追加启动参数
ipc_control_port_options=0(规避 12.3 上 SIP 降低时 Electron 应用无法启动的问题)与-nokcmismatchpanic(规避 RSR 安装引起的 Kernel Cache UUID 不匹配内核 panic); - 在 OCLP 私有 NVRAM 键(
OCLP-Settings)中追加-allow_fv与-allow_amfi等标记,供sys_patch.py判断当前 config 是否支持 FileVault / AMFI 相关补丁; - 启用AutoPkgInstaller.kext:这是"自动打补丁"的关键——只要用 OCLP 构建的 OpenCore 启动且 SIP 已降低,系统会自动安装 OpenCore Patcher 应用,为后续自动根补丁与自动更新铺路;
- 启用RSRHelper.kext并修补 APFS 相关函数,使根补丁系统上可用 FileVault。
此外,若指定了自定义 SIP 值,custom_sip_value会通过csr-active-config直接写入 NVRAM(见 efi_builder/security.py)。
4. 应用 Post Install Volume Patches(根补丁)
Post Install Volume Patches(常称 root patches)是某些老 Mac 必须写入磁盘才能恢复功能的补丁,覆盖内容通常包括:
- 图形加速驱动
- WiFi 驱动
- 蓝牙驱动
- Touch Bar / T1 芯片驱动
- 内置摄像头(iSight)驱动
- USB 1.1 驱动
- 其他用于兼容旧驱动的补丁
自动路径:如果 U 盘安装器是 OCLP 创建的、且创建前选择了正确机型,OCLP 会在安装完成后自动为系统打上根补丁(依赖上文 AutoPkgInstaller 自动装好的应用)。如果没有用 OCLP 制作 U 盘、或自动补丁失败,需要手动下载 OCLP 并安装根补丁——因为自动补丁失败时应用本身不存在。
重要:macOS 更新会抹掉根补丁,每次更新后必须重新安装。OCLP 会在 macOS 更新后、或检测到补丁缺失时主动提示安装。使用 U 盘安装器方式更新系统同样可以复用自动补丁流程,避免通过系统设置更新后必须手动打补丁的麻烦。
在 Post-Install 菜单中可以看到当前系统已安装哪些可用补丁,包括根补丁安装的日期与所用版本号。
自动补丁背后是一组 Launch Services 守护任务,模板文件见 payloads/Launch Services:
- com.dortania.opencore-legacy-patcher.auto-patch.plist:安装后自动执行根补丁的 LaunchAgent;
- com.dortania.opencore-legacy-patcher.macos-update.plist:监视 macOS 更新、提示重打补丁的 LaunchDaemon;
- com.dortania.opencore-legacy-patcher.os-caching.plist:按需缓存 KDK 等系统的 LaunchDaemon;
- com.dortania.opencore-legacy-patcher.rsr-monitor.plist:监视 Root System Reservoir 的 LaunchDaemon。
安装逻辑位于 sys_patch/auto_patcher/install.py 的InstallAutomaticPatchingServices,其中会先对已有服务文件做 SHA256 校验,一致则跳过、不一致则先移除再重装,保证守护任务与当前 OCLP 版本一致。若需迁移数据(Migration Assistant),请参见 TIMEMACHINE.md 的配套指南。
4.1 需要联网才能获取的补丁依赖包
部分机型打根补丁时必须从网上获取依赖包。若系统中不存在这些包,OCLP 首次补丁运行可能只安装 WiFi 驱动以保证能联网——这意味着重启后暂时没有图形加速,联网后还需手动再次执行根补丁才能装上其余补丁;使用有线以太网则可在一次运行中装完全部补丁。
MetallibSupportPkg:Ivy Bridge、Haswell 与 NVIDIA Kepler 机型(3802 架构)在Sequoia 及更新系统上需要该包,可手动从官方 MetallibSupportPkg 发行版下载——务必让包内版本号与当前使用的 macOS 版本精确匹配。受影响 GPU:
- NVIDIA:Kepler(GTX 600–700 系列、Quadro K 系列)
- Intel:Ivy Bridge(HD 4000 系列)、Haswell(Iris/HD 4000–5000 系列)
KDK(Kernel Debug Kit):搭载 AMD Legacy GCN 显卡(Metal 级别)的 Mac 在Ventura 及更新系统上启动根补丁需要 Apple 的 Kernel Debug Kit,可从官方 KdkSupportPkg 发行版下载与所装系统版本最接近的 KDK 并安装到本机。需要的机型与 GPU:
- GPU:Radeon HD 7000 系列、Radeon R9 系列、FirePro D300/D500/D700
- 原生 GCN 机型:iMac 2014–2015(iMac15,1–17,1)、Mac Pro 2013(MacPro6,1)、MacBook Pro 2015 15" 独显版(MacBookPro11,5)
- 升级机型:Mac Pro 2008–2012(MacPro3,1–5,1)与 iMac 2009–2011(iMac10,1–12,1),前提是换装了 AMD GCN 显卡
4.2 各 macOS 版本需要根补丁的 GPU 清单
以下 GPU 已不再受原生支持,即需要 OCLP 进行根卷补丁:
Ventura / Sonoma / Sequoia
- NVIDIA:Tesla(8000–300 系列)、Kepler(600–800 系列)
- AMD:TeraScale(2000–6000 系列)、GCN 1–3(7000–R9 系列)、Polaris(RX 4xx/5xx 系列,CPU 无 AVX2 时)
- Intel:Iron Lake、Sandy Bridge(2000–3000 系列)、Ivy Bridge(4000 系列)、Haswell(4400/4600/5000 系列)、Broadwell(6000 系列)、Skylake(500 系列)
Monterey
- NVIDIA:Tesla(8000–300 系列)、Kepler(600–800 系列)
- AMD:TeraScale(2000–6000 系列)
- Intel:Iron Lake、Sandy Bridge(2000–3000 系列)、Ivy Bridge(4000 系列)
Big Sur
- NVIDIA:Tesla(8000–300 系列)
- AMD:TeraScale(2000–6000 系列)
- Intel:Iron Lake、Sandy Bridge(2000–3000 系列)
补充说明(原文档):AMD Navi(RX 5000–6000 系列)显卡在 Mac Pro 2008–2012 上使用 Ventura 及更新系统时不可用,原因是 CPU 缺少 AVX2 支持。
4.3 Monterey 下需要补丁的无线网卡
- Broadcom:BCM94328、BCM94322
- Atheros 系列
小结
安装完成只是让 macOS "能跑起来",而安装后的四件事决定了长期可用性:内置 EFI 让你告别 U 盘;隐藏 Boot Picker(Misc → Boot → ShowPicker)让开机流程回归原生体验且随时可用 ESC 找回;SIP 档位由 sip_data.py 按 OS 与机型自动匹配、由 security.py 在构建期写入 NVRAM;根补丁及其自动维护机制(AutoPkgInstaller + 各 LaunchAgent/LaunchDaemon)则负责把图形、WiFi、蓝牙等功能真正落到系统卷上,并在每次 macOS 更新后提醒你重新打补丁。
【免费下载链接】OpenCore-Legacy-PatcherExperience macOS just like before项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考