# 了解macOS引导过程
在对hackintosh进行故障诊断时,要真正理解您在哪里遇到困难可能有点困难,因为您试图搜索的确切关键字可能与谷歌上的任何内容都不匹配。虽然这篇文章不会解决你所有的问题,但它至少可以帮助你更好地理解macOS启动过程中哪里卡住了,并希望能给你一些为什么卡住的想法。
# OpenCore启动
本节将会很简短,因为OpenCore引导问题相当罕见,通常是简单的用户错误:
- 系统启动并搜索启动设备
- 系统在您的 OpenCore USB 上的 efi/BOOT/ 下定位 BOOTx64.efi
- 加载BOOT x64.efi,然后从 efi/OC/ 链式加载 OpenCore.efi
- 应用NVRAM属性
- EFI 驱动程序是从 EFI/OC/drivers 加载的
- 安装了图形输出协议(GOP)
- ACPI 表是从 EFI/OC/ACPI 加载的
- SMBIOS数据应用
- OpenCore 加载和显示所有可能的引导选项
- 你现在启动你的macOS安装程序
如果你在这一点上启动有问题,主要检查:
关于其他可能的问题,请参见:
# boot.efi 切换
这是macOS的引导加载程序(boot.efi)出现的地方,具体来说,它所做的是为内核加载准备环境,以及OpenCore注入kext的地方。如果你在这一点上卡住了,很可能是加载内核有问题,主要的罪魁祸首是:
关于其他可能的问题,请参见:
注意:在macOS 10.15.4中,苹果更改了boot.efi调试协议,所以看起来与之前有很大的不同,但所有的规则仍然适用
# XNU/内核切换
现在启动efi已经为我们设置好了一切,我们现在可以观察内核的工作了。这部分通常被称为Rooting phase (opens new window):
本节是验证 SMBIOS 数据、加载 ACPI 表 /kext 以及 macOS 试图使一切正常的地方。这里的失败通常是以下原因造成的:
- 损坏的ssdt
- 损坏的kext(或配置文件plist -> Kernel -> Add下的设置不正确)
- 混乱的内存映射
查看此处获取更多故障诊断信息:
现在我们有了[PCI configuration begin]
,这一节可以看作是对我们的系统、注入的kext和ssdt的硬件测试,IOKit在这里启动硬件探测以查找要连接的设备。
这里测试的主要内容是:
- 嵌入式控制器
- 存储(NVMe、SATA等)
- PCI/e
- NVRAM
- RTC
- PS2 和 I2C
关于如何绕过这个区域的更多具体信息,请参阅这里:
这就是15端口限制和USB映射发挥作用的地方,也是臭名昭著的 "Waiting for Root Device" 错误弹出的地方,主要检查:
这就是我们的FakeSMC/VirtualSMC发挥作用的地方,DSMOS本身是一个kext,它验证您的系统是否有一个SMC,并将请求一个密钥。如果这个密钥缺失,那么DSMOS将无法解密其余的二进制文件,您将被卡在这里。你也可能在AppleACPICPU遇到同样的错误。
你今天的业力检查:
曾经有一个用户抱怨
他现有的操作系统太盲目了,
他会做得更好,盗版操作系统跑好了
但他发现硬件拒绝。
请不要偷Mac OS!
真的,这太不酷了。
(C) Apple Computer, Inc.
来源:不要窃取Mac OS X.kext
这就是苹果的音频驱动程序和AppleALC的亮点所在。通常很少在这里看到问题,但如果有,请尝试禁用AppleALC和任何其他与音频相关的kext。
这里我们进入了GPU驱动程序初始化,WhateverGreen也在这里发挥了它的魔力。这里的错误通常是由于GPU,而不是WhateverGreen本身,主要的罪魁祸首:
# macOS切换
你终于摆脱了所有的啰嗦!如果在啰嗦模式过去了这么多之后,你还在纠结于苹果的logo,那么有几件事需要检查:
⟵ OpenCore调试 系统调试:深入 ⟶