• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Probleme mit udev und openSUSE 10.2

Status
Für weitere Antworten geschlossen.

uteh

Newbie
Hallo zusammen,

ich experimentiere gerade unter openSUSE 10.2 mit udev und wollte eine einfache Regel fuer einen USB-Stick erstellen.

Ich habe mit udevinfo mir die Serialnummer des USB-Sticks ausgeben lassen, da ich dachte, dass das ein ziemlich eindeutiger Schlüssel sei. Sicherheitshalber habe ich auch die niedrigste Nummer für meine Regeldatei vergeben, sie heisst /etc/udev/rules.d/01-udev.rules.

Die Regeldatei sieht so aus:
SUBSYSTEMS=="usb", ATTRS{serial}=="07711B2210DD", NAME=="usbstick1"

Alle Infos stammen aus demselben Level des Devicetrees und ich habe udev mit udevcontrol reload_rules neu gestartet.

openSUSE mountet leider den USB-Stick fleissig weiter auf /dev/disk (wenn er kein Label hat) oder /dev/USBSTICK (seinen Labelnamen) und je nachdem, wieviel Geräte eingesteckt sind, mal auf /dev/sda1, mal auf /dev/sdb1. Die Serialnummer habe ich 3 x überprüft, sie stimmt.

Ich kriege nicht heraus, warum das passiert, welche Konfigurationsdatei dafür verantwortlich ist und wie man das ändern kann bzw. was ich falsch mache. Ich habe heute den ganzen Tag die Man Pages und das Internet durchwühlt und alle Anleitungen befolgt, aber nichts ändert diesen Zustand.

Für jede Idee bin ich sehr dankbar!

Viele Grüsse,
Ute
 
OP
U

uteh

Newbie
Hallo,

danke für deinen Hinweis - ich hatte die udev-Regeln so verstanden, dass man nicht alle Angaben machen muss (auf dem Link, den du mir gabst, war ich auch schon ;-) ...).

Jetzt sieht meine 01-udev.rules so aus:
KERNELS=="1-6", SUBSYSTEMS=="usb", ATTRS{serial}=="07711B2210DD", NAME="usbstick1", SYMLINK+="stick2"

Das wären ja alle Angaben, die du für notwendig hältst, nicht wahr?

Jetzt wird der Stick unter dem angegebenen Namen gemountet, danke - aber unter dem Verzeichnis /mnt????? Ist das korrekt? Das wollte ich eigentlich nicht - ich wollte es weiterhin unter /media haben - kann man das auch noch einstellen?

Danke und viele Grüße,
Ute
 
Code:
KERNELS=="1-6", SUBSYSTEMS=="usb", ATTRS{serial}=="07711B2210DD", NAME="usbstick1", SYMLINK+="stick2"
*Öhm*
Kannst du mal erklären, wie du auf die Regel kommst?
Insbesondere die Erklärungen zu KERNELS, NAME und SYMLINK würden mich interessieren.

KERNEL ist die Bezeichnung unter der der Kernel dieses Device anlegt - also bei USB-Devices i.d.R. sdX.

NAME bezeichnet das Device-Node das unter /dev angelegt wird.

Ich empfehle, weder KERNEL noch NAME grundlegend zu verändern.
Also:
Code:
SUBSYSTEMS=="usb", ATTRS{serial}=="SNR", KERNEL=="sd?", NAME="%k"
Damit hast du aber nur das Device selbst angelegt also z.B. sda -. um den Stick nutzen zu können brauchst du natürlich auch noch die Device-Nodes für die jeweiligen Partitionen (sda1, sda2, etc.).
Also:
Code:
SUBSYSTEMS=="usb", ATTRS{serial}=="SNR", KERNEL=="sd?[1-9]", NAME="%k"
(für maximal neun Partitionen)

Was jetzt noch fehlt ist ein entsprechender Symlink, damit das Device immer mit dem entsprechenden Namen angesprochen werden kann:
Code:
SUBSYSTEMS=="usb", ATTRS{serial}=="SNR", KERNEL=="sd?", NAME="%k", SYMLINK+="usbstick"
SUBSYSTEMS=="usb", ATTRS{serial}=="SNR", KERNEL=="sd?[1-9]", NAME="%k", SYMLINK+="usbstick%n"
Damit wird - egal ob der Stick als sda, sdb, etc. angegelegt wird - immer eine Symlink usbstick angelegt (inkl. der ensprechenden Partitionen: usbstick1, usbstick2, etc.).

Diese beiden Regeln lassen sich auch in einer zusammenfassen:
Code:
SUBSYSTEMS=="usb", ATTRS{serial}=="SNR", KERNEL=="sd*", NAME="%k", SYMLINK+="usbstick%n"

Wie bzw. wo das jeweilige Device dann eingebunden wird, musst du via HAL konfigurieren.
 
OP
U

uteh

Newbie
Hallo b3ll3roph0n,

*Öhm*
Kannst du mal erklären, wie du auf die Regel kommst?
Insbesondere die Erklärungen zu KERNELS, NAME und SYMLINK würden mich interessieren.

Gerne - ich habe den Befehl udevinfo -a -p /sys/block/sdb verwendet und dort aus einer Sektion (das verstand ich unter der Anweisung "ein Knoten des Device Trees") die Angaben Hersteller und "KERNELS" abgeschrieben. Die Angabe 'KERNEL=="sd?"' stand in einem anderen Teil der Ausgabe, ich dachte, die dürfte ich nicht nehmen. Ich habe es aber eben probiert, klappt auch.

NAME und SYMLINK sind doch frei wählbar, dachte ich? Irre ich mich da so? Ich dachte, das udev-Regelsystem sei dazu da, die Gerätenamen frei zu wählen - vielleicht bin ich ganz auf dem Holzweg? Wozu verwendet man dann das Ganze? Nur um symbolische Links zu erzeugen?

Wie bzw. wo das jeweilige Device dann eingebunden wird, musst du via HAL konfigurieren.

Kannst du mir hier noch einen Tipp bezüglich der Konfigurationsdatei geben? Das höre ich heute zum ersten Mal. Ich habe eben die /etc durchforstet, aber unter /etc/hal finde ich nur Dinge, die nicht sehr aussagekräftig sind. Und man hal bringt nichts ...

Danke für all die Hilfe, das ist alles sehr interessant :)

Viele Grüße,
Ute
 
uteh schrieb:
NAME und SYMLINK sind doch frei wählbar, dachte ich? Irre ich mich da so? Ich dachte, das udev-Regelsystem sei dazu da, die Gerätenamen frei zu wählen [...]
Ja, du kannst NAME und SYMLINK frei wählen, allerdings bin ich der Ansicht, dass man sich an die allgemein gültigen/verwendeten Schemata halten bzw. erst dann davon abweichen sollte, wenn es unbedingt notwendig ist.
Allerding musst du trotzdem die entsprechenden Wildcards/Platzhalter (?, *) verwenden, damit die Devive-Nodes - nicht nur für das Gerät selbst sondern auch für die einzelnen Partitionen - auch korrekt angelegt werden.

uteh schrieb:
Wozu verwendet man dann das Ganze? Nur um symbolische Links zu erzeugen?
Ja.
Ist doch völlig ausreichend um ein Device immer unter demselben Namen ansprechen zu können. :wink:

uteh schrieb:
Kannst du mir hier noch einen Tipp bezüglich der Konfigurationsdatei geben? Das höre ich heute zum ersten Mal. Ich habe eben die /etc durchforstet, aber unter /etc/hal finde ich nur Dinge, die nicht sehr aussagekräftig sind. Und man hal bringt nichts ...
Du musst ein entsprechendes Policy-File mit der Endung fdi unter /etc/hal/fdi/policy anlegen:
http://en.opensuse.org/SDB:Mounting_to_Static_Mount_Points
http://wiki.archlinux.org/index.php/HAL

uteh schrieb:
Danke für all die Hilfe, das ist alles sehr interessant :)
Bitte ... und ... ja, das ist es. :wink:
 

misiu

Moderator
Teammitglied
Hm, das hört sich gut an, könnte gute Vorlage für die Wiki werden.
Setzte ich mal auf "Wichtig".

MfG
misiu
 
OP
U

uteh

Newbie
Hallo b3ll3roph0n,

nochmals herzlichen Dank für die gute und ausführliche Erklärung - das hat mir viel gebracht.

Ich habe mir meine udev-Kenntnisse auf verschiedenen Websites angelesen, die nun im Nachhinein doch bruchstückhaft zu sein scheinen: denn manche haben einfach den SYMLINK-Eintrag in den Regeln weggelassen oder beschrieben, man könne beliebige Attribute zum Matchen wählen, weshalb ich den KERNEL-Eintrag wegließ, dazu gab es auch Beispiele.

Jetzt funktioniert es aber und ich bin zufrieden!

Viele Grüße,
Ute
 

mampfi

Hacker
Darf man sich hier man einklinken?

ich hab Backup-Skripte laufen, die mir Verzeichnisse per cronjob auf USB-Stick sichern.

Nur gibts Trouble wenn ich die Externe Festplatte einschalte (USB).

Was ist denn nun /media/disk und was ist /media/disk-1?

Wenn ichs richtig verstanden habe, dann kann ich meinen USB-Stick per Konfiguration auf einen Device "zwingen".

Stimmt das?
 
OP
U

uteh

Newbie
mampfi schrieb:
Darf man sich hier man einklinken?
ich hab Backup-Skripte laufen, die mir Verzeichnisse per cronjob auf USB-Stick sichern.
Nur gibts Trouble wenn ich die Externe Festplatte einschalte (USB).
Was ist denn nun /media/disk und was ist /media/disk-1?
Wenn ichs richtig verstanden habe, dann kann ich meinen USB-Stick per Konfiguration auf einen Device "zwingen".
Stimmt das?
Du darfst dich gerne einklinken, auch wenn es schon eine Zeitlang her ist, dass ich mich damit beschäftigte.
Aber es ist genau richtig, wie du schreibst: du kannst per udev-Regeln erzwingen, dass dein USB-Stick immer unter demselben Namen gemountet wird. Am besten verwendest du dazu Hersteller-ID oder Nummer, die sind ziemlich eindeutig.

Viele Grüße,
Ute
 

mampfi

Hacker
hm, ich bin da noch nicht so weit:

In der Datei file:///etc/udev/rules.d/01-usbstick.rules

steht bei mir folgendes

SUBSYSTEMS=="usb", ATTRS{serial}=="0705081259103", NAME=="usbstick", SYMLINK+="usbstick"

fdi-Dateien möcht hier mal lieber nicht zeigen, fang lieber von vorne an,
was müsste ich denn "policy-mäßig" verändern
 
OP
U

uteh

Newbie
Hallo Mampfi,

mampfi schrieb:
hm, ich bin da noch nicht so weit:

In der Datei file:///etc/udev/rules.d/01-usbstick.rules

steht bei mir folgendes

SUBSYSTEMS=="usb", ATTRS{serial}=="0705081259103", NAME=="usbstick", SYMLINK+="usbstick"

fdi-Dateien möcht hier mal lieber nicht zeigen, fang lieber von vorne an,
was müsste ich denn "policy-mäßig" verändern

Lies dir mal die Beiträge in diesem Thread genau durch, da sagten mir die Spezialisten, was zu tun ist. Ich kann dir leider im Moment keinen "anderen Support" bieten, da ich erst in ca. 4 - 6 Wochen wieder an ein Linux-System mit udev rankomme (habe gerade nur einen "älteren Suse 8-Server" hier).

Gruss Ute
 

mampfi

Hacker
Grübel,

hab ich mir so genau durchgelesen, dass ich den Thread bald auswendig kenne.

hab mir mir linux so "dekonfiguriert", das gar nix mehr gemountet wurde und ich ein Image (Gottlob hab ich sowas) restored habe.

Interessanterweise der "klassische" mount auf /media/disk verloren wenn ich im netz einen Samba-server auf cifs mounte.

Werd jetzt erstmal andere Aktivitäten vorziehen.

submount ist so ein Thema unter Linux.
 
Status
Für weitere Antworten geschlossen.
Oben