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 -lenumera 2 dispositivos: /dev/sday /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/sday analice la salida. Verás líneas comopara un disco SATA con el
ahcicontrolador, 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 dondeudevadmse debe buscar), pero la/sysinterfaz cambia de vez en cuando, por lo que el análisisudevadmes más robusto a largo plazo.fuente
-nespera una ruta a un dispositivo de bloque (algo debajo/dev) mientras que-pespera una ruta debajo/sys(por ejemplo-p /sys/block/sda).