我正在更新其中一台设备的驱动程序,并希望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/