Dortania 05-故障排除与高阶功能

故障排除与高阶功能

本章节涵盖启动问题排查、内核问题、安装后问题、以及高阶功能如 ACPI 补丁和 GPU 补丁。


目录


1. 故障排除总览

根据问题发生的位置,故障排除分为以下几类:

阶段 问题类型 参考章节
启动 USB → OpenCore 选择器 OpenCore 启动问题 第2章
OpenCore 选择器 → Apple 徽标前 内核空间问题 第3章
Apple 徽标 → 安装完成 用户空间问题 第4章
安装完成后 安装后问题 第5章
其他操作系统 其他问题 第6章

2. OpenCore 启动问题

卡在 no vault provided!

原因:启用了 Vault 但没有提供 vault 文件。

解决方案

  • 在 config.plist 中设置 Misc -> Security -> VaultOptionalSecure
  • 如果不需要 Vault,设置为 Optional

看不到 macOS 分区

可能原因

  • HFS+ 驱动缺失(确保 HfsPlus.efi 在 Drivers 文件夹中)
  • config.plist 中 ScanPolicy 设置过于严格
  • 启动参数设置不正确

解决方案

  • 确保 HfsPlus.efi 已安装
  • Misc -> Security -> ScanPolicy 设置为 0(显示所有)
  • 检查 UEFI -> APFS 设置

引导 OpenCore 重新启动至 BIOS

可能原因

  • EFI 文件夹结构不正确
  • OpenCore.efi 损坏或版本不匹配
  • 缺少必要的驱动

解决方案

  • 检查 EFI 文件夹结构是否正确
  • 确保 BOOTx64.efi 和 OpenCore.efi 版本一致
  • 确保 OpenRuntime.efi 已安装

OCABC: Incompatible OpenRuntime r4/rXX

原因:OpenCore 和 OpenRuntime 版本不匹配。

解决方案:确保所有 OpenCore 文件来自同一版本。

OC: Failed to find SB model disable flag

原因:SecureBootModel 设置问题。

解决方案:设置 Misc -> Security -> SecureBootModelDefaultDisabled


3. 内核空间问题

卡在 EndRandomSeed

可能原因

  • 内存映射问题
  • Kext 加载顺序错误

解决方案

  • 检查 Kernel -> Add 中的 kext 加载顺序(Lilu 必须在其他插件之前)
  • 尝试启用 ProvideCustomSlide(UEFI -> APFS)
  • 确保 EnableSafeModeSlideEnableWriteUnprotector 正确设置

