![某个设备文件背后有什么驱动程序?](https://linux22.com/image/24589/%E6%9F%90%E4%B8%AA%E8%AE%BE%E5%A4%87%E6%96%87%E4%BB%B6%E8%83%8C%E5%90%8E%E6%9C%89%E4%BB%80%E4%B9%88%E9%A9%B1%E5%8A%A8%E7%A8%8B%E5%BA%8F%EF%BC%9F.png)
给定一个设备文件,例如/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
从长远来看解析更加稳健。