MacOS下卸载System Extensions

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这个命令管理系统拓展。

于是系统提示如下:

1
2
3
At this time, this tool cannot be used if System Integrity Protection is enabled.
This limitation will be removed in the near future.
Please remember to re-enable System Integrity Protection!

没错,就是不能卸载!

原因就是系统集成保护(SIP)的锅。有了这个机制甚至root用户也不能修改与系统及系统拓展相关的文件(也就是说root用户也没法手动关闭系统拓展)。

坑啊!

解决方案其实也很明了,使用command + R进入System Recovery模式,通过csrutil命令关闭这令人又爱又恨的SIP,再正常启动卸载系统拓展就行(执行过程中有种裸奔的感觉😓)。

卸载完成后别忘了用同样的方法开启SIP!

卸载完成后别忘了用同样的方法开启SIP!

卸载完成后别忘了用同样的方法开启SIP!

重要的事情说三遍,毕竟SIP还是一个非常优秀的系统保护机制的。


(希望Apple有关解除限制的承诺能尽快兑现。

Licensed under CC BY-NC-SA 4.0