某个设备文件背后的驱动程序是什么?


10

给定一个设备文件,例如/dev/sdb,可以确定它背后的驱动程序吗?

具体来说,我想确定存储设备正在使用什么驱动程序。fdisk -l列出2个设备:/dev/sda/dev/sdb。一个是SATA硬盘驱动器,另一个是USB大容量存储设备-实际上是SD卡。

如何通过编程确定哪个是哪个?

我正在写一个软件,我想保护初学者免于淘汰其硬盘驱动器,同时允许他们淘汰其SD卡。


我假定您基于设备名称的选择运行Linux。
吉尔斯(Gilles)'所以

@Gilles是的,很抱歉,这可能是非常重要的信息……谢谢!
亚历克斯·张伯伦

Answers:


12

运行udevadm info -a -n /dev/sda并分析输出。您会看到像

DRIVERS=="ahci"

对于使用ahci驱动程序的SATA磁盘,或

DRIVERS=="usb-storage"

用于USB连接的设备。您还可以显示供应商和型号名称以进行确认。也,

ATTR{removable}=="1"

存在于可移动设备上。

所有这些信息也都可以通过获取/sys(实际上就是udevadm去看的地方)来获取,但是/sys接口会不时发生变化,因此udevadm从长远来看,解析会更可靠。


@AlexChamberlain抱歉,是的,-n期望到块设备的路径(位于下方/dev),而-p期望的路径位于/sys(例如-p /sys/block/sda)下方。
吉尔斯(Gilles)'所以
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.