Dê uma olhada no diretório /sys/
. Em particular, /sys/block/
contém links simbólicos para bloquear dispositivos em /sys/devices/
.
/sys/block/sdX/removable
parece que será 1 para um dispositivo removível e 0 para o contrário. Isso lhe dá uma verificação básica para remoção.
Não sei se há uma maneira melhor de verificar se é um dispositivo USB, mas
readlink /sys/block/sde
vai cuspir algo como ../devices/pci0000:00/0000:00:1d.0/usb6/6-1/6-1.2/6-1.2:1.0/host7/target7:0:0/7:0:0:0/block/sde
. Verificar se isso contém uma pasta usb*
pode funcionar como uma simples verificação.
Você pode obter outros detalhes do dispositivo, como fornecedor e modelo, em /sys/block/sdX/device/
, que também podem ser úteis.