删除驱动程序启动的 plist 文件后使 kextcache 无效

Invalidate kextcache after removing driver launchd plist file

我已经为我的驱动程序创建了卸载程序,它从 /Library/LaunchDaemons 中删除了它匹配的 plist 文件,这样它就不会在下一个启动周期被启动时再次加载。 但是,它似乎对我的驱动程序没有任何影响,它在引导机器后仍在正常加载。

在对此事做了一些研究之后,我发现 kextcache 是造成这种行为的原因,为了 clean/invalidate 它,我需要 touch安装目标卷所在的文件夹。但是,它没有任何效果。

我的问题是如何正确地使 kext 缓存失效,以便 launchd 在删除相应的 plist 文件后不会加载 kext。

感谢下面的回答,我使 kext 缓存失效。但是,我想要等效于访问 objective-c 中的现有文件夹,这是我的卸载程序助手所基于的。

准确地说,这是我要转换为 objective-C 的代码:

sudo touch /System/Library/Extensions; sudo touch /Library/Extensions

使 kext 缓存失效的正确方法是

sudo touch /System/Library/Extensions

或 OS 支持从 /Library 加载扩展的版本:

sudo touch /Library/Extensions

一旦您这样做,kext 缓存就会自动重新生成。