如何使用AllowToggleSIP功能禁用系统完整性保护?

前言

最后更新:2022-6-19

在 OpenCore 0.7.0 中,开发团队 acidanthera 为其添加了一个方便的新特性:AllowToggleSIP。通过此功能可以让 OpenCore 停止 macOS 的 SIP(System Integrity Protection,系统完整性保护)功能。SIP 自 10.11 El Capitan 时推出,旨在为 macOS 系统提供一定的自我保护能力。

黑苹果的安装使用过程中,一些特殊情况会需要临时关闭 SIP,例如替换系统文件,再比如运行某些已激活的软件等。传统的 SIP 关闭方法和真正的白苹果一致:即需要在启动时选择引导进入 Recovery 分区,或使用安装 U 盘进入 macOS Base System,然后在这个环境里运行终端命令才能关闭。

由于大量黑苹果 EFI 配置调试功底不过关等原因,很多黑苹果可以正常引导 macOS,但无法正常引导 Recovery 分区,OpenCore 推出的这个功能可以方便快捷的解决这个痛点。

下面是 OC 团队为此功能提供的说明:

Enable entry for disabling and enabling System Integrity Protection in OpenCore picker. This will toggle Apple NVRAM variable csr-active-config between 0 for SIP Enabled and a practical default value for SIP Disabled (currently 0x26F).

  • Note1: It is strongly recommended not to make a habit of running macOS with SIP disabled. Use of this boot option may make it easier to quickly disable SIP protection when genuinely needed - it should be re-enabled again afterwards.
  • Note2: OC uses 0x26F even though csrutil disable on Big Sur sets 0x7F. To explain the choice:
    • csrutil disable --no-internal actually sets 0x6F, and this is preferable because CSR_ALLOW_APPLE_INTERNAL (0x10) prevents updates (unless you are running an internal build of macOS).
    • CSR_ALLOW_UNAPPROVED_KEXTS (0x200) is generally useful, in the case where you do need to have SIP disabled, as it allows installing unsigned kexts without manual approval in System Preferences.
    • CSR_ALLOW_UNAUTHENTICATED_ROOT (0x800) is not practical as it prevents incremental (non-full) OTA updates.
  • Note3: For any other value which you may need to use, it is possible to configure CsrUtil.efi as a TextMode Tools entry to configure a different value, e.g. use toggle 0x6F in Arguments to toggle the SIP disabled value set by default by csrutil disable --no-internal in Big Sur.

大致翻译一下:

AllowToggleSIP 可以在 OpenCore 选择器(Picker)中启用用于禁用和启用系统完整性保护的条目。这会将 Apple NVRAM 变量 csr-active-config 在 SIP 启用的 0 和 SIP 禁用的实际默认值(当前为 0x26F)之间切换。

  • 注1:强烈建议不要养成在禁用 SIP 的情况下运行 macOS 的习惯。使用此启动选项可以更轻松地在真正需要时快速禁用 SIP 保护 - 之后应再次重新启用。
  • 注2:OC 使用 0x26F,即使 Big Sur 上的 csrutil disable 是 0x7F。选项解释:
    • csrutil disable --no-internal 实际上设置成 0x6F,这更可取,因为 CSR_ALLOW_APPLE_INTERNAL (0x10) 会阻止更新(除非您正在运行 macOS 的内部版本)。
    • CSR_ALLOW_UNAPPROVED_KEXTS (0x200) 通常很有用,在确实需要禁用 SIP 的情况下,因为它允许在系统偏好设置中无需手动批准即可安装未签名的 kext。
    • CSR_ALLOW_UNAUTHENTICATED_ROOT (0x800) 不实用,因为它会阻止增量(非完整)OTA 更新。
  • 注3:对于您可能需要使用的任何其他值,可以将 CsrUtil.efi 配置为 TextMode Tools 条目以配置不同的值,例如在启动参数中使用 0x6F 切换默认设置的 SIP 禁用值,这是在 Big Sur 中由 csrutil disable --no-internal 设置。

 

大意就是启用这个选项,会在 OC 启动界面新增一个叫 Toggle SIP 的项目,可以直接选择它以开启/禁用 SIP,它会向 NVRAM 变量 csr-active-config 注入值 0x26F。如果有特别需要,可以通过配置 CsrUtil.efi 这个工具修改这个注入值。

好了,道理都懂,该怎么操作呢?

 

启用方法

AllowToggleSIP 在 OpenCore 的配置文件 config.plist 中以一个布尔值的形式存在,位于 Misc → Security。「注意」 OC 版本必须是 0.7.0 及以上,如果你的不是,参考「如何升级引导工具」。「注意」OpenCore 0.8.1 及以后的版本和下面的方法不一致,请看本文对应部分。

开启的方法很简单,配置类工具中勾选即可;编辑器类工具改值为 True 即可。

修改完成后保存即可。

重启后,在 OpenCore 的系统选择界面会出现 Toggle SIP 的选项,后面会有括号标注状态。Enabled 表示 SIP 开启,Disabled 表示 SIP 关闭。只需要选择该项目并按下回车,系统的 SIP 即可在开启和关闭之间快速切换。

 

OpenCore 0.8.1 及以上版本

自 OpenCore 0.8.1 开始,OC 团队决定将 SIP 开关和重置 NVRAM 独立为 .efi 驱动文件,这样做的好处是可以接受额外参数。

也就是说,OpenCore 0.8.1 开始需要手动加载这两个新增的文件到 config.plist 文件中,具体位置:Config.plist → UEFI → Driver → 驱动列表,如下图(OpenCore Configurator):

如果使用 OCAuxiliaryTools,则如下:

保存重启后即可在启动界面接到熟悉的功能图标。

最后说一下,如果你喜欢简洁的界面,但是又想要保留 SIP 开关和 NVRAM 重置按钮,可修改 config.plist 中以下位置:

Misc → Boot → Quirks → HideAuxiliary

勾选该项/Enabaled 即可开启该功能,主要作用是在 OpenCore 启动界面隐藏大部分功能图标,仅显示操作系统选项,但按一下空格,隐藏的项目就会重新出现,非常方便。

 

 

0. 本站所有资源解压密码均为 heipg.cn
1. 本站资源收集于网络,仅做学习和交流使用,请于下载后24小时内删除。如果你喜欢我们推荐的软件,请购买正版支持作者。
2. 如有无法下载的链接,联系:admin#heipg.cn,或到QQ群进行反馈,我们将及时进行处理。
3. 本站发布的内容若侵犯到您的权益,请联系站长删除,联系方式:admin#heipg.cn,我们将第一时间配合处理!

黑苹果星球 » 如何使用AllowToggleSIP功能禁用系统完整性保护?

5 评论

  1. 请教,我是OC 0.9.3的,为什么ResetNvramEntry.efi放入Driver并在ProperTree中启用,可以在启动界面正常显示,但ToggleSipEntry.efi确不行,在启动画面没有显示出来。这是什么原因?有人了解吗?谢谢;

  2. 运行root paching不成功,提示Sip值设为0xA03或者更高。当前是0x6f,请问该如何设置,谢谢!

    1. 手动在config中指定csr-active-config值
      或者使用CsrUtil.efi修改

  3. csrutil authenticated-root status
    Authenticated Root status: enabled

    但这个还是开启的

    1. 把config中nvram项下的csr-active-config值清0

发表回复