udev erstellt Gerätedatei für USB-Stick, aber nicht für Partitionen

udev erstellt Gerätedatei für USB-Stick, aber nicht für Partitionen

Die meisten USB-Sticks funktionieren auf meinem System: Stecken Sie einen ein, und es udevwird eine Gerätedatei für den gesamten Stick (z. B. /dev/uba) sowie eine Gerätedatei für die Partition (z. B. /dev/uba1) erstellt.

Ich habe einen bestimmten USB-Stick (einen SanDisk Cruzer Micro 2Gb), der udevsich nicht richtig verhält. Die Gerätedatei für den Stick wird erstellt, aber nicht für die Partition.

dmesgWenn ich die Ausgabe zwischen einem funktionierenden Schlüssel und meinem Problemschlüssel vergleiche , ist sie identisch, bis auf eine Zeile, die bei Verwendung des Problemschlüssels fehlt: uba: uba1. Daraus lässt sich schließen, dass mknodnie ein Knoten für die Festplattenpartition erstellt wird.

Das Seltsame ist, dass ich …

sudo sfdisk -R /dev/uba

...um eine erneute Überprüfung der Laufwerkspartitionen zu erzwingen. Plötzlich wird die Partition erkannt, mknodes wird eine Gerätedatei erstellt und ich kann ganz normal auf den Schlüssel zugreifen. Irgendeine Art von Zeitproblem?

BEARBEITEN:

Regeln für die automatische Bereitstellung von 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"

Auch: Der Problemschlüssel wird beim Neuformatieren standardmäßig auf FAT16 gesetzt. Wenn er auf FAT32 gesetzt wird, werden udevadm monitor --propertyfür das Gerät und die Partition genau dieselben Eigenschaften wie für einen funktionierenden Schlüssel ausgegeben, aber das Problem bleibt bestehen. Das lässt mich vermuten, dass es weniger wahrscheinlich ein Problem mit den Geräteerkennungsregeln als vielmehr ein Problem mit dem Gerät selbst ist. Ist das eine logische Schlussfolgerung?

Antwort1

Allein die /dev/ubaNamensstruktur lässt darauf schließen, dass Sie Ihre eigene UDEV-Regel erstellt haben und diese nun nicht mehr funktioniert. Wir müssen uns diesen Code ansehen, um Ihnen helfen zu können.

Ich bin sicher, dass Sie dies bereits konsultiert haben, aber konsultieren Sie zur Sicherheit bitte diese Referenz zum Erstellen von UDEV-Regeln.http://wiki.debian.org/udev

Feedback basierend auf Update

AKTION=="Hinzufügen", KERNEL=="ub[az]*[1-9]*", PROGRAMM="/sbin/blkid -o Werte -s TYP %N", ERGEBNIS=="vfat", AUSFÜHREN+="/home/ubuntu/.mount_usb %k %n"
AKTION=="entfernen", KERNEL=="ub[az]*", RUN+="/home/ubuntu/.unmount_usb"

Es sieht so aus, als ob Ihr Vorgänger nichts davon wusste usbmount. Diese Regel funktioniert nur auf vfat-formatierten Laufwerken. Sie können diese Liste jetzt erweitern oder ... installieren usbmountund optimieren, um die gewünschten Gerätenamen zu erstellen. Dann haben Sie etwas, das für Sie mit nur geringfügigen Konfigurationsänderungen im Vergleich zu einer kompletten selbst erstellten Lösung verwaltet wird.

Übrigens, da ist ein Syntaxfehler drin, es ist valuenicht so values, das Ausführen über die CLI zeigt das.

sudo blkid -o Wert -s TYP /dev/sdb1
vfett

Dies ist also %Ndie Eingabe, z. B. das Blockgerät, und ERGEBNIS ist stdout. Dies wird auf der udev-Manpage ausführlich beschrieben. Möglicherweise können Sie so etwas tun RESULT=="[vfat|fat16]", oder Sie können die Ausgabe an ein Skript weiterleiten und dort einen ausführlicheren Vergleich durchführen. Ein kurzer Blick auf das usbmount-Paket zeigt, dass im Callout-Skript ausführliche Vergleiche sowohl für das Hinzufügen als auch für das Entfernen durchgeführt werden. Ich empfehle Ihnen dringend, auf zu migrieren usbmount.

verwandte Informationen