Die meisten USB-Sticks funktionieren auf meinem System: Stecken Sie einen ein, und es udev
wird 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 udev
sich nicht richtig verhält. Die Gerätedatei für den Stick wird erstellt, aber nicht für die Partition.
dmesg
Wenn 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 mknod
nie 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, mknod
es 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 --property
fü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/uba
Namensstruktur 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
usbmount
und 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 value
nicht so values
, das Ausführen über die CLI zeigt das.
sudo blkid -o Wert -s TYP /dev/sdb1 vfett
Dies ist also %N
die 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
.