sudo kextstat | grep -E "(storage|raid|sata|nvme|usb|thunderbolt|ahci|ata|scsi|sd|mmc|cardreader|synology|promise|wd|lacie|samsung|transcend|sandisk|seagate)" | awk '{print $6, $7}' | sort -u 可列出当前生效的所有存储相关内核扩展;再用 sudo kextstat | grep -E "com\.apple\.iokit\.(IONVMeFamily|IOAHCIFamily|IOUSBMassStorage|IOThunderboltFamily|IOSCSIArchitectureModelFamily|IOBlockStorage|IOStorage)" 验证系统核心驱动是否加载;结合 ioreg -p IOBlockStorage -r -l 查看设备与驱动的实际绑定关系,即可获得完整、实时的底层存储驱动清单。
要查看 macos 系统中所有底层存储驱动的实时加载清单,关键在于识别那些真正参与磁盘 i/o 控制的内核扩展(kext),尤其是与 sata、nvme、usb 存储、thunderbolt 存储桥接、raid 控制器等相关的模块。macos 不把“驱动”当作 windows 那样显式命名和管理,而是通过已加载的内核扩展体现——其中 com.apple.iokit 系列是系统原生存储栈,而第三方存储类 kext 通常含 storage、raid、usb、sata、nvme、厂商名(如 synology、promise、lacie)等关键词。
以下是直接、可靠、终端可执行的方法:
1. 列出所有正在运行的存储相关内核扩展(聚焦第三方 + 关键系统模块)
运行以下命令,过滤出明确涉及存储控制的 Bundle ID:
sudo kextstat | grep -E "(storage|raid|sata|nvme|usb|thunderbolt|ahci|ata|scsi|sd|mmc|cardreader|synology|promise|wd|lacie|samsung|transcend|sandisk|seagate)" | awk '{print $6, $7}' | sort -u说明:
-
kextstat显示所有已加载 kext 的状态; -
grep -E匹配常见存储协议或厂商关键词; -
$6是 Bundle Identifier(如com.promise.driver.StorX),$7是版本号; -
sort -u去重,避免同一驱动多个实例重复出现。
2. 单独检查 Apple 原生存储栈核心组件(确认是否完整)
系统级存储驱动虽被 grep -v com.apple 过滤掉,但它们是底层基础,建议主动验证是否存在:
sudo kextstat | grep -E "com.apple.iokit.(IONVMeFamily|IOAHCIFamily|IOUSBMassStorage|IOThunderboltFamily|IOSCSIArchitectureModelFamily|IOBlockStorage|IOStorage)"
常见有效模块包括:
-
IONVMeFamily:NVMe 主控制器驱动 -
IOAHCIFamily:SATA/AHCI 驱动 -
IOUSBMassStorage:USB 大容量存储类驱动(非 USB-C 桥接芯片驱动) -
IOThunderboltFamily:雷电总线与存储设备桥接支持
3. 定位 /Library/Extensions 中未加载但可能残留的存储驱动文件
很多“已安装但未启用”的存储驱动仍驻留于文件系统,可用以下命令扫描:
ls -t /Library/Extensions/ | grep -iE ".(kext)$" | while read k; do echo "$k:"; codesign -dv "/Library/Extensions/$k" 2>/dev/null | grep -q "valid on disk" && echo " ✓ 已签名有效" || echo " ⚠ 签名失效或未签名"; strings "/Library/Extensions/$k/Contents/MacOS/$(basename "$k" .kext)" 2>/dev/null | grep -iE "(storage|raid|nvme|sata|usb)" | head -1 | sed 's/^/ → /'; done | grep -A1 "✓|⚠"
该命令会:
部署和使用军舰的 macOS Automator 自动化服务集合。包含 5 个实用工作流:PDF转JPG、PNG重命名并转JPG、图像拼接、解压RAR、顺序命名图像文件。一键安装所有服务到 ~/Library/Services/ 目录。使用场景:(1) "安装我的自动化服务",(2) "部署所有 Automato...
- 按修改时间排序列出所有
.kext; - 检查签名有效性;
- 抽取二进制中是否含存储关键词(辅助判断用途);
- 仅显示签名状态异常或含关键词的条目,减少噪音。
4. 补充验证:用 ioreg 查看实际挂载的存储设备所绑定的驱动类
例如,对某块外置 SSD,先查其 IOService 路径,再追溯驱动类:
# 查看所有 NVMe/SATA/USB 存储设备及其匹配的驱动类 ioreg -p IOBlockStorage -r -l | grep -E "(Product|Vendor|BSD Name|IOProviderClass|IONameMatch)" | sed 's/^[[:space:]]*//'
输出中若看到:
-
IOProviderClass = "IONVMeController"→ 由IONVMeFamily驱动 -
IOProviderClass = "IOAHCIDevice"→ 由IOAHCIFamily驱动 -
IOProviderClass = "IOUSBMassStorageUIMedia"→ 由IOUSBMassStorage驱动
这能确认物理设备与内核驱动的实际绑定关系,比单纯看 kext 加载列表更贴近真实 I/O 路径。
不复杂但容易忽略:macOS 自 Catalina 起默认阻止未公证 kext 加载,因此终端中 kextstat 显示的清单,就是当前真正参与 I/O 的底层存储驱动全集——没有“已安装但未启用”的中间态。所谓“驱动列表”,本质上就是此刻生效的内核存储栈快照。


















