Qual driver está por trás de um determinado arquivo de dispositivo?

10

Dado um arquivo de dispositivo, digamos /dev/sdb , é possível determinar qual driver está por trás dele?

Especificamente, desejo determinar qual driver meus dispositivos de armazenamento estão usando. fdisk -l lista 2 dispositivos: /dev/sda e /dev/sdb . Um é um disco rígido SATA e o outro é um dispositivo de armazenamento em massa USB - na verdade, um cartão SD.

Como determino, de forma programática, qual é qual

?

Estou escrevendo um software e quero proteger o novato de destruir seus discos rígidos, enquanto permite que eles destruam seus cartões SD.

    
por Alex Chamberlain 11.08.2012 / 14:56

1 resposta

12

Execute udevadm info -a -n /dev/sda e analise a saída. Você verá linhas como

DRIVERS=="ahci"

para um disco SATA usando o driver ahci ou

DRIVERS=="usb-storage"

para um dispositivo conectado via USB. Você também poderá exibir nomes de fornecedores e modelos para confirmação. Além disso,

ATTR{removable}=="1"

está presente em dispositivos removíveis.

Todas essas informações também podem ser obtidas através de /sys (na verdade, é onde udevadm vai procurar), mas a interface /sys muda de tempos em tempos, portanto, analisar udevadm é mais robusto a longo prazo.

    
por 11.08.2012 / 17:27