System Extensions是macOS的一套系统拓展机制,从macOS Catalina开始出现,具体可以参考Apple Developer的这篇介绍。
一般情况下,用户并不需要手动维护系统拓展。在拓展安装与应用卸载的过程中系统会自动检查并执行相关操作。
然而,既然有了本文就说明有那么一个问题。
What if an application fail to uninstall its own system extension?
这个问题发生在我正想卸载我的安全软件Avast Security上。
在执行卸载操作的时候,程序提示fail to uninstall
。
首先列出我的软件信息:macOS Big Sur 11.3.1、Avast Security(发文前最新版本)。
系统洁癖症如我,自然不指望厂商修复了,还是手动卸载吧。
搜索相关资料,得知macOS可以通过systemextensionsctl
这个命令管理系统拓展。
于是系统提示如下:
|
|
没错,就是不能卸载!
原因就是系统集成保护(SIP)的锅。有了这个机制甚至root用户也不能修改与系统及系统拓展相关的文件(也就是说root用户也没法手动关闭系统拓展)。
坑啊!
解决方案其实也很明了,使用command + R
进入System Recovery模式,通过csrutil
命令关闭这令人又爱又恨的SIP,再正常启动卸载系统拓展就行(执行过程中有种裸奔的感觉😓)。
卸载完成后别忘了用同样的方法开启SIP!
卸载完成后别忘了用同样的方法开启SIP!
卸载完成后别忘了用同样的方法开启SIP!
重要的事情说三遍,毕竟SIP还是一个非常优秀的系统保护机制的。
(希望Apple有关解除限制的承诺能尽快兑现。