Ale*_*ain 10 linux drivers devices block-device
给定一个设备文件,比如说/dev/sdb,是否可以确定它背后的驱动程序?
具体来说,我想确定我的存储设备正在使用什么驱动程序。fdisk -l列出 2 个设备:/dev/sda和/dev/sdb. 一个是 SATA 硬盘驱动器,另一个是 USB 大容量存储设备 - 实际上是 SD 卡。
我如何以编程方式确定哪个是哪个?
我正在编写一个软件,我想保护初学者免于擦除他们的硬盘驱动器,同时允许他们擦除他们的 SD 卡。
Gil*_*il' 12
运行udevadm info -a -n /dev/sda并解析输出。你会看到像
DRIVERS=="ahci"
Run Code Online (Sandbox Code Playgroud)
对于使用ahci驱动程序的 SATA 磁盘,或
DRIVERS=="usb-storage"
Run Code Online (Sandbox Code Playgroud)
用于 USB 连接的设备。您还可以显示供应商和型号名称以供确认。还,
ATTR{removable}=="1"
Run Code Online (Sandbox Code Playgroud)
存在于可移动设备上。
所有这些信息也可以通过/sys(实际上,这就是udevadm去查看的地方)获得,但/sys界面会不时变化,因此udevadm从长远来看,解析更加健壮。