使用OpenCore Legacy Patcher工具在macOS Sonoma中重新打开不被支持的博通Wi-Fi无线网卡的正确插入姿势

使用OpenCore Legacy Patcher工具在macOS Sonoma中重新打开不被支持的博通Wi-Fi无线网卡的正确插入姿势

适用于: OCLP >=0.6.9 (Sonoma 开发分支)

技术背景

在macOS Sonoma开发的早期阶段,负责使用旧Wi-Fi卡的kext和框架被删除,使得常用的BT / Wi-Fi卡的Wi-Fi部分处于非工作状态

以下 Wi-Fi 卡芯片组受到影响:

  • 现代的:
    • Broadcom:BCM94350 (也包括 BCM94352) / BCM94360 / BCM43602 / BCM94331 / BCM943224
    • 必需的 Kexts: IOSkywalkFamily / IO80211FamilyLegacy / AirPortBrcmNIC / AirportBrcmFixup / AirPortBrcmNIC_Injector
  • 旧版的 :
    • Atheros: AR928X / AR93xx / AR242x / AR542x / AR5418 / AR5416 (苹果好像从未用过它)
    • Broadcom: BCM94322 / BCM94328
    • 必需的 Kexts: corecaptureElCap / IO80211ElCap / AirPortAtheros40 (只适用于Atheros)

多亏了Dortania的 OpenCore Legacy Patcher,可以通过注入所需的kexts以及使用OCLP修补系统中的文件来重新启用这些Wi-Fi卡。如果您想了解 OCLP Wi-Fi 修补的工作原理,请查看这篇文章

由于macOS Sonoma的补丁程序仍在开发中,因此在当前的公开版本(0.6.8)上不提供修补Wi-Fi的功能。最重要的是,修补Wi-Fi的能力是基于检测真实Mac中使用的Wi-Fi / BT卡的兼容设备ID / IONames。因此,在Wintel系统上,如果补丁程序没有检测到Apple使用的卡,则补丁程序将不会显示修补Wi-Fi的选项。

尽管 OCLP 允许在应用程序中设置某些功能,但手动启用 Wi-Fi 修补的选项尚未在应用程序的 GUI 中实现。因此,我们必须在源代码中手动强制启用它,然后编译自定义版本的 OCLP 以应用 Wi-Fi 根补丁(方法 1)

方法1: 在 OpenCore Legacy Patcher 中强制启用 Wi-Fi 修复补丁

1. 先决条件

要使“现代”和“旧版”无线在macOS Sonoma中正常工作,必须满足以下先决条件(在beta 5上测试):

  1. 如果您的系统不受 macOS 文图拉及更高版本(第 7 代英特尔 Kaby Lake 之前的所有系统)的支持,您需要先按照 CPU 系列的配置指南准备配置和 EFI

  2. 通过以太网连接系统以访问互联网。这应该是显而易见的,因为 Wi-Fi 在此阶段不起作用…

  3. 启用macOS安装应用允许任何来源

    1
    sudo spctl --master-disable
  4. 安装 Python。我们需要它来构建和运行 OpenCore Legacy Patcher 的修改版本,以强制启用Wi-Fi补丁

  5. 通过终端安装命令行工具。构建 OCLP 也需要它:

    1
    xcode-select --install
  6. 由于我们在这里使用的是测试版软件,因此强烈建议使用 OpenCore 的最新夜间自动构建版本以及您正在使用的所有kext,以最大限度地提高兼容性。这可以通过将OCAT切换到DEV模式并更新 OpenCoreKexts 来实现,或者通过从多塔尼亚下载最新版本并手动应用更新(繁琐)。

重要说明:如果您进行了最新 Sonoma beta abd 的全新安装,则未从已安装命令行工具的现有安装进行更新,则在尝试通过终端安装时,如果更新服务器上不存在该文件,您可能会收到错误消息。在这种情况下,您需要从Apple的开发人员站点下载安装程序(您需要一个帐户)。它位于:https://developer.apple.com/download/all/

2. 配置和EFI调整

将以下更改应用于您的配置文件(或从plist示例复制它们),并将列出的kexts添加到 EFI/OC/Kexts 文件夹中:

请使用工具 OCAT ,将 OpenCore 版本更新到 v0.9.5 ,打开配置文件: config.plist

  • Kernel -> Add
    • 引入 RestrictEvents.kext
    • 引入 AMFIPass.kext,设置 MinKernel23.0.0
    • 引入 IOSkywalkFamily.kext ,设置 MinKernel23.0.0
    • 引入 IO80211FamilyLegacy.kext 以及 AirPortBrcmNIC.kext ,设置 MinKernel23.0.0

