点击小眼睛开启蜘蛛网特效

MacOS对第三方驱动的保护机制

《MacOS对第三方驱动的保护机制》

有点倒霉,想在mac上搞一下K210,需要串口下载程序。下载了CH341驱动(大学时期搞stm32令我魂牵梦绕的驱动),解压安装一气呵成,直接忽视了Mac系统提示的驱动安全性(User-Approved Kernel Extension Loading),强行安装了这个驱动:

macOS High Sierra 10.13引入了一项新功能,在加载新安装的第三方内核扩展(KEXT)之前,需要用户批准。 当请求加载用户尚未批准的KEXT时,加载请求被拒绝。 将KEXT加载失败视为错误的应用或安装程序需要进行更改以处理这种新情况。

升级到macOS High Sierra时,将自动授予已经存在的第三方KEXT。

请注意,批准并不能保证KEXT兼容,也不会使系统崩溃。 存在此功能的原因是使用户可以更好地控制要加载的KEXT,从而可以减少紧急情况。

《MacOS对第三方驱动的保护机制》
就这个玩意儿

然后提示重新启动…重启后电脑陷入无限的读条阶段,就是出现苹果logo以及读条器,但是读条到满了也不能进入系统,显然是系统出现问题了。

《MacOS对第三方驱动的保护机制》

第一时间定位到可能是安装了这个驱动导致的…关机通过Command+V查看输出错误信息提示apfs_keybag_init:1583,查了一些资料肯定问题是驱动安装导致。

解决方法,首先关机进行Recover模式,Command+R进入恢复模式关闭SIP,也就是打开顶部的实用工具,进入终端,输入csrutil disable,关闭Mac的系统完整保护。

第二步,关机重启使用Command+S的命令进入单用户模式,此时是命令行界面,执行:

mount -uw /

然后寻找到安装的冲突的驱动:

cd /System/Library/Extensions

可以发现这个目录中有一个叫做AppleUSBSerial.kext的文件夹,这个文件夹就是罪魁祸首,至于CH340的串口驱动为什么叫做这个,我猜的。

保险起见,不用强行删除,只需要将名称修改即可:

mv AppleUSBSerial.kext AppleUSBSerial.kext.bak

重新启动后,系统即可以正常开机了!

后记

Mac系统对于驱动的存放位置据网上资料有 /System/Library/Extensions 或 /Library/Extensions 或 ~/Library/Extensions 三个存放位置,但是在进行单用户模式时对发现/Library/Extensions 这个地址也存在usbserial.kext这个驱动,看CH340 MAC驱动使用教程这篇文章中说CH340的驱动存在于这两个位置。但是对于/Library/Extensions下的kext文件无论如何是无法进行读写的,也就是无法进删除或者重命名,因为MacOS 15系统将系统区域划分为两块,其中系统的那块是可读的状态,关闭SIP也无法进行修改,/Library/Extensions/usbserial.kext文件也是无法删除了。

再提一句,当使用debug模式也就是Command+V模式开启MAC时,如果此时系统正常,可以输出verbose文本信息后直接进入系统。

  点赞
本篇文章采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可
转载请务必注明来源: https://oldpan.me/archives/macos-third-party-driver-ch340

   欢迎关注Oldpan博客微信公众号,同步更新博客深度学习文章。


发表评论

电子邮件地址不会被公开。 必填项已用*标注

评论审核已启用。您的评论可能需要一段时间后才能被显示。