2 votes

udev crée un fichier de périphérique pour la clé USB, mais pas pour les partitions

La plupart des clés USB fonctionnent sur mon système : branchez-en une et udev créera un fichier de dispositif pour l'ensemble de la clé (par ex. /dev/uba ), ainsi qu'un fichier de périphérique pour la partition (par ex. /dev/uba1 ).

J'ai une clé USB spécifique (une Sandisk Cruzer Micro 2Gb) qui udev se comporte mal avec. Le fichier de périphérique de la clé est créé, mais pas celui de la partition.

Si je compare les dmesg entre une clé de travail et ma clé de problème, elle est identique à l'exception d'une ligne qui est manquante lors de l'utilisation de la clé de problème : uba: uba1 . Il en ressort que mknod ne crée jamais de nœud pour la partition du disque.

Ce qui est bizarre, c'est que je peux faire...

sudo sfdisk -R /dev/uba

...pour forcer les partitions du disque à être réexaminées et soudainement la partition sera reconnue, mknod va créer un fichier de périphérique et je peux accéder à la clé comme si de rien n'était. Un problème de timing ?

EDITAR:

Règles USB Automount :

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"

En outre : La clé qui pose problème passe par défaut à FAT16 lorsqu'elle est reformatée. Le fait de la forcer à passer en FAT32 entraîne udevadm monitor --property qui recrache exactement les mêmes propriétés pour le périphérique et la partition que pour une clé fonctionnelle, mais le problème persiste. Cela m'amène à penser qu'il s'agit moins d'un problème lié aux règles de détection des périphériques que d'un problème lié au périphérique lui-même. Cette conclusion est-elle logique ?

2voto

Vladimir Dyuzhev Points 101

D'après le /dev/uba en nommant la structure, il semble que vous ayez créé votre propre règle UDEV et qu'elle ne vous convienne pas. Nous aurons besoin de voir ce code pour vous aider.

Je suis sûr que vous l'avez déjà consulté, mais juste au cas où, veuillez consulter cette référence pour la création de règles UDEV. http://wiki.debian.org/udev

Retour d'information sur la base de la mise à jour

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"

Il semble que votre prédécesseur ne connaissait pas l'existence des usbmount . Cette règle ne fonctionnera que Cette règle ne fonctionnera que sur les disques formatés en vfat. usbmount et modifiez-le pour créer les noms de périphériques que vous souhaitez. Vous obtiendrez alors quelque chose comme qui est maintenu pour vous avec seulement des changements de configuration mineurs par rapport à une maison.

BTW, il y a une erreur de syntaxe là-dedans, c'est value pas values L'exécution de cette opération à partir de l'interface de programmation montre que

sudo blkid -o value -s TYPE /dev/sdb1
vfat

Ainsi, le %N est l'entrée, par exemple le périphérique bloc et RESULT est la sortie standard. Cette procédure est décrite en détail dans la page de manuel udev. Vous pourriez être en mesure de faire quelque chose comme ceci RESULT=="[vfat|fat16]" ou vous pouvez transférer la sortie vers un script et y effectuer une comparaison plus riche. Un rapide coup d'oeil au paquet usbmount montre que des comparaisons plus riches sont effectuées dans le callout script pour l'ajout et la suppression. Je vous recommande fortement de migrer vers usbmount .

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X