OCLP1

  • Kernel -> Block

    • 阻止 IOSkywalkFamilyIdentifier填写:com.apple.iokit.IOSkywalkFamilyEnabled 设置为 trueMinKernel 设置为: 23.0.0

    OCLP2

  • NVRAM -> Add

    • 7C436110-AB2A-4BBB-A880-FE41995C9F82
      • boot-args 中添加引导参数:ipc_control_port_options=0
        • 备注:ipc_control_port_options=0 为可选项,它对某些Electron及应用有治愈作用,比如百毒云盘、天翼云盘
      • csr-active-config 数据类型设置为:Data,值为:7F0A0000

    OCLP3

  • NVRAM -> Delete

    • 7C436110-AB2A-4BBB-A880-FE41995C9F82
      • 确保添加:boot-args
      • 确保添加:csr-active-config
  • Misc -> Security

    • SecureBootModel -> Disabled
  • 保存配置文件:config.plist,退出 OCAT

请使用工具:OpenCore Legacy Patcher

OCLP工具下载链接

  • 打开工具:OpenCore Legacy Patcher

  • 双击 Post-Install Root Patch按钮

    OCLP4

  • 如果 Networking: Modern WirelessNetworking: Legacy Wireless的打补丁选项可用,请点击:Start Root Patching 按钮

    OCLP5

  • 在弹出的窗口中点击 Yes

    OCLP6

  • 出现 Root Patching 窗口,请耐心等待补丁执行完成

    OCLP7

  • 补丁执行完,在弹出的窗口按 Reboot 重启即可

    OCLP8

故障排除提示

  • 下载并打开 IORegistryExplorer
  • 搜索 ARPT
  • 高亮显示 ARPT 条目,并在右侧列表中查找属性 IOName
  • 如果列出的 IOName 与您通过 DeviceProperties 注入的相同,则欺骗工作正常,问题可能是其他方面引起的。
  • 如果仍然显示原始的 IOName,则欺骗不起作用。

解决OpenCore Legacy Patcher执行Root Patching后卡住的问题

问题原因分析

在执行Root Patching(根补丁)过程中系统卡住,通常是由于以下原因导致:

  • 内核扩展(KEXT)注入失败或冲突
  • 系统快照(Snapshot)损坏
  • 补丁过程被意外中断
  • 文件权限或磁盘挂载问题

你提供的步骤是通过恢复模式修复系统快照并清理冲突的KEXT文件,这是解决此类问题的有效方法。下面我将详细解释并补充一些关键点:

详细操作步骤

1. 进入恢复模式
  • 在OCLP启动选择器中选择你的磁盘,按下空格键
  • 若启动选择器被隐藏,开机时按住ESC键直到出现选择菜单
  • 进入Recovery模式
2. 在实用工具中打开终端并挂载系统磁盘
1
2
3
4
5
# 查看所有挂载的卷,确认系统磁盘名称
ls /Volumes

# 挂载系统磁盘(将"Macintosh HD"替换为你的实际磁盘名称)
mount -uw "/Volumes/Macintosh HD"

注意事项:

  • -u参数表示更新现有挂载点
  • -w参数表示以可写模式挂载
  • 如果提示权限错误,尝试先执行sudo -s切换到root用户
3. 还原系统快照
1
2
# 还原到最后一次密封的系统快照
bless --mount "/Volumes/Macintosh HD" --bootefi --last-sealed-snapshot

此命令会将系统引导设置恢复到补丁前的状态,解决因补丁导致的启动问题。

4. 清理冲突的内核扩展(KEXT)(该项可忽略)
1
2
3
4
5
6
7
8
9
10
# 进入KEXTs目录
cd "/Volumes/Macintosh HD/Library/Extensions"

# 列出所有KEXT文件
ls

# 删除除HighPoint外的所有KEXT文件(逐个删除,避免误操作)
rm -rf com.example.kext1
rm -rf com.example.kext2
# ...以此类推

安全提示:

  • 不要直接使用rm -rf *删除所有文件,这可能导致系统崩溃
  • HighPoint相关KEXT通常是第三方磁盘控制器驱动,一般不会导致启动问题
  • 删除前建议使用kextstat命令在正常系统中查看哪些KEXT是必要的
5. 重启系统
1
reboot

补充建议

  1. 备份重要数据
    在执行任何系统级修改前,建议通过Time Machine或其他方式备份数据。

  2. 检查磁盘健康状态
    在恢复模式中打开"磁盘工具",选择系统磁盘并运行"急救"功能,确保磁盘无错误。

  3. 使用OCLP的卸载功能
    如果OCLP仍可运行,尝试使用其内置的"Unpatch"或"卸载补丁"功能,这可能比手动操作更安全。

  4. 更新OCLP到最新版本
    访问OCLP官方网站下载最新版本,旧版本可能存在已知的补丁问题。

  5. 检查系统兼容性
    确认你的Mac型号和macOS版本确实支持OCLP,某些老旧设备可能存在硬件限制。

