device names ändern mit udef rules (gelöst)

Welches Modul/Treiber für welche Hardware, Kernel compilieren...
Antworten
hansdampf
Beiträge: 5
Registriert: 19.09.2004 18:40:28

device names ändern mit udef rules (gelöst)

Beitrag von hansdampf » 03.06.2007 18:31:34

Hallo zusammen,

Seit 1,5 Jahren registriert, nun kommt meine zweite Frage. Hoffe auf etwas mehr Resononz als beim ersten Mal :wink:

Problem: Habe einen Promise TX-4310 SATA Controller mit 4 HDs dran. Die Disks sind je 2 baugleiche Paare (für fakeraid). Nach dem booten sind die devicenames nicht immer gleich: /dev/sda1 ist mal eine von den Seagates, manchmal eine der WesternDigitals. So kann ich natürlich nicht arbeiten. Eine HD soll immer denselben devicenamen bekommen. In fstab die Partitionen nicht mit den devicenamen sondern mit uuids zu mounten find ich nicht gut. Ich möchte wirklich die devicenamen in den Griff kriegen.

Idee: udev. Ich mache ein File /etc/udev/rules.d/010_tx4310-harddrive.rules und schreibe da 4 Regeln (eine je Disk) rein.

Nun hab ich aber Mühe beim erstellen der Regeln: Ich finde keine gescheiten Kriterien um die DIsks voneinander zu unterscheiden! Ich habe folgende Regeln aufgestellt, weiss aber nicht was ATTR{stat} ist, finds deshalb nicht optimal:

Code: Alles auswählen

KERNEL=="sd*", SUBSYSTEM=="block", ATTR{stat}=="     175     1059     3380      308       16        2      144       20        0      312      328", NAME="sda"

KERNEL=="sd*", SUBSYSTEM=="block", ATTR{stat}=="   10979     2601  1084610    31792      223      228     3608     6132        0    23948    37924", NAME="sdb"

KERNEL=="sd*", SUBSYSTEM=="block", ATTR{stat}=="     134      269     1790      180       11        2      104        4        0      168      184", NAME="sdc"


KERNEL=="sd*", SUBSYSTEM=="block", ATTR{stat}=="     134      269     1790      232        8        1       72        8        0      228      240", NAME="sdd"
Hier noch Output von udevinfo für alle 4 Disks:

http://nopaste.debianforum.de/5929

Hat jemand eine Idee für bessere Regeln? Oder für ein gescheiteres Vorgehen im Allgemeinen?

Danke für eure Mühe :D

Gruss

this

PS: Wenn jemand keine Ahnung aber Interesse hat, empfehle ich "man udev" und das hier:
http://reactivated.net/writing_udev_rules.html
http://www.gentoo-wiki.com/HOWTO_Customizing_UDEV
Zuletzt geändert von hansdampf am 17.06.2007 11:38:24, insgesamt 2-mal geändert.
irrend lernt der mensch (goethe)

storm
Beiträge: 1581
Registriert: 01.05.2004 13:21:26
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: DE

Beitrag von storm » 03.06.2007 19:19:16

Autsch, bitte bei längeren Ausgaben nopaste benutzen (siehe "wichtige Hinweise" oben beim Schreiben).

Ansonsten kuck dir mal neuere Kernel bzw. die aktuellen Versionen von udev an, die können auch nach anderen Kriterien mounten. Siehe /dev/disk. So kannst du zB mit /dev/disk/by-uuid/<disk-uuid> jede Platte eindeutig ansprechen. Ich weiss aber im Moment nicht, ab welcher Kernel-version das vorhanden ist.

ciao, storm
drivers/ata/libata-core.c: /* devices which puke on READ_NATIVE_MAX */

hansdampf
Beiträge: 5
Registriert: 19.09.2004 18:40:28

Beitrag von hansdampf » 03.06.2007 19:34:24

Danke für den Hinweis. Wie gesagt, ich bin kein regelmässiger Gast hier...

Weitere Kriterien für die Devices würden mich sehr interessieren. Mein /dev/disk ist hier:

Code: Alles auswählen

debian:/home/this# ls /dev/disk/
by-id  by-path  by-uuid

debian:/home/this# ls -l /dev/disk/by-uuid/
insgesamt 0
lrwxrwxrwx 1 root root  9 2007-06-03 18:50 085b8aa2-b02f-4c5d-a295-9206a85f8433 -> ../../hdb
lrwxrwxrwx 1 root root 10 2007-06-03 18:50 74648819-fb19-40cb-add7-0775f544400a -> ../../hdb1
lrwxrwxrwx 1 root root 10 2007-06-03 18:50 84aef8a7-9a3c-49cf-bdf2-8c8f608f4a1c -> ../../hdf1
....
Das sieht doch schon mal sehr interresant aus! Danke für den Hinweis. Nur wie sollte dann eine /etc/udev/rules.d/010_tx4310-harddrive.rules aussehen?

Gruss

this
irrend lernt der mensch (goethe)

hansdampf
Beiträge: 5
Registriert: 19.09.2004 18:40:28

Beitrag von hansdampf » 03.06.2007 21:40:54

Ich habs nun auch noch mit dem Kriterium ENV{ID_SERIAL}=="xy" versucht. Auch kein Erfolg. Hat jemand erfolgreich seine devicenames konfiguriert? Ich finds einfach nicht raus!

Danke This
irrend lernt der mensch (goethe)

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von rendegast » 03.06.2007 22:32:40

Vielleicht sind die NAME="sd." falsch gewählt, da sie von persistant schon vergeben werden.
Vielleicht wären individuelle Bezeichnungen passender?

Hast Du schon udevinfo ausprobiert?
In einigen Howto habe ich Hinweise darauf gelesen, um damit den Syntax oder die nötigen Info für die udev.d zu bekommen:

Code: Alles auswählen

udevinfo --query all --path /sys/block/hda
(Die Ausgaben sind aber ? und vom '--path' abhängig)

http://wiki.archlinux.org/index.php/Usi ... o_a_device
http://www.reactivated.net/writing_udev ... l#udevinfo
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

storm
Beiträge: 1581
Registriert: 01.05.2004 13:21:26
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: DE

Beitrag von storm » 03.06.2007 23:28:14

Sorry, ich hab deinen ersten Post nicht richtig gelesen. Du hast ja geschrieben, dass du den Weg per uuid schon kennst. Im Augenblick ist da (noch) die beste Variante, Namen wie hda oder sd* sind doch eh nur Schall und Rauch. Ich hatte auch vermutet, dass dein Problem nicht beim mounten liegt, sondern schon vorher beim raid. Falls dir das trotzdem zu wenig ist, wären da noch die diversen Unterstützungsprogramme für udev, zB scsi_id oder ata_id. Vielleicht können die dir ja weiterhelfen. Näheres in den manpages, in die persistent-rules von udev kannst du auch mal reinschauen.

ciao, storm
drivers/ata/libata-core.c: /* devices which puke on READ_NATIVE_MAX */

Benutzeravatar
detix
Beiträge: 1744
Registriert: 07.02.2007 18:51:28
Wohnort: MK

Beitrag von detix » 05.06.2007 17:29:12

hansdampf, versuchs doch mal mit Regeln dieser Art:

KERNEL=="sd[a-d]", SUBSYSTEM=="block", IMPORT{program}="vol_id --export %N",
ENV{ID_FS_UUID}=="085b8aa2-b02f-4c5d-a295-9206a85f8433", NAME="sda"

Kann das hier so nicht nachvollziehen, da nur eine Platte mit mehreren Partitionen,
aber mit zwei ähnlichen Regel ist es mir z.B. möglich: Partition sda5 mit sda6 zu tauschen.
Die entsprechenden UUIDs kannst du in einer root Konsole mit
/lib/udev/vol_id --export /dev/sda
erfragen, das geht hier leider nicht, ich muß schon eine Ziffer ans Device anfügen:
/lib/udev/vol_id --export /dev/sda1
das geht.
Gruß an alle Debianer, und immer daran denken:
Macht ohne Haftung funktioniert nicht!

hansdampf
Beiträge: 5
Registriert: 19.09.2004 18:40:28

gelöst

Beitrag von hansdampf » 17.06.2007 11:37:52

Ja, das hat funktioniert! Diese id ist zwar eine Eigenschaft des Filesystems und nicht der phys. Platte, aber wenigstens funktionierts solange bis ich ein neues Filesystem auf den Platten erstelle. Vielen Dank für die Lösung!

hd
irrend lernt der mensch (goethe)

Antworten