Editar: gostaria de simplificar um pouco a questão:
O principal problema é este: /dev/sda está sendo criado na inicialização, esteja minha unidade USB inserida ou não. Se eu rm /dev/sda manualmente, o udev funciona corretamente até eu reiniciar, ponto em que /dev/sda aparece magicamente novamente!
Segue a pergunta original:
Estou executando uma versão do Yocto Linux em uma placa incorporada e me deparei com um problema.
Com uma versão nova, quando conecto uma unidade USB na placa, ela aparece como /dev/sda e /dev/sda1 (ótimo!). Quando eu desconecto a unidade, essas entradas desaparecem (ótimo também!).
O problema acontece depois que copio um sistema de arquivos raiz duplicado na placa por meio da unidade USB (isso é para que eu possa fazer atualizações completas do sistema na placa). Tudo funciona bem até eu reiniciar, quando de repente /dev/sda e /dev/sda1 existem, quer a unidade USB esteja inserida ou não.
Verifiquei as permissões e elas parecem iguais em ambos os casos. Tentei remover os arquivos, mas eles reaparecem na próxima reinicialização. Os dois arquivos não são copiados com o novo sistema de arquivos raiz. Meu aplicativo usa a presença desses arquivos para determinar se uma unidade está inserida, por isso é importante que funcionem corretamente.
Alguma ideia?
Obrigado
Marlon
Responder1
Mude a maneira como você verifica a unidade USB, porque esta não é confiável.
Use lsusb
ou verifique /proc/scsi/usb-storage
o diretório. De ambas as maneiras, você obtém muitas informações do kernel, além disso, você pode brincar com coisas como mudar para uma lógica diferente com base no fornecedor ou no número de série :)