Welcher Treiber steckt hinter einer bestimmten Gerätedatei?

10

Kann /dev/sdbman beispielsweise anhand einer Gerätedatei feststellen , welcher Treiber dahinter steckt?

Insbesondere möchte ich feststellen, welchen Treiber meine Speichergeräte verwenden. fdisk -llistet 2 Geräte auf: /dev/sdaund /dev/sdb. Eine ist eine SATA-Festplatte und die andere ist ein USB-Massenspeichergerät - eigentlich eine SD-Karte.

Wie bestimme ich programmgesteuert, welches welches ist?

Ich schreibe eine Software und möchte den Anfänger vor dem Auslöschen seiner Festplatten schützen, während er gleichzeitig seine SD-Karten auslöschen kann.

Alex Chamberlain
quelle
Ich gehe davon aus, dass Sie Linux verwenden, basierend auf Ihrer Wahl des Gerätenamens.
Gilles 'SO - hör auf böse zu sein'
@ Gilles Ja, tut mir leid, das ist wahrscheinlich eine ziemlich wichtige Information ... Danke!
Alex Chamberlain

Antworten:

12

Führen Sie udevadm info -a -n /dev/sdadie Ausgabe aus und analysieren Sie sie. Sie werden Linien wie sehen

DRIVERS=="ahci"

für eine SATA-Festplatte mit dem ahciTreiber oder

DRIVERS=="usb-storage"

für ein über USB angeschlossenes Gerät. Sie können auch Hersteller- und Modellnamen zur Bestätigung anzeigen. Ebenfalls,

ATTR{removable}=="1"

ist auf Wechseldatenträgern vorhanden.

All diese Informationen können auch über abgerufen werden /sys(tatsächlich wird hier udevadmnachgeschlagen), aber die /sysBenutzeroberfläche ändert sich von Zeit zu Zeit, sodass das Parsen udevadmauf lange Sicht robuster ist.

Gilles 'SO - hör auf böse zu sein'
quelle
@AlexChamberlain Sorry, ja, -nerwartet einen Pfad zu einem Blockgerät (etwas unter /dev), während -pein Pfad unter /sys(zB -p /sys/block/sda) erwartet wird .
Gilles 'SO - hör auf böse zu sein'