特定のデバイスファイルの背後にあるドライバーは何ですか?


10

たとえば/dev/sdb、デバイスファイルが与えられた場合、その背後にあるドライバーを特定することはできますか?

具体的には、ストレージデバイスが使用しているドライバーを特定したいと考えています。fdisk -lは2つのデバイスをリストします:/dev/sdaおよび/dev/sdb。1つはSATAハードドライブで、もう1つはUSB大容量ストレージデバイスです-実際にはSDカードです。

プログラムでどちらを決定するのですか?

私はソフトウェアを書いています。初心者がハードドライブを消去するのを防ぎながら、SDカードを消去できるようにしたいと思っています。


デバイス名の選択に基づいて、Linuxを実行していると思います。
Gilles 'SO-悪をやめる

@ギレスうん、ごめんなさいそれはおそらく非常に重要な情報です...ありがとう!
Alex Chamberlain

回答:


12

udevadm info -a -n /dev/sda出力を実行して解析します。次のような行が表示されます

DRIVERS=="ahci"

ahciドライバを使用するSATAディスクの場合、または

DRIVERS=="usb-storage"

USB接続デバイスの場合。確認のためにベンダー名とモデル名を表示することもできます。また、

ATTR{removable}=="1"

リムーバブルデバイスに存在します。

これらの情報はすべて/sys(実際には、ここでudevadm確認できます)でも取得でき/sysますが、インターフェイスは随時変更されるためudevadm、長期的には解析がより堅牢になります。


@AlexChamberlain申し訳ありませんが、-nブロックデバイスへのパス(の下にあるもの/dev)を-p想定していますが、パスの下/sys(など-p /sys/block/sda)を想定しています。
Gilles「SO-悪
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.