udev cria arquivo de dispositivo para chave USB, mas não para partições

udev cria arquivo de dispositivo para chave USB, mas não para partições

A maioria das chaves USB funciona no meu sistema: conecte uma e udevcriará um arquivo de dispositivo para a chave como um todo (por exemplo, /dev/uba), bem como um arquivo de dispositivo para a partição (por exemplo, /dev/uba1).

Eu tenho uma chave USB específica (um Sandisk Cruzer Micro 2Gb) que udevnão funciona bem. O arquivo de dispositivo da chave é criado, mas não da partição.

Se eu comparar a dmesgsaída entre uma chave funcional e a chave do problema, ela será idêntica, exceto por uma linha que está faltando ao usar a chave do problema: uba: uba1. Parece que isso mknodnunca cria um nó para a partição do disco.

O estranho é que eu posso fazer...

sudo sfdisk -R /dev/uba

... para forçar o reexame das partições da unidade e de repente a partição será reconhecida, mknodcriarei um arquivo de dispositivo e eu poderei acessar a chave perfeitamente e elegantemente. Algum tipo de problema de tempo?

EDITAR:

Regras USB de montagem automática:

ACTION=="add", KERNEL=="ub[a-z]*[1-9]*", PROGRAM="/sbin/blkid -o values -s TYPE %N", RESULT=="vfat", RUN+="/home/ubuntu/.mount_usb %k %n"
ACTION=="remove", KERNEL=="ub[a-z]*", RUN+="/home/ubuntu/.unmount_usb"

Também: A chave do problema é padronizada como FAT16 ao ser reformatada. Forçá-lo para FAT32 resulta em udevadm monitor --propertyexibir exatamente as mesmas propriedades para o dispositivo e partição que para uma chave funcional, mas o problema ainda permanece. Isso me leva a pensar que é menos provável que seja um problema com as regras de detecção de dispositivos e talvez um problema com o próprio dispositivo. Esta é uma conclusão lógica?

Responder1

Apenas pela /dev/ubaestrutura de nomenclatura, parece que você criou sua própria regra UDEV e agora ela não está funcionando para você. Precisaremos ver esse código para ajudá-lo.

Tenho certeza que você já consultou isso, mas por precaução, consulte esta referência para criar regras UDEV.http://wiki.debian.org/udev

Feedback baseado na atualização

ACTION=="adicionar", KERNEL=="ub[az]*[1-9]*", PROGRAM="/sbin/blkid -o valores -s TYPE %N", RESULT=="vfat", RUN+= "/home/ubuntu/.mount_usb %k %n"
ACTION=="remover", KERNEL=="ub[az]*", RUN+="/home/ubuntu/.unmount_usb"

Parece que seu antecessor não sabia sobre o usbmount. Esta regra só funcionará em unidades formatadas em vfat, agora você pode expandir essa lista ou... você pode instalá-la usbmounte ajustá-la para criar os nomes de dispositivos desejados. Então você tem algo que é mantido para você com apenas pequenas alterações de configuração em comparação com uma solução caseira completa.

A propósito, há um erro de sintaxe aí, não é value, valuesexecutar isso a partir da CLI mostra.

sudo blkid -o valor -s TIPO /dev/sdb1
vfat

Portanto, %Né a entrada, por exemplo, o dispositivo de bloco e RESULT é stdout. Isso está detalhado na página de manual do udev. Você pode fazer algo assim RESULT=="[vfat|fat16]"ou encaminhar a saída para um script e fazer uma comparação mais rica lá. Uma rápida olhada no pacote usbmount mostra que comparações avançadas são feitas no script de texto explicativo para adicionar e remover. Eu recomendo fortemente que você migre para usbmount.

informação relacionada