我正在更新其中一台设备的驱动程序,并希望kextunload旧的驱动程序并kextload新的驱动程序,因此不再需要重新启动。

安装后,我尝试:

sudo kextunload /System/Library/Extensions/Driver.kext

发生的错误如下所示:



该设备不在ioreg中。
我如何找出这个实例是什么导致我无法卸载驱动程序?

最佳答案

如果您调用命令 kextstat ,它将显示所有已加载的内核扩展的列表,其中包含如下信息:



第一个数字(115)是内核扩展的ID。

最后,数字集是此特定kext所引用的其他内核扩展id。

如果您将kext的ID与另一个中列出的ID匹配,则这是kextunload所引用的引用。

还要注意,在内核中编写任何代码时,全局变量在整个内核中都是全局变量,因此,如果您声明的任何变量都可能没有唯一的名称并且被另一个kext使用,我发现这会引起类似的问题。此处的解决方案是在所有全局变量前添加反向公司URI(例如com_apple_globalVarName)。

关于macos - 卸载仍然有实例的kext,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17345305/

10-10 02:35
查看更多