常见问题解答

问题描述解决方法
mount命令失败尝试先执行diskutil apfs unlockVolume /dev/diskXsY解锁APFS卷
bless命令报错检查磁盘是否已正确挂载为可写模式
找不到KEXT文件可能补丁尚未写入KEXT,尝试直接重启并重新运行补丁
重启后仍无法启动尝试进入安全模式(开机按住Shift),然后重新应用补丁

通过以上步骤,你应该能够解决Root Patching卡住的问题,并将系统恢复到可正常启动的状态。如果问题仍然存在,建议在OCLP的GitHub仓库或相关论坛提交详细的错误日志以获取进一步帮助。

解决OpenCore Legacy Patcher安装中SystemVersion.plist build version mismatch错误的方法

错误原因分析

该错误通常表示系统版本信息与OpenCore Legacy Patcher(简称OCLP)的补丁要求不匹配,可能是由于系统更新缓存、版本描述文件冲突或补丁程序检测到异常版本信息导致。以下是具体解决步骤:

解决步骤

  1. 打开终端执行命令清除冲突文件
    这些命令将删除与系统版本检测相关的缓存和配置文件,消除版本不匹配的检测冲突:

    1
    2
    3
    sudo rm -rf /System/Library/AssetsV2/com_apple_MobileAsset_MacSoftwareUpdate/
    sudo rm -rf /System/Volumes/Update/Update.plist
    sudo rm -rf /System/Volumes/Update/Preflight.plist
    • 输入命令时需注意:
      sudo命令需要输入管理员密码(输入时屏幕不会显示,输完直接回车即可)
      ✅ 路径需严格按照格式输入,避免空格或符号错误
  2. 重启系统
    重启会使系统重新加载配置,确保清除的文件生效。

  3. 重新执行Post-Install Root Patch

    • 打开OCLP工具,进入PatchesPost-Install选项卡
    • 找到Root Patch系统根补丁选项,重新运行该补丁程序
    • 补丁执行过程中需保持电脑不中断,等待进度条完成

补充说明

  • 适用场景:该方法主要适用于macOS系统因版本缓存异常导致的OCLP补丁失败,尤其在老旧Mac升级系统或手动修改版本信息后容易出现。
  • 替代方案:若上述方法无效,可尝试:
    1. 检查OCLP是否为最新版本(官网https://dortania.github.io/OpenCore-Legacy-Patcher/下载最新版)
    2. 手动修改/System/Library/CoreServices/SystemVersion.plist中的版本信息(需谨慎操作,避免破坏系统)
    3. 重置NVRAM/PRAM(开机按Command+Option+P+R直到听到两次启动音)
  • 风险提示:删除系统文件有潜在风险,建议提前备份重要数据,操作时严格按照命令执行,避免误删其他文件。

常见问题

问题现象可能原因解决建议
命令执行提示"Permission denied"权限不足确认密码正确,或尝试使用su切换 root 用户
重启后补丁仍失败系统版本检测文件未完全清除检查路径是否正确,或使用ls命令确认文件是否存在
OCLP工具报错其他版本问题系统内核或驱动冲突尝试安全模式启动(开机按Shift)后再执行补丁

通过以上步骤,通常可以解决因系统版本信息冲突导致的OCLP安装错误。如果问题持续,建议在OCLP社区或技术论坛提供具体日志进一步排查。

注意事项

  • 请记住,一旦应用了根补丁,增量系统更新将不再起作用。相反,将下载完整的 macOS 安装程序(≈13 GB)。有一个解决方法,可以暂时使增量更新起作用。
  • 一旦正式发布 macOS Sonoma 版本的官方 OpenCore Patcher,并且在 GUI 中启用了根补丁的 Wi-Fi 功能,或者在 Wintel 机器上使用的卡的检测工作得更好,可能就不再需要这个解决方法了。毕竟,OpenCore Legacy Patcher 是为真实的 Mac 设备编写的。

致谢

  • Acidanthera 提供 OpenCore 和 Kexts
  • Dortania 提供 OpenCore Legacy Patcher
  • Acquarius13 找出了 OCLPs 源代码的编辑方法
  • deeveedee 告诉我使用 brcmfxbeta 启动参数以及伪造兼容的 IOName 的方法。
黑果小兵 wechat
微信扫一扫,订阅/直达【黑果小兵的部落阁】
更新日期更新日期2023-09-222023-09-22
-------------本文结束感谢您的阅读-------------
如果文章对您有帮助,就请站长喝杯咖啡吧 ´◡`
0%