Dado um arquivo de dispositivo, por exemplo /dev/sdb
, é possível determinar qual driver está por trás dele?
Especificamente, quero 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 USB de armazenamento em massa - na verdade, um cartão SD.
Como determino programaticamente qual é qual?
Estou escrevendo um software e quero proteger o iniciante de obliterar seus discos rígidos, enquanto permite que eles obliterem seus cartões SD.
linux
drivers
devices
block-device
Alex Chamberlain
fonte
fonte
Respostas:
Execute
udevadm info -a -n /dev/sda
e analise a saída. Você verá linhas comopara um disco SATA usando o
ahci
driver oupara um dispositivo conectado por USB. Você também poderá exibir nomes de fornecedores e modelos para confirmação. Além disso,
está presente em dispositivos removíveis.
Todas essas informações também podem ser obtidas através
/sys
(de fato, é aí queudevadm
vamos procurar), mas a/sys
interface muda de tempos em tempos, portanto, a análiseudevadm
é mais robusta a longo prazo.fonte
-n
espera um caminho para um dispositivo de bloco (algo abaixo/dev
) enquanto-p
espera um caminho sob/sys
(por exemplo-p /sys/block/sda
).