udev crea un archivo de dispositivo para una llave USB, pero no para particiones

udev crea un archivo de dispositivo para una llave USB, pero no para particiones

La mayoría de las llaves USB funcionan en mi sistema: conecte una y udevcreará un archivo de dispositivo para la llave en su conjunto (p. ej. /dev/uba), así como un archivo de dispositivo para la partición (p. ej /dev/uba1.).

Tengo una memoria USB específica (una Sandisk Cruzer Micro 2Gb) udevcon la que no funciona. Se crea el archivo de dispositivo para la clave, pero no para la partición.

Si comparo el dmesgresultado entre una clave que funciona y mi clave de problema, es idéntica excepto por una línea que falta cuando uso la clave de problema: uba: uba1. De esto parecería que mknodnunca se crea un nodo para la partición del disco.

Lo raro es que puedo hacer...

sudo sfdisk -R /dev/uba

... para forzar que las particiones de la unidad sean reexaminadas y de repente la partición será reconocida, mknodcreará un archivo de dispositivo y puedo acceder a la clave muy bien. ¿Algún tipo de problema de sincronización?

EDITAR:

Reglas de montaje automático de USB:

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"

También: La clave del problema tiene por defecto FAT16 cuando se formatea. Forzarlo a FAT32 produce udevadm monitor --propertyexactamente las mismas propiedades para el dispositivo y la partición que para una clave que funcione, pero el problema persiste. Esto me lleva a pensar que es menos probable que sea un problema con las reglas de detección del dispositivo y quizás un problema con el dispositivo en sí. ¿Es esta una conclusión lógica?

Respuesta1

Solo por la /dev/ubaestructura de nombres, parece que creó su propia regla UDEV y ahora no le está funcionando. Necesitaremos ver ese código para ayudarte.

Estoy seguro de que ya ha consultado esto, pero por si acaso consulte esta referencia para crear reglas UDEV.http://wiki.debian.org/udev

Comentarios basados ​​en la actualización

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

Parece que su predecesor no lo sabía usbmount. Esta regla solo funcionará en unidades formateadas con vfat, ahora puede expandir esa lista o... puede instalarla usbmounty modificarla para crear los nombres de dispositivo que desee. Entonces tiene algo que se mantiene para usted con solo cambios menores de configuración en comparación con una solución casera completa.

Por cierto, hay un error de sintaxis allí, no lo es value, valuesse muestra al ejecutar esto desde la CLI.

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

Entonces, %Nes la entrada, por ejemplo, el dispositivo de bloque y RESULTADO es la salida estándar. Esto se detalla en la página de manual de udev. Es posible que pueda hacer algo como esto RESULT=="[vfat|fat16]", o puede reenviar el resultado a un script y hacer una comparación más completa allí. Un vistazo rápido al paquete usbmount muestra que se realizan comparaciones enriquecidas en el script de llamada tanto para agregar como para eliminar. Le recomiendo encarecidamente que migre a usbmount.

información relacionada