• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Viele hassen ihn, manche schwören auf ihn, wir aber möchten unbedingt sehen, welche Bilder Ihr vor Eurem geistigen Auge bzw. vor der Linse Eures iPhone oder iPad sehen könnt, wenn Ihr dieses Wort hört oder lest. Macht mit und beteiligt Euch an unserem Frühjahrsputz ---> Klick

USB Festplatten: Immer gleiches Device unter /dev erstellen

Kampfgnom

Granny Smith
Registriert
11.06.07
Beiträge
14
Hi,

ich habe eine externe Festplatte - ein Sharkoon Quickport Pro. Die Festplatten, die ich darin benutze sind per Truecrypt verschlüsselt.

Ich mounte die einzelnen Partitionen mit Hilfe von Shellscripten:

$ /Applications/TrueCrypt.app/Contents/MacOS/TrueCrypt -k /Volumes/KEYS/key2 /dev/rdisk2s2


Dummerweise bekommen die Festplatten ja jedes mal ein anderes /dev/rdiskxsy zugewiesen. Kann ich die Festplatten unter OS X irgendwie anders ansprechen?
Unter Linux würde mir spontan der Umweg über /proc einfallen. Oder man macht sich eigene udev-rules.
Aber sowas scheint es unter OS X ja nicht zu geben.


Habt ihr Ideen?

danke
 

Kampfgnom

Granny Smith
Registriert
11.06.07
Beiträge
14
Das ist schön. Nur wie verwende ich die UUID?

Das Dateisystem auf der Partition erhält zwar eine UUID, mit dieser kann ich aber noch lange nicht auf die Partition selber zugreifen:

$ diskutil info /dev/disk2s2 #Die verschlüsselte Partition
...
#Keine UUID
...
$ diskutil info /Volumes/600GB/ #Die gemountete Partition
...
Volume UUID: XXX
...


Auch folgendes:
$ /System/Library/Filesystems/hfs.fs/hfs.util -s /dev/disk2s2 #Fügt der Platte eine UUID hinzu
$ /System/Library/Filesystems/hfs.fs/hfs.util -k /dev/disk2s2 #Liest die UUID aus
$


Hat jemand genauere Informationen? Ich komme irgendwie nicht weiter :(
 

Rastafari

deaktivierter Benutzer
Registriert
10.03.05
Beiträge
18.150
Das ist schön. Nur wie verwende ich die UUID?
Die UUID des HFS+ Dateisystems kannst du nicht verwenden.
Denn intelligenterweise hast du sie ja mit verschlüsselt.

Die UUID der GPT-Partition könntest du benutzen.
(An die ist aber nicht unbedingt einfach ranzukommen, und keiner kann garantieren dass sie sich bei kleineren Änderungen der Tabelle nicht doch mal unabsichtlich ändert. Die Spezifikation verlangt nur dass sie tatsächlich "unique" bleibt, aber "Tools" wie gparted verstehen darunter nur, bei jedem Piffkas eine neue Zufallszahl zu generieren.)

Benutze einfach das GPT-Disklabel, also den deskriptiven Klartext-Namen, den du lesen, setzen und nutzen kannst wie immer du willst (hat absolut nichts mit dem Volume-Namen zu tun).
Code:
[size="-1"][COLOR="DimGray"]# auslesen (ganze Tabelle):[/COLOR]
gpt -r show -l [COLOR="Blue"]<device>[/COLOR]
[COLOR="DimGray"]# beliebig setzen:[/COLOR]
gpt label -i [COLOR="DarkGreen"]<numer. Index>[/COLOR] -l [COLOR="Purple"]<Name, bis 32 Zeichen>[/COLOR] [COLOR="Blue"]<device>[/COLOR][/size]
Sollte kein Problem bereiten, das im Shellskript zu verwenden. Ein Spaziergang.
 

Kampfgnom

Granny Smith
Registriert
11.06.07
Beiträge
14
Ich glaube ich stelle mich echt blöde an. Ich bitte dies zu entschuldigen o_O

Das GPT-Disklabel erlaubt mir doch immernoch nicht herauszufinden welche diskxsy das USB Device nun unter /dev bekommen hat, oder?

Ich KÖNNTE natürlich für jedes Device gpt aufrufen und nachgucken, ob die gewünschte Partition auf ihm liegt. Aber das ist doch sicher nicht die vorgeschlagene Lösung, oder?

Achja: Danke schonmal soweit :)
 
Zuletzt bearbeitet:

Rastafari

deaktivierter Benutzer
Registriert
10.03.05
Beiträge
18.150
Das GPT-Disklabel erlaubt mir doch immernoch nicht herauszufinden welche diskxsy das USB Device nun unter /dev bekommen hat, oder?
Klar doch.

Ich KÖNNTE natürlich für jedes Device gpt aufrufen und nachgucken, ob die gewünschte Partition auf ihm liegt. Aber das ist doch sicher nicht die vorgeschlagene Lösung, oder?
Aber klar doch. Wo ist das Problem damit?
(Wenn du etwas clever bist, benutzt du als Namen den gleichen String, der auch als UUID des gemounteten Volumes angezeigt wird, das hilft künftige Verwechslungen zu vermeiden.)
Beispiel:
Code:
[SIZE="-1"]suchstring="12345678-ABCD-ABCD-ABCD-1234567890AB";
kommando="/Applications/TrueCrypt.app/Contents/MacOS/TrueCrypt";
switches="-k";
ziel="/Volumes/KEYS/key2";
[COLOR="DimGray"]# Alle Geräte vom Typ "disk" durchlaufen[/COLOR]
for diskdevice in /dev/disk* ; do
      [COLOR="DimGray"]# Alle Namen mit angehängter Partitionsnummer ignorieren[/COLOR]
    [[ $diskdevice == *[[:digit:]]s[[:digit:]]* ]] && continue;
      [COLOR="DimGray"]# Partitionstabelle lesen und gültige GPT-Einträge ausfiltern,
      #   evtl. Fehlermeldungen dabei unterdrücken, dann
      #   nach dem Suchstring erneut filtern, die Ergebniszeile merken
      # Obacht, bei der/den internen HDs braucht das "gpt" root-Rechte[/COLOR]
    memo=$( gpt -r show -l $diskdevice 2>/dev/null | grep "GPT part" | grep "$suchstring" );
      [COLOR="DimGray"]# Indexnummer der Partition ausschneiden[/COLOR]
    memo=$( echo $memo | cut -f 3 -d " " );
      [COLOR="DimGray"]# Ergebnis nicht leer? -->
      #     Mount ausführen und Schleife beenden
      # sonst -->  neuer Durchlauf, nächstes Gerät[/COLOR]
    [ -n "$memo" ]  &&
        "$kommando" "$switches" "$ziel" "${diskdevice}s${memo}"  &&
            break;
done; [/SIZE]
 

Kampfgnom

Granny Smith
Registriert
11.06.07
Beiträge
14
Wow danke für die Mühe. Sogar mit fertigem Code :)

Das spart mir das Bash-erneut-erlernen. Alle paar Monate ein paar Zeilen Bash zu schreiben, reicht nicht aus, um es wirklich zu beherrschen ;)


Ob das ganze funktioniert, kann ich erst heute Abend sagen. Aber es sieht ja erstmal gut aus.



PS: Werden auf diese Art nicht auch die CDs abgefragt? Sprich: Wenn ich eine CD im Laufwerk habe fängt sie bei jedem Aufruf an zu drehen?
 

Kampfgnom

Granny Smith
Registriert
11.06.07
Beiträge
14
Works like a charm :)

Vielen Dank nochmal.

Ich habe sehr selten mal CDs im Laufwerk und kann daher dieses sehr kleine Manko übersehen :)