卡在 [EB|#LOG:EXITBS:START]

可能原因

  • Kext 与硬件不兼容
  • ACPI 表问题
  • 内存映射问题

解决方案

  • 逐一禁用 kext 排查
  • 检查 SSDT 是否正确编译
  • 尝试调整 Booter 和 Quirks 设置
  • 启用 SyncRuntimePermissions

Couldn't allocate runtime area 错误

可能原因:KASLR 内存分配失败。

解决方案

  • 启用 ProvideCustomSlide
  • 使用 slide=1 boot-arg
  • 调整 AvoidRuntimeDefragEnableSafeModeSlide
  • 对于 Z390+ 主板,启用 ProtectUefiServices

内核恐慌 Cannot perform kext summary

可能原因:kext 数量过多或 kext 损坏。

解决方案

  • 减少不必要的 kext
  • 检查 kext 是否损坏
  • 确保 kext 加载顺序正确

Invalid frame pointer 内核恐慌

可能原因:内存映射问题或 kext 冲突。

解决方案

  • 启用 DisableIoMapper
  • 检查 kext 兼容性
  • 尝试 keepsyms=1 获取更多信息

卡在 RTC...PCI Configuration BeginsHPET

可能原因

  • IRQ 冲突
  • RTC/AWAC 问题
  • HPET 配置问题

解决方案

  • 使用 SSDTTimeFixHPET 选项
  • 添加 SSDT-AWAC 和 SSDT-RTC0
  • 禁用 RTC 相关的 ACPI 补丁

"等待 Root 设备"错误

可能原因

  • USB 控制器问题
  • SATA/AHCI 配置问题

解决方案

  • 确保 SATA 模式设为 AHCI
  • 检查 USB 映射
  • 尝试不同的 USB 端口
  • 添加 SATA-unsupported.kext 或 CtlnaAHCIPort.kext

IOConsoleUsers: gIOScreenLock... 卡住

可能原因:GPU 驱动问题。

解决方案

  • 检查 WhateverGreen 是否正确加载
  • 添加 igfxonln=1 boot-arg
  • 检查 iGPU framebuffer 设置
  • 对于 Navi GPU,添加 agdpmod=pikera

Navi GPU 黑屏

解决方案

  • 添加 agdpmod=pikera boot-arg
  • 确保 WhateverGreen 是最新版本
  • 尝试在 BIOS 中设置 PCIe 速度为 Gen3

macOS 登录前冻结

可能原因

  • iServices/网络问题
  • 音频驱动问题

解决方案

  • 断开网络连接尝试登录
  • 禁用 AppleALC 测试
  • 添加 -lilubetaall boot-arg

4. 用户空间问题

安装程序中 30 秒后冻结

可能原因:缺少网络连接或网络驱动。

解决方案

  • 确保以太网连接正常
  • 检查以太网 kext 是否正确加载
  • 使用 Android USB 网络共享(HoRNDIS)作为替代

安装程序无法看到磁盘

可能原因

  • 磁盘格式不正确
  • SATA/NVMe 驱动问题

解决方案

  • 确保磁盘使用 APFS 和 GUID 分区方案
  • 添加 SATA-unsupported.kext
  • 确保 NVMe 驱动器兼容

5. 安装后问题

无法登录 iServices

参考 安装后处理 → 修复 iServices

睡眠问题

参考 安装后处理 → 修复睡眠

音频问题

参考 安装后处理 → 修复音频

USB 问题

参考 安装后处理 → USB映射

关机/重启问题

可能原因

  • USB 控制器问题
  • RTC 问题
  • ACPI 问题

解决方案

  • 检查 USB 映射
  • 启用 DisableRtcChecksum
  • 添加 acpi-wake-type 属性
  • 检查 EnableResetShutdown 和相关 Quirks

内核恐慌(唤醒后)

常见错误Sleep Wake failure in efi

解决方案

  • 检查电源管理设置
  • 添加 swd_panic=1keepsyms=1 boot-arg
  • 使用 CPUFriend 调整电源管理数据
  • 检查 GPU 驱动兼容性

6. 其他问题

Windows 时间不正确

macOS 将硬件时钟视为 UTC,而 Windows 视为本地时间。

解决方案

  • 在 Windows 中添加注册表项:
    reg add "HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation" /v RealTimeIsUniversal /t REG_DWORD /d 1
    

Windows 启动条目消失

解决方案

  • 设置 Misc -> Security -> LauncherOptionFull
  • 或将 OpenShell.efi 添加到 Tools 中手动启动

键盘/触控板不工作

解决方案

  • 确保使用正确的输入 kext(VoodooPS2/VoodooI2C 等)
  • 检查 kext 加载顺序
  • 检查触控板连接类型(PS2/I2C/SMBus/USB)

7. 调试方法

启用 OpenCore 日志

  1. 使用 DEBUG 版本的 OpenCore
  2. 在 config.plist 中设置:
    • Misc -> Debug -> Target67(屏幕+文件+串口)
    • Misc -> Debug -> DisplayLevel2147483650
  3. 日志将保存到 EFI 根目录的 opencore-YYYY-MM-DD-HHMMSS.txt

读取内核恐慌日志

  1. 添加 keepsyms=1debug=0x100 到 boot-args
  2. 内核恐慌信息将显示在屏幕上
  3. 日志也会保存在 /Library/Logs/DiagnosticReports/

使用 IORegistryExplorer

下载 IORegistryExplorer 检查设备是否正确加载。

常用终端命令

# 检查 kext 是否加载
kextstat | grep -i "Lilu|AppleALC|WhateverGreen"

# 检查 NVRAM
nvram -p

# 检查电源管理
pmset -g

# 检查 USB
system_profiler SPUSBDataType

# 检查音频
system_profiler SPAudioDataType

8. 高阶功能:ACPI 补丁

什么是 ACPI

ACPI(高级配置与电源接口)是硬件和操作系统之间的接口层。macOS 对 ACPI 有特定要求,许多 PC 的 ACPI 实现与 macOS 不兼容,需要通过 SSDT 进行修补。

常用 SSDT 详解

SSDT-PLUG — CPU 电源管理

  • 作用:让 macOS 找到 CPU 的第一个线程,启用 XCPM
  • 适用:Haswell 及更新的 Intel 台式机/HEDT
  • 位置:CPU 的第一个线程(通常为 _PR.CPU0_PR.PR00
  • macOS 12.3+ 不再需要此 SSDT

SSDT-EC-USBX — 嵌入式控制器和 USB 电源

  • 作用
    • 伪造嵌入式控制器设备,让 macOS 的 AppleACPIEC 能正确加载
    • 设置 USB 电源属性
  • 适用:Skylake 及更新的所有系统

SSDT-AWAC — 禁用 AWAC 启用 RTC

  • 作用:禁用 AWAC 时钟,启用 RTC 时钟
  • 适用:Coffee Lake 及更新的主板(默认使用 AWAC)
  • 替代:SSDT-RTC0(创建假系统时钟)

SSDT-PMC — NVRAM 支持

  • 作用:为消费者 300 系列主板启用 NVRAM 支持
  • 适用:Z390、H370、B360、H310
  • 注意:Z490 及以上不需要

SSDT-RHUB — 重置 USB 根集线器

  • 作用:重置 USB 端口
  • 适用:Comet Lake、华硕 400 系列主板

SSDT-CPUR — AMD B550/A520 CPU 支持

  • 作用:解决 AMD B550/A520 主板的 CPU 定义问题
  • 适用:AMD B550 和 A520 主板

SSDT-PNLF — 背光控制

  • 作用:为笔记本提供背光控制
  • 适用:所有笔记本
  • 注意:桌面机不需要

SSDT-GPI0 — I2C 触控板

  • 作用:启用 I2C 触控板支持
  • 适用:使用 I2C 触控板的笔记本

SSDT-XOSI — OSI 修补

  • 作用:欺骗 Windows OSI 接口
  • 适用:某些需要 Windows OSI 返回值的设备

SSDT-HPET — IRQ 修复

  • 作用:修复 IRQ 冲突
  • 适用:笔记本和某些台式机
  • 推荐工具SSDTTimeFixHPET 选项

SSDT-UNC — 取消设备定义

  • 作用:防止 macOS 尝试使用未定义的设备
  • 适用:Sandy Bridge-E 和 Ivy Bridge-E HEDT

SSDT-SMBS-MCHC — SMBus 支持

  • 作用:启用 AppleSMBus,帮助正确管理 SMBus 和 PCI 设备的电源状态
  • 适用:大多数系统

SSDT 编译方法

  1. 使用 SSDTTime(推荐):自动编译并生成补丁
  2. 使用 iASL:命令行编译器
    iasl -p SSDT-PLUG SSDT-PLUG.dsl
    
  3. 使用 MaciASL:GUI 编译器

重要:源代码文件为 .dsl,编译后为 .aml。EFI 中只使用 .aml 文件。

ACPI 重命名

有时需要重命名 ACPI 设备而不是创建 SSDT。在 config.plist → ACPI → Patch 中设置:

字段 说明
Comment 补丁描述
Find 要查找的十六进制数据
Replace 替换的十六进制数据
Count 应用次数(0 = 全部)
Enabled 是否启用

⚠️ 注意:尽量避免 ACPI 重命名,优先使用 SSDT 方式。重命名会影响所有操作系统。


9. 高阶功能:GPU 补丁

Intel iGPU 补丁

BusID 修补

Coffee Lake 及更新的 iGPU 需要通过 WhateverGreen 手动修补 BusID。

步骤

  1. 确定 iGPU 的 ig-platform-id(桌面/笔记本不同)
  2. 使用 gfxutil 查找 iGPU 的 PciRoot
  3. 在 DeviceProperties 中设置 ig-platform-idframebuffer-patch-enable
  4. 根据连接类型设置 BusID

常见 ig-platform-id

平台 ig-platform-id 说明
Coffee Lake 桌面 3E9B0007 UHD 630 头显
Coffee Lake 桌面 3E920007 UHD 630 替代
Coffee Lake 笔记本 3E910003 UHD 630 笔记本
Kaby Lake 桌面 19120000 HD 630
Skylake 桌面 191B0000 HD 530

设置 ig-platform-id

设置 device-id

Connector 修补

修改 iGPU 的连接器类型(HDMI/DP/DVI)以匹配实际硬件。

VRAM 修补

某些 iGPU 需要修补 VRAM 大小信息。

遗留 Intel GPU 补丁

  • Iron Lake 到 Sandy Bridge 需要特殊补丁
  • 使用 WhateverGreen 的遗留补丁功能

NVIDIA GPU 补丁

Kepler GPU(macOS 12+)

Kepler GPU 在 Monterey 中不再受支持,需要社区补丁:

遗留 NVIDIA GPU

Maxwell 和 Pascal GPU 仅支持到 High Sierra,需要 NVIDIA Web 驱动。

禁用不支持的 dGPU

桌面机

通过 SSDT 禁用不支持的 dGPU:

  1. 找到 dGPU 的 ACPI 路径
  2. 创建 SSDT 禁用该设备(_OFF 方法)
  3. 或使用 -wegnoegpu boot-arg

笔记本

笔记本的 dGPU 断电更复杂:

  1. 需要创建 SSDT 实现 _OFF_ON 方法
  2. 需要处理 SSDT-DGPU 和背光切换
  3. 参考 Getting Started With ACPI

GPU 启动参数

参数 说明
agdpmod=pikera 禁用 Navi GPU 的 board-id 检查
igfxonln=1 强制所有显示器在线
forceRenderStandby=0 禁用 RC6 渲染待机
-noDC9 禁用 DC9(Ice Lake)
-wegnoegpu 禁用所有外部 GPU
gfxrst=1 GPU 重置模式

10. Clover 转 OpenCore

为什么转换

  • Kext 不再针对 Clover 测试
  • OpenCore 更稳定、更安全
  • 更好的多操作系统支持

转换步骤

  1. 备份现有 Clover EFI
  2. 创建新的 OpenCore EFI(不要尝试从 Clover EFI 转换)
  3. 转换 config.plist
    • Clover 的 ACPI 补丁需要手动迁移
    • Clover 的 BootArgs 转换为 OpenCore 的 boot-args
    • Clover 的 DevicesProperties 转换为 DeviceProperties
  4. Kext 迁移
    • 大多数 kext 兼容 OpenCore
    • 某些 Clover 专用 kext 需要替换
  5. 驱动转换
    • Clover 的 UEFI 驱动不兼容 OpenCore
    • EmuVariableUEFI → 不需要
    • AptioMemoryFix → OpenRuntime.efi
    • HFS 驱动 → HfsPlus.efi

Clover 启动参数转换

Clover 参数 OpenCore 对应
-v boot-args: -v
-x 不支持,使用安全模式启动
nv_disable=1 boot-args: nv_disable=1
nvda_drv=1 不需要

Clover ACPI 补丁转换

Clover 的 ACPI 自动补丁在 OpenCore 中需要手动实现:

  • IRQ 修复 → 使用 SSDTTime
  • RTC 修复 → 使用 SSDT-AWAC/SSDT-RTC0
  • 音频重命名 → 让 AppleALC 处理
  • CPU 重命名 → 不需要

⚠️ 重要:使用 OpenCore 安装时请重置 NVRAM,许多 Clover 变量可能与 OpenCore 和 macOS 冲突。

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