Dado un archivo de dispositivo, por ejemplo /dev/sdb
, ¿es posible determinar qué controlador está detrás?
Específicamente, quiero determinar qué controlador están usando mis dispositivos de almacenamiento. fdisk -l
enumera 2 dispositivos: /dev/sda
y /dev/sdb
. Uno es un disco duro SATA y el otro es un dispositivo de almacenamiento masivo USB, en realidad una tarjeta SD.
¿Cómo determino, programáticamente, cuál es cuál?
Estoy escribiendo una pieza de software, y quiero proteger al principiante para que no borre sus discos duros, al tiempo que les permite borrar sus tarjetas SD.
linux
drivers
devices
block-device
Alex Chamberlain
fuente
fuente
Respuestas:
Ejecute
udevadm info -a -n /dev/sda
y analice la salida. Verás líneas comopara un disco SATA con el
ahci
controlador, opara un dispositivo conectado por USB. También podrá mostrar nombres de proveedores y modelos para su confirmación. También,
está presente en dispositivos extraíbles.
Toda esta información también se puede obtener a través de
/sys
(de hecho, ahí es dondeudevadm
se debe buscar), pero la/sys
interfaz cambia de vez en cuando, por lo que el análisisudevadm
es más robusto a largo plazo.fuente
-n
espera una ruta a un dispositivo de bloque (algo debajo/dev
) mientras que-p
espera una ruta debajo/sys
(por ejemplo-p /sys/block/sda
).