删除驱动程序启动的 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 缓存就会自动重新生成。
我已经为我的驱动程序创建了卸载程序,它从 /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 缓存就会自动重新生成。