给定一个设备文件,例如/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
从长远来看解析更加稳健。