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

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

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

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

如何以编程方式确定哪个是哪个?

我正在编写一个软件,我想保护初学者不删除他们的硬盘,同时允许他们删除他们的SD卡。

答案1

运行udevadm info -a -n /dev/sda并解析输出。你会看到类似这样的行

DRIVERS=="ahci"

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

DRIVERS=="usb-storage"

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

ATTR{removable}=="1"

存在于可移动设备上。

所有这些信息也可以通过/sys(实际上就是udevadm去那里查看)获得,但是/sys接口会不时发生变化,因此udevadm从长远来看解析更加稳健。

相关内容