Ext. USB-Laufwerkdevices eindeutig zuordnen

Problem

Während man 'normale' externe USB-Laufwerke eindeutig mounten kann (z.B. mit UUID statt devices in der /etc/fstab), funktioniert das mit cryptsetup-Partitionen nicht.

cryptsetup kennt kein UUID (das wird beim formatieren oder partitionieren des Laufwerks vergeben). Einmal muss man /dev/sdb1, beim nächsten boot /dev/sde1 mounten. Mist.

Lösung

Dem Laufwerk/Partionen über eine Regel feste devices in /dev/ zuweisen. Dann weiß cryptsetup, was es mounten soll.

Ich hab diese Datei angelegt: /etc/udev/rules.d/00.rules

# geralds own Rules BUS=="usb",
ATTRS{serial}=="574341535531313939323434", KERNEL=="sd?1", NAME="%k", SYMLINK+="ext/usbhdd1", GROUP="storage"
ATTRS{serial}=="574341535531313939323434", KERNEL=="sd?3", NAME="%k", SYMLINK+="ext/usbhdd3", GROUP="storage"

Ich erstelle also eine Regel über die Seriennummer des Laufwerks.

Wie bekommt man die Seriennummer raus?

Damit ein bestimmter USB-Stick (oder auch eine Festplatte) immer den gleichen Device Namen zugewiesen bekommt, kann man sich eine Udev Regel erstellen.

Zuerst muss man die Seriennummer des Sticks herausfinden. Dazu geht man folgendermaßen vor:

# udevmonitor starten # den Stick einstöpseln, und sich das Device merken (z.B. /dev/sdc)

Jetzt kann man sich mit Hilfe von udevinfo und grep die Serienenummer anzeigenlassen.

 udevinfo -a -p `udevinfo -q path -n /dev/sdc` | grep ATTRS{serial}

Die Ausgabe sollte etwa so aussehen:

 ATTRS{serial}=="14AB0000000096"
 ATTRS{serial}=="0000:00:02.2"

Um herauszufinden welche Nummer die des Sticks ist führt man den Befehl nochmal aus, ersetzt aber ATTRS{serial} durch ATTRS{product}.

 udevinfo -a -p `udevinfo -q path -n /dev/sdc` | grep ATTRS{product}

Jetzt erhält man eine Ausgabe die in etwa so aussieht:

 ATTRS{product}=="USB Mass Storage Device"
 ATTRS{product}=="EHCI Host Controller"

Die gesuchte Nummer des Sticks ist also die erste.

Jetzt kann man sich eine eigene udev Regel erstellen. Dazu legt man am besten eine neue Datei unter /etc/udev/rules.d/ an. (Hinweis: udev arbeitet die Dateien in alphabetischer Reihenfolge ab). Die Datei könnte man z.B. 50-myusb.rules nennen. In die Datei trägt man nun folgendes ein.

 SUBSYSTEMS=="usb", ATTRS{serial}=="14AB0000000096", KERNEL=="sd*", SYMLINK+="usbstick%n"

Jetzt noch die udev Regeln neu laden.

 udevcontrol reload_rules

Udev sollte jetzt beim einstöpseln (vorausgesetzt der Stick enthält eine Partition) zwei Symlinks, die auf das „reale“ Device zeigen, in /dev erstellen.

usbstick für den Stick an sich und usbstick1 für die (erste) Partition. Ab jetzt kann über diese Links auf den Stick zugegriffen werden.

Enthält der Stick mehr als eine Partition wird für jede ein eigener Link mit der Partitionsnummer angelegt. Wie bei einer Festplatte auch.

zum Beispiel

 /dev/usbstick       
 /dev/usbstick1
 /dev/usbstick2
 
Nach oben
cryptsetup/usb-rules.txt · Zuletzt geändert: 2024/02/29 13:36 von 127.0.0.1
chimeric.de = chi`s home Creative Commons License Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0
DFmW2CEce3htPL1uNQuHUVu4Tk6WXigFQp   Dogecoin Donations Accepted Here    DFmW2CEce3htPL1uNQuHUVu4Tk6WXigFQp  DFmW2CEce3htPL1uNQuHUVu4Tk6WXigFQp