终端是管理macOS内核扩展最直接方式,可用kextstat查看加载状态、kextload/unload手动操作、kextutil验证签名,并通过sqlite3、spctl、codesign检查授权与签名,结合csrutil确认SIP状态。
终端是管理 macos 内核扩展(kext)最直接、最底层的方式,尤其适合排查冲突、审计安全或批量操作。它不依赖图形界面,结果反映系统真实加载状态,但需注意权限和系统限制。
查看当前已加载的全部内核扩展
运行以下命令可列出所有正在运行的 KEXT,包括 Apple 官方和第三方:
- kextstat —— 显示完整列表,含加载地址、引用计数、大小、版本及 Bundle ID
- kextstat | grep -v com.apple —— 过滤掉 Apple 自带扩展,只看第三方(如 NTFS 工具、虚拟机驱动等)
-
kextstat -l | grep -i "your_keyword" —— 按关键词快速定位(例如
ntfs、vmware、parallels)
手动加载或卸载指定内核扩展
仅适用于已签名、未被 SIP 阻止且满足系统策略的 KEXT。操作前请确认扩展路径(通常在 /Library/Extensions/ 或 /System/Library/Extensions/):
- sudo kextload /path/to/xxx.kext —— 加载单个扩展(需 root 权限)
- sudo kextunload /path/to/xxx.kext —— 卸载已加载的扩展(若被其他模块依赖,会提示失败)
- sudo kextutil -t /path/to/xxx.kext —— 仅验证签名与兼容性,不实际加载(推荐加载前必做)
检查 KEXT 签名与审批状态
macOS 要求第三方 KEXT 必须经用户批准才能加载,该记录存于系统策略数据库中:
- sudo sqlite3 /var/db/SystemPolicyConfiguration/KextPolicy "SELECT * FROM kext_policy;" —— 查看哪些团队 ID 和 Bundle ID 已获用户授权
- spctl --assess --type execute /path/to/xxx.kext —— 检查扩展是否通过 Gatekeeper 评估(返回“accepted”表示签名有效)
- codesign -dv --verbose=4 /path/to/xxx.kext —— 查看详细签名信息,包括开发者 ID、Team ID、证书有效期
配合 SIP 状态判断行为逻辑
系统完整性保护(SIP)直接影响 KEXT 是否能加载。终端可快速确认其状态:
- csrutil status —— 显示当前 SIP 状态(enabled 或 disabled)
- 若显示 enabled,即使扩展已签名并获用户批准,某些类型(如 I/O Kit 驱动)仍可能被拦截
- 若需临时调试,可在恢复模式中执行
csrutil disable,但日常使用强烈建议保持启用


















