精解OpenCore

教程更新于 2020.3.2, 基于 OpenCore 0.5.6 官方版本

由于个人能力有限, 教程中难免会有些疏漏, 这里推荐大家在参阅本教程的同时也阅读以下资料:

  1. OpenCore 官方文档[1] — OpenCore 最权威的资料, 没有之一!!!
  2. xjn‘s Blog[2] — xjn 大佬的博客, 对台式机非常友好的教程, 内存管理写的非常详细
  3. OC-little[3] — 宪武大佬的 OC ACPI 热补丁示例
  4. Opencore Vanilla Desktop Guide[4]

精解OpenCore

什么是 OpenCore

OpenCore(简称 OC) 是一个着眼于未来开源的引导工具, 最初诞生于 HermitCrabs 实验室, 现在接手于 Acidanthera, 其目的是创造一个更加严谨的模组化的轻量引导系统。尽管 OpenCore 的主要用途是黑苹果, 它也支持其它操作系统的引导。

OpenCore 现在处于公测 Beta 阶段, 引导相关功能也已非常稳定, 喜欢折腾的朋友现在已经是动手的时机了。

这个教程只能作为你探索的起点。请仔细阅读并时刻牢记你的硬件可能有不同的配置要求。

为什么选择 OpenCore

  1. 从 2019 年 9 月以后, Acidanthera 开发的内核驱动 (Lilu, AppleALC 等等) 「不再会」 在 Clover 上做兼容性测试
  2. OpenCore 更加注重系统的安全性, 提供对 OpenCore 自身引导文件对加密, 同时对文件保险箱 (FileVault) 有更强大的支持, 在未来会支持 UEFI 安全启动
  3. OpenCore 启动 FileVault (硬盘保险箱) 加密的分区速度远超 Clover
  4. OpenCore 支持基于 boot.efi 的原生开机快捷键支持
  5. OpenCore 使用更加先进的方法注入第三方内核扩展驱动 (Kext) 且与此同时不会破坏系统完整性保护
  6. OpenCore 通过读取启动磁盘设置的 NVRAM 变量, 可以像白苹果一样支持在设置的启动磁盘切换默认引导项
  7. 支持给其它 .efi 驱动或引导工具加入参数
  8. 大量 Acidanthera 维护的独立 UEFI 驱动[5] 被合并入 OpenCore, 未来的开发直接与 OpenCore 绑定, 且不再支持 Clover

OpenCore 常见疑问

  1. OpenCore 不自带精美的主题, 以后会添加吗?

    • OpenCore 自带的 GUI 仅用于 debug, 设计初衷是在正常使用的时像白苹果一样隐藏。
    • 其实 OpenCore 已经提供了大量可以绕开 GUI 的功能, 将 ShowPicker 设置为 NO 隐藏菜单之后, 可以通过系统自带的启动磁盘设置来切换默认系统, 用苹果原生快捷键来重置 NVRAM 和添加引导表示符, 需要其它功能的时候可以随时按 ESC/Option 调出, 主题存在的意义不大
    • N.D.K 为官方 OpenCore 开发了一个独立的 GUI 插件, 可以在 这里下载[6], 食用方法请阅读项目的 Readme[7]
  2. OpenCore 为什么不会为其它操作系统忽略 ACPI 补丁?

    真正正确的 ACPI (DSDT/SSDT) 应当适用于所有的操作系统, 单独为一个操作系统制作 ACPI 是不合理的, 因此 OpenCore 基于 ACPI 标准, 不会在 ACPI 上区别对待操作系统, 如果想学习怎样使用和制作通用于所有操作系统的 ACPI 补丁, 可以参考 OC-little[8]

  3. OpenCore 的 MOD 版本和官方版本有何不同?

    OpenCore MOD 是 N.D.K 的一个 Fork, 里面加入了不注入除了 macOS 之外的其它操作系统的功能, 可以看作是一个自带主题的懒人版。但是除非在个别极端情况下主板的固件真的不走规范, 正确配置原版 OpenCore 和 ACPI 是不会造成无法引导其它操作系统的情况的。本教程鼓励正确配置 OpenCore, 因此基于 原版 OpenCore 编写, 且 「不推荐」 使用 MOD 版本来掩盖自身的配置问题。

  4. OpenCore 的配置为什么看起来这复杂?

    • OpenCore 为了提高兼容性, 为用户开放了更多底层的 Quirk
    • OpenCore 现阶段没有可用的非常直观的 GUI 编辑器

换位思考, 如果用 Xcode 来编辑 Clover 安装包内自带的 Config 样本, 显然 OpenCore 会更简单。OpenCore 很多功能都有且只有一处设置, 但是 Clover 有大量等效组合互相干扰。

配置 OpenCore

讲了这么多, 终于到真正动手的环节了

本文较长, 请点击左下角 原文 跳转到博客继续阅读

参考资料

[1]

OpenCore 官方文档: https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/Configuration.pdf

[2]

xjn‘s Blog: https://blog.xjn819.com/?p=543

[3]

OC-little: https://github.com/daliansky/OC-little

[4]

Opencore Vanilla Desktop Guide: https://khronokernel-2.gitbook.io/opencore-vanilla-desktop-guide/

[5]

UEFI 驱动: #附录2-uefi-驱动-efi-及其用途

[6]

这里下载: https://github.com/n-d-k/NdkBootPicker/releases/latest

[7]

Readme: https://github.com/n-d-k/NdkBootPicker/blob/master/README.md

[8]

OC-little: https://github.com/daliansky/OC-little



微信扫描下方的二维码阅读更多精彩内容

精解OpenCore


感谢对大飞哥的支持

相关新闻