macos通过system_profiler、kextstat和ioreg分层查看驱动状态:先查物理设备识别,再查已加载kext,最后验证i/o kit绑定关系,并用log命令定位加载失败原因。
macos 不像 windows 那样提供统一的“驱动列表”概念,它的硬件支持由内核扩展(kext)和 i/o kit 驱动框架实现,且多数驱动已深度集成进系统,不对外暴露为传统意义上的“可安装驱动”。终端中无法直接列出“所有底层驱动加载表”,但可通过组合命令分层查看关键驱动状态:物理设备识别、内核扩展加载、i/o 设备树绑定关系。
确认设备是否被内核识别为物理实体
这是驱动加载的前提。若设备连物理节点都没注册,后续驱动无从谈起:
- USB 设备:运行 system_profiler SPUSBDataType,查看设备是否出现在完整拓扑中,重点关注 “Product ID”、“Vendor ID”、“Driver Installed” 字段
- SATA/NVMe/Thunderbolt:运行 system_profiler SPSerialATADataType 或 system_profiler SPThunderboltDataType
- 通用块设备(如硬盘、SD卡):执行 ioreg -p IOService -n "IOBlockStorageDevice" -w 0,有输出说明已识别为可读写块设备
检查已加载的内核扩展(KEXT)
KEXT 是 macOS 中最接近“底层驱动”的模块。注意:macOS Catalina(10.15)起禁用未签名第三方 KEXT,Ventura 及更新版本默认不显示未启用或未授权的条目:
部署和使用军舰的 macOS Automator 自动化服务集合。包含 5 个实用工作流:PDF转JPG、PNG重命名并转JPG、图像拼接、解压RAR、顺序命名图像文件。一键安装所有服务到 ~/Library/Services/ 目录。使用场景:(1) "安装我的自动化服务",(2) "部署所有 Automato...
- 列出全部已加载 KEXT(含 Apple 官方):kextstat
- 只看非 Apple 的第三方 KEXT:kextstat | grep -v com.apple
- 按名称搜索特定驱动(如 Realtek 网卡):kextstat | grep -i realtek
追踪设备与驱动的绑定关系
即使 KEXT 已加载,也不代表它正在服务你的设备。需验证 I/O Kit 是否完成匹配:
- 查 USB 设备是否被正确归类:ioreg -p IOUSB -l | grep -A5 -B5 "Product Name"
- 查某设备是否绑定了存储驱动:ioreg -r -n "IOBlockStorageDevice" | grep -A3 -B3 "driver"
- 查看某个具体设备的完整驱动链(替换 IOUSBHostDevice 为实际设备名):ioreg -n IOUSBHostDevice -w 0
结合日志定位加载失败点
驱动未生效时,内核日志是最直接证据:
- 查看最近 5 分钟与 USB/SD 卡相关的内核事件:log show --predicate 'subsystem contains "AppleUSBCardReader" || subsystem contains "AppleSDXC" || process == "kernel"' --last 5m
- 搜索关键词快速筛查:log show --last boot | grep -i "attach\|failed\|unsupported\|probe"
- 过滤出明确报错的行:log show --last boot --level error | grep -i driver










