lspci -k 是查看磁盘设备对应内核驱动最准确的起点,直接显示每条pci设备的“kernel driver in use”和“kernel modules”字段;加- nn可同时显示厂商/设备id,结合grep过滤存储类控制器(如raid/sata/nvme/ahci)能快速定位,常见驱动包括ahci、nvme、megaraid_sas等。

lspci -k 显示磁盘设备对应的内核驱动
直接看哪块设备用了哪个驱动,lspci -k 是最准的起点。它会列出所有 PCI 设备,并在每条设备信息后附上 Kernel driver in use 和 Kernel modules 字段。
执行时加 -nn 能同时显示厂商/设备 ID(如 [8086:2826]),方便查手册确认芯片型号;加 | grep -A 3 -B 1 "RAID\|SATA\|NVMe\|AHCI" 可快速过滤存储类控制器。
- 常见控制器类型对应驱动:
ahci(SATA 主板直连)、nvme(NVMe SSD)、megaraid_sas(LSI/Broadcom RAID 卡)、isci(Intel C600 系列 SAS)、hpsa(HPE Smart Array) - 如果
Kernel driver in use为空,说明设备未被驱动接管,可能需手动加载模块(如modprobe megaraid_sas)或检查固件/BIOS 设置 -
Kernel modules列出的是可选驱动,但不一定已加载;lsmod | grep 模块名才能确认是否真在运行
lshw -class storage 查看控制器层级与驱动绑定关系
lshw -class storage 比 lspci 更进一步:它把磁盘、控制器、总线拓扑串起来,明确标出每个 logical name(如 /dev/sda)背后是哪个 configuration: driver=xxx。
输出中重点关注 bus info 字段(如 scsi@0:0.0.0 或 pci@0000:03:00.0),它和 lspci 的设备地址能一一对应,避免因热插拔导致设备名错位。
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- 对 NVMe 盘,
lshw通常会显示configuration: driver=nvme,但要注意某些老内核可能用nvme_core+nvme两个模块 - RAID 卡下的物理盘可能不显示独立驱动,而是归在卡的驱动下(如
driver=megaraid_sas),此时单盘无法被smartctl直接访问,必须加-d megaraid,N - 若
lshw报错 “permission denied”,需加sudo;部分精简系统可能未预装,可用apt install lshw或yum install lshw
从 /sys/class/scsi_host/ 或 /sys/block/ 反查驱动模块
内核在 /sys 下为每个 SCSI/NVMe 主机和块设备都留了驱动线索。这是绕过命令行、直接读内核状态的方式,适合脚本化或调试。
例如:ls /sys/class/scsi_host/ 列出所有 SCSI 主机(host0, host1…),再进 /sys/class/scsi_host/host0/ 看 proc_name 文件内容,就是驱动名(如 ahci 或 megaraid_sas);对 NVMe 设备,readlink /sys/block/nvme0n1/device/driver 会指向 ../../bus/pci/drivers/nvme。
-
/sys/block/sda/device/driver是软链接,readlink后能拿到驱动模块名;但 SATA 盘可能链到../../bus/pci/drivers/ahci,而 SAS 盘可能链到../../bus/pci/drivers/mpt3sas - 有些 RAID 卡(如 Dell PERC)会把物理盘隐藏在虚拟控制器下,
/sys/block/下只看到cciss或hpdsa设备,此时要查/sys/class/scsi_device/下的 LUN 绑定 - 注意:
/sys路径依赖设备存在且已探测成功,冷插硬盘后需等 udev 触发完成才能看到完整结构
驱动不工作?先看 dmesg 里控制器初始化日志
当设备识别异常或驱动加载失败,dmesg | grep -i "ahci\|nvme\|raid\|sas" 是第一排查入口。内核在启动时会打印控制器探测、资源分配、驱动绑定全过程。
关键线索包括:ahci 0000:00:1f.2: version 3.0(说明 ahci 驱动已加载)、nvme nvme0: pci function 0000:01:00.0(NVMe 设备已注册)、megasr 0000:03:00.0: can't allocate 64KB of coherent DMA memory(驱动因内存不足失败)。
- 如果看到
ACPI Warning: SystemIO range...或resource collision,大概率是 BIOS 中开启了冲突的模式(如 AHCI 和 RAID On 同时启用) -
ataX: failed to set xfermode多见于老旧 SATA 控制器兼容问题,可能需加内核参数libata.force=noncq - RAID 卡驱动加载失败时,
dmesg常出现megaraid_sas: unable to get controller number,说明固件未就绪或 PCIe link down
ahci 驱动接管;或者 NVMe 盘被 BIOS 设置为 Legacy Boot 模式,导致内核只看到一个 nvme0n1p1 分区却看不到控制器本身。这种情况下,lspci -k 和 dmesg 的输出必须对照 BIOS 设置一起读。










