Um pendrive USB deve aparecer em sysfs
em /sys/block/
e deve ser denominado sd*
. Aqui está um pequeno script que verifica cada dispositivo em /sys/block
se for um drive USB:
#!/bin/bash
function is_usb_disk()
{
device=$1
is_usb_attached=$(udevadm info --query=property --path="/sys/block/$device" | grep -i "^ID_BUS=usb$")
is_disk=$(udevadm info --query=property --path="/sys/block/$device" | grep -i "^ID_TYPE=disk$")
if [[ -n $is_usb_attached && -n $is_disk ]]; then
return 0
else
return 1
fi
}
for block_device in $(ls /sys/block); do
is_usb_disk $block_device
if [[ $? -eq 0 ]]; then
serial=$(udevadm info --query=property --path="/sys/block/$block_device" | grep "^ID_SERIAL=" | cut -d "=" -f 2)
echo "/dev/$block_device ($serial) is an USB disk."
fi
done
Este script verifica cada dispositivo de bloco se ele estiver conectado ao barramento USB (via propriedade ID_BUS) e se for um disco (via propriedade ID_TYPE). Se encontrar um dispositivo, ambos são verdadeiros e imprime o nó do dispositivo com o serial do dispositivo correspondente.
Você pode copiar isso para um arquivo, por exemplo %código%.
Dê permissão de execução via find_usb_disks.sh
e execute-a. A saída ficará assim:
/dev/sdb (0204_Flash_Disk_19250701EF6B1E05-0:0) is an USB disk.
Se ele não retornar nada, é provável que o seu pen drive não esteja "inserido" corretamente. Verifique via chmod u+x find_usb_disks.sh
se módulos como lsmod
estiverem carregados. Se usb_storage não estiver carregado, desconecte seu dispositivo, execute
modprobe usb_storage
conecte-o novamente e veja se o seu pen drive aparece. Uma boa maneira de monitorar se o seu dispositivo é reconhecido pelo kernel é
udevadm monitor
Desconecte seu dispositivo USB, execute esse comando, conecte seu dispositivo novamente. Assim que você conectar o seu dispositivo usb, você verá o kernel (e o udev) "adicionar" ações.
Lembre-se de que, se o disco tiver partições, um número de partição será anexado ao nome do nó do dispositivo (por exemplo, usb_storage
). Meu script não encontraria a partição, apenas verifica se um dispositivo foi adicionado corretamente.