删除内核扩展和系统扩展

这几年macOS的安全性要求越来越高,Apple Silicon的Mac电脑发布后,已经默认取消了对第三方内核扩展(Kernel Extension)的支持;此外,Big Sur开始也强化对系统扩展的限制。但是,仍然有部分设备由于各种原因还没彻底完善驱动,比如Apogee系列产品,安装驱动软件时需要手工降低安全性要求,加载Kernel Extensions。这就带来一个问题,删软件的时候会删不干净。稍微搜索了一轮,终于找到了位置。

内核扩展

首先,到/Library/StagedExtensions/Library/Extensions/这个路径,可以看到安装的所有第三方内核扩展。如果和我一样装了Apogee驱动的,这里是5个驱动目录。

找到地方就容易卸载了。关机后长按电源/TouhID键,启动电脑时选择进入“选项”后,在菜单栏进入“终端”:

cd /Library/StagedExtensions/Library/Extensions/
ls
rm -rf *.kext

如果只是删除某一个驱动,当然可以把最后一条指令改成特定的驱动名。

最后关闭终端并重启电脑就行了。

顺便说一句,Apogee的安装包里有卸载程序,要先运行卸载程序后再做上面的手工步骤。安装包里面信息也不太全,对Apple Silicon的电脑,建议参考官方安装文档

系统扩展

有些软件为了系统级权限等,用了系统扩展(System Extension)。它和内核扩展是不同的,内核扩展基本上是硬件驱动程序,系统扩展可能还包括网络类,比如一些代理、过滤器等。系统扩展可以用这个指令查询:

systemextensionsctl list

如果你安装了Adguard,在这里就可以看到com.adguard.mac.adguard.network-extension。同时这里会有TeamID字段。

一般来说,软件本身会管理扩展,这个扩展会跟着软件卸载干净。如果极个别情况需要手工操作,那还是上面这个指令就行(注意替换<teamID>):

systemextensionsctl uninstall <teamID>

总之,现在还在让你装内核扩展的,都是反应偏慢的厂家了。最后吐槽下,Apogee号称迭代推出了新一代的控制软件Apogee Control 2,但每次在我的电脑上打开时,都有个ApogeeMessager的进程疯狂占用CPU,唯一值得欣慰的是它只占一个核。应该有几个月了,还没看到修复的希望(外站也有抱怨的,也没官方回应),只能手工干净卸载了,反正我的Apogee Duet现在只是个备用DAC。