Linux
某個設備文件背後的驅動程序是什麼?
給定一個設備文件,比如說
/dev/sdb
,是否有可能確定它背後的驅動程序是什麼?具體來說,我想確定我的儲存設備正在使用什麼驅動程序。
fdisk -l
列出 2 個設備:/dev/sda
和/dev/sdb
. 一個是 SATA 硬碟驅動器,另一個是 USB 大容量儲存設備 - 實際上是 SD 卡。我如何以程式方式確定哪個是哪個?
我正在編寫一個軟體,我想保護初學者不破壞他們的硬碟,同時允許他們清除他們的 SD 卡。
執行
udevadm info -a -n /dev/sda
並解析輸出。你會看到像DRIVERS=="ahci"
對於使用
ahci
驅動程序的 SATA 磁碟,或DRIVERS=="usb-storage"
對於 USB 連接的設備。您還可以顯示供應商和型號名稱以供確認。還,
ATTR{removable}=="1"
存在於可移動設備上。
所有這些資訊也可以通過
/sys
(其實就是udevadm
去那裡看),但是/sys
介面時常變化,所以udevadm
長期來看解析更加健壯。