Quel pilote se trouve derrière un certain fichier de périphérique?

10

Étant donné un fichier de périphérique, par exemple /dev/sdb, est-il possible de déterminer quel pilote se trouve derrière?

Plus précisément, je veux déterminer quel pilote mes périphériques de stockage utilisent. fdisk -lrépertorie 2 appareils: /dev/sdaet /dev/sdb. L'un est un disque dur SATA et l'autre est un périphérique de stockage de masse USB - en fait une carte SD.

Comment déterminer, par programme, lequel est lequel?

J'écris un logiciel, et je veux protéger le débutant de l'effacement de leurs disques durs, tout en leur permettant d'effacer leurs cartes SD.

Alex Chamberlain
la source
Je suppose que vous utilisez Linux, en fonction de votre choix de nom de périphérique.
Gilles 'SO- arrête d'être méchant'
@ Gilles Ouais, désolé c'est probablement une information assez importante ... Merci!
Alex Chamberlain

Réponses:

12

Exécutez udevadm info -a -n /dev/sdaet analysez la sortie. Vous verrez des lignes comme

DRIVERS=="ahci"

pour un disque SATA utilisant le ahcipilote, ou

DRIVERS=="usb-storage"

pour un périphérique connecté par USB. Vous pourrez également afficher les noms des fournisseurs et des modèles pour confirmation. Également,

ATTR{removable}=="1"

est présent sur les appareils amovibles.

Toutes ces informations peuvent également être obtenues via /sys(en fait, c'est là que udevadmva chercher), mais l' /sysinterface change de temps en temps, donc l'analyse udevadmest plus robuste à long terme.

Gilles 'SO- arrête d'être méchant'
la source
@AlexChamberlain Désolé, oui, -nattend un chemin vers un périphérique de bloc (quelque chose sous /dev) alors qu'il -pattend un chemin sous /sys(par exemple -p /sys/block/sda).
Gilles 'SO- arrête d'être méchant'