在使用WeeeCode软件时,可能会遇到串口相关问题,导致串口通信失败, 造成该问题的原因可参看如下苹果官方说明,该说明摘自:User-Approved Kernel Extension Loading
User-Approved Kernel
Extension Loading
macOS High Sierra 10.13引入了一项新功能,在加载新的第三方内核扩展之前,需要用户批准。此功能将需要更改某些应用程序和安装程序,以保留所需的用户体验。该技术说明适用于将内核扩展运送给需要安装内核扩展的用户和系统管理员的开发人员。
介绍
macOS
High Sierra 10.13引入了一项新功能,在加载新安装的第三方内核扩展(KEXT)之前,需要用户批准。当请求加载用户尚未批准的KEXT时,加载请求被拒绝。将KEXT加载失败视为硬错误的应用或安装程序需要进行更改以处理这种新情况。
升级到macOS High Sierra时,将自动授予已经存在的第三方KEXT。
请注意,批准并不能保证KEXT兼容,也不会使系统崩溃。存在此功能的原因是使用户可以更好地控制要加载的KEXT,从而可以减少紧急情况。
深入解释
此功能强制将仅将用户批准的内核扩展加载到系统上。当请求加载用户尚未批准的KEXT时,加载请求将被拒绝,并且macOS会显示图1所示的警报。
1 阻止的内核扩展
这将提示用户在“系统偏好设置”>“安全性和隐私”中批准KEXT,如图2所示。
2 加载KEXT的用户许可
该批准UI仅在警报后30分钟内出现在“安全性和隐私”首选项窗格中。在用户批准KEXT之前,将来的加载尝试将导致重新出现批准UI,但不会触发另一个用户警报。
警报显示签署了KEXT的开发人员的姓名,因此用户可以了解一些信息来决定是否批准KEXT。该名称来自用于对KEXT进行签名的Developer ID Application证书的Subject Common Name字段。因此,鼓励开发人员在请求KEXT签名身份时提供适当的公司名称。
当用户批准KEXT时,他们将同时批准由同一Team ID签名的其他KEXT:
·
如果批准的KEXT位于应用程序的捆绑软件中,则同一应用程序捆绑软件中由相同团队ID签名的所有其他KEXT也将被批准。
·
如果批准的KEXT位于应用程序的子目录内/Library/Application
Support
,则也将批准由在同一子目录中找到的具有相同团队ID签名的所有其他KEXT。
·
/Library/Extensions
由相同团队ID签名的所有KEXT 也会被批准。
一旦获得批准,KEXT将立即被加载或添加到预链接的内核缓存中,具体取决于被阻止的操作。后续加载KEXT的请求将像以前的macOS版本一样静默进行。
通过KEXT的代码签名中的团队标识符和KEXT的捆绑包标识符在系统范围的策略数据库中跟踪批准的KEXT Info.plist
,因此更新已批准的KEXT不会触发新的批准请求。
这如何影响KEXT开发人员
加载内核扩展的安装程序和应用程序可能需要进行修改,以正常处理无法加载的内核扩展。许多产品将KEXT加载失败视为硬性失败。有些提示用户重新安装,有些提示错误的消息,有些根本不起作用。
从macOS High Sierra开始,加载KEXT的安装程序和应用程序应该期望,如果用户未批准KEXT,则加载KEXT将会失败。不应将此视为错误,而应通知用户可能需要批准KEXT。
要确定KEXT是否由于未得到用户批准而无法加载,请执行以下操作:
·
如果使用kextutil
或kextload
,请检查退出代码27。此外,kextutil
还会产生错误消息System
policy prevents loading the kernel extension.
·
如果在其中使用KextManager
API IOKit/kext/KextManager.h
,请检查结果代码kOSKextReturnSystemPolicy
。
这如何影响企业应用程序分发
对于需要在不需要用户批准的情况下分发包含内核扩展的软件的企业部署中,有两种选择:
·
如果您的工作流基于映像,请启动到Recovery
OS并使用spctl kext-consent
命令。有关spctl
命令的详细信息,请运行命令spctl help
。此命令可以完全禁用用户批准要求,也可以指定一组KID无需用户批准即可加载的团队ID。该spctl
命令可在任何安装环境中使用,包括Recovery OS和NetBoot / NetInstall / NetRestore映像。
请注意,由维护的团队ID列表spctl
与系统范围的策略数据库是分开的。
·
有关利用移动设备管理(MDM)的工作流程,请参阅AppleCare支持文章“ 准备对macOS High Sierra中的内核扩展进行更改”。
重申一下,升级到macOS
High Sierra时已安装的所有第三方KEXT都会自动获得批准,不需要任何用户操作。
关于这个问题也可参考CSDN论坛博主SoldierJazz2019的博文:苹果MacOS系统上安装第三方驱动失败/无效