【问题标题】:Loading KEXT without rebooting on Big Sur在 Big Sur 上加载 KEXT 而无需重新启动
【发布时间】:2021-10-07 13:54:47
【问题描述】:

根据Apple,在加载(或更新 KEXT)时需要重启 macOS。我已经禁用了 SIP。但是,重新启动仍然很麻烦,尤其是对于开发而言。我知道 KEXT 已被弃用,并且必须重建 KEXT 缓存。但是,是否有一些(未记录的)可能性来加载/更新 KEXT 而无需重新启动?

我做了一些研究并尝试了一些boot-args 选项但没有成功。

【问题讨论】:

    标签: macos kernel macos-big-sur kernel-extension


    【解决方案1】:

    不,从 Big Sur 开始,所有可加载的 kext 都链接到一个预先链接的内核映像中,并且在启动期间达到某个阶段后,无法将内核页面标记为可执行。

    尝试加载不在该图像中的 kext 会将其添加到要包含在预链接图像中的列表中。然后重新启动会加载新的预链接内核。

    是的,这很烦人,但是没有,除了在不专门处理 11.0/Big Sur 问题时使用 10.15/Catalina 进行调试/测试之外,没有其他解决方法。

    【讨论】:

    • 是否可以将 kext 直接加载到启动卷中,而不是让操作系统来做?我有一个安装程序没有正确加载 kext(无限需要重新启动,但似乎从未真正加载过 kext)
    • @Demis 我认为,如果我理解正确,您的问题的直接答案基本上是否定的,但这并不意味着您遇到的根本问题没有解决方案。我建议您提出一个新问题,并提供您可以提供的有关您的 kext 的所有详细信息以及您遇到的问题的更详细说明。如果你用 iokit 和 kernel-extension 标签标记它,我一定会看到它。
    • 谢谢,我确实想出了一种不那么复杂的方法来让我损坏的软件(谷歌驱动器(上一个文件流))工作 - 结果禁用其他 KExt 解决了它,表明旧的/冲突的KExt 是问题所在(与 Mac OS 7/8/9 的“扩展”完全不同!)。诸如旧打印驱动程序之类的东西。
    猜你喜欢
    • 2021-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-06
    • 2014-09-05
    • 2021-02-26
    相关资源
    最近更新 更多