macOS 管理 kext 需区分已注册、已加载、签名有效、权限合规四状态;通过 sudo kextstat 查第三方扩展,codesign -dv 验签,sudo kextunload 卸载后删除文件并清缓存,授权需在系统设置中手动允许。
macos 中管理内核扩展(kext)主要靠终端命令,核心在于区分“已注册”“已加载”“签名有效”“权限合规”四个状态。操作前请确认你有管理员权限,且非必要不随意卸载系统级 kext——尤其是涉及磁盘控制器、usb 主机或安全模块的组件。
查看当前正在运行的第三方内核扩展
Apple 官方扩展默认被过滤掉,聚焦真正可能带来影响的第三方驱动:
- 打开终端,执行:sudo kextstat | grep -v com.apple
- 输出中每行包含扩展名、版本、Bundle ID(如 com.realtek.driver.RTKNetwork)和加载地址
- 若某条目显示 not valid 或路径指向临时目录(如 /var/folders/...),大概率是残留或失效扩展
验证某个 kext 的签名与完整性
签名失效是 macOS Sonoma 及更新系统中 kext 加载失败的最常见原因:
- 先定位扩展路径,常见位置为 /Library/Extensions/xxx.kext
- 执行:codesign -dv /Library/Extensions/xxx.kext
- 关注输出中是否含 code object is not signed、signature failed 或证书过期提示
- 若签名无效,该 kext 在重启后通常无法自动加载,需联系厂商更新或手动修复
安全卸载并清理无效 kext
卸载 ≠ 删除。必须先停用再移除文件,否则可能在下次启动时重载:
- 停用运行中的扩展:sudo kextunload -b com.xxx.driver.Name(用上一步查到的 Bundle ID)
- 确认已卸载:kextstat | grep com.xxx 应无输出
- 删除文件夹:sudo rm -rf /Library/Extensions/xxx.kext
- 清空缓存(可选但推荐):sudo kextcache -i /,避免旧索引残留
检查系统是否允许加载该类扩展
macOS 10.15 起对 kext 实施严格策略,即使签名有效,也需用户手动授权:
- 查看授权记录:sudo sqlite3 /var/db/SystemPolicyConfiguration/KextPolicy "SELECT * FROM kext_policy"
- 若未列出目标 Bundle ID,说明从未被批准;需重启后在“系统设置 → 隐私与安全性 → 安全性”中点击“允许”
- 注意:该授权窗口仅在首次加载失败后 30 分钟内出现,错过需重启触发


















