TN2459:https://developer.apple.com/library/content/technotes/tn2459/_index.html介绍在macOS下,需要高额用户批准才能加载新的第三方内核扩展。
我要测试的kext已经在升级到High Sierra之前加载,因此升级后加载相同的kext不会触发我想要测试的用户批准流程。< / p>
启用了内核扩展用户同意:
$ spctl kext-consent status
Kernel Extension User Consent: ENABLED
我在恢复模式下删除了与 / private / var / db / SystemPolicyConfiguration / KextPolicy 中 kext_policy 表中的kext对应的条目,并重启了几次。但是当我加载kext时,仍然没有触发用户批准流程。
我想知道政策信息是否在其他地方缓存,如果我需要为我的机器清除NVRAM或告诉syspolicyd清除其缓存?或者还有其他事情我需要做什么?
答案 0 :(得分:1)
简而言之,您必须以恢复模式(Mac+R
)启动并编辑sqlite表/private/var/db/SystemPolicyConfiguration/KextPolicy
。
在正常引导下,该表可通过只读模式访问:
sqlite3 /private/var/db/SystemPolicyConfiguration/KextPolicy
sqlite> SELECT * FROM kext_policy;
sqlite> SELECT * FROM kext_load_history_v3;
您必须删除条目(恢复模式)并重新启动,就像这样(用team_id替换'G43BCU2T37'):
sqlite> DELETE FROM kext_policy WHERE team_id = 'G43BCU2T37';
sqlite> DELETE FROM kext_load_history_v3 WHERE team_id = 'G43BCU2T37';
sqlite> .exit
为避免每次都重新引导,可以更改“系统完整性保护”配置(在恢复模式下):csrutil enable --without fs --no-internal
。现在kext_policy
可以从正常引导更改。
此处描述了整个过程:https://forums.developer.apple.com/thread/79172#248518。
答案 1 :(得分:0)
能够使用高sierra vm进行测试。安装vm的完整步骤是:https://www.howtogeek.com/289594/how-to-install-macos-sierra-in-virtualbox-on-windows-10/