Mini-HowTo: HAL - USB-Wechselmedien einen festen Mountpunkt zuweisen

Status
Für weitere Antworten geschlossen.

spidy

Moderator
Hi Folks,

Ich habe meine USB-Festplatte in 3 Partitionen eingerichtet. Wenn ich nun die Platte einschalte, dann wird die auch brav gemountet und ist ansprechbar als:

Code:
/media/disk           (/dev/sdb1)
/media/disk-2         (/dev/sdb2)
/media//disk-3        (/dev/sdb3)
Beim nächsten Einschalten sieht das dann z.B. so aus:

Code:
/media/disk           (/dev/sdb3)
/media/disk-2         (/dev/sdb2)
/media//disk-3        (/dev/sdb1)
Wieso & wie kann ich dies verhindern ?

Cheers.

Spidy
 

Rain_Maker

Administrator
Teammitglied
AW: USB-Laufwerk

Da ich mich damit noch nicht genauer befasst habe, kann ich Dir nur zwei Stichworte geben, wobei ich mir nicht 100%ig sicher bin, ob Ersteres oder Zweiteres bei SuSE eher zum Zuge kommt, ich tendiere aber eher zu Zweiterem.

Fürs Automounten wird udev/hal verwendet, man könnte sich also seine spezielle

- udev-Regel

- Hal-policy

für diese Festplatte schreiben.

Als Identifizierung müsste man wahrscheinlich die (und das dürfte für Beides gelten) "UUID" der jeweiligen Partitionen verwenden.

Code:
ls -ls /dev/disk/by-uuid
oder

Code:
/sbin/blkid
sind da die besten Freunde.

Greetz,

RM
 

Rain_Maker

Administrator
Teammitglied
AW: USB-Laufwerk

Das könnte es doch sein:

SDB:Mounten zu festen Mountpoints - openSUSE

Legen Sie als root in /usr/share/hal/fdi/95userpolicy/ eine Datei mit einem beliebigen Dateinamen und der Endung .fdi an (bei 10.0 sollte in /usr/share/hal/fdi/policy/ das Verzeichnis 95userpolicy angelegt und darin die Datei erstellt werden), also zum Beispiel:

mountpoints.fdi

--------------SNIP-------------------

Eine andere Möglichkeit wäre, das Device per UUID zu identifizieren. Diese Version funktioniert auch unter SUSE 10.0:

Code:
<?xml version="1.0" encoding="ISO-8859-1"?> <!-- -*- SGML -*- -->
<deviceinfo version="0.2">
  <device>
    <match key="block.is_volume" bool="true">
      <match key="volume.fsusage" string="filesystem">
        <match key="volume.uuid" string="UUID">
          <merge key="volume.policy.should_mount" type="bool">true</merge>>
          <merge key="volume.policy.desired_mount_point" type="string">MOUNTPOINT</merge>
        </match>
      </match>
    </match>
  </device>
</deviceinfo>
Hierbei muss für UUID der UUID Wert des Gerätes eingetragen werden, welcher sich per 'lshal' in Erfahrung bringen lässt. Für MOUNTPOINT kann dann ein Name vergeben werden, unter welchem dieses Gerät dann unter /media erscheint.
Die UUID zu wäre der sicherste Weg, eine Partition eindeutig zu identifizieren.

(Fragt sich nur, ob das auch unter 10.3 noch so funktioniert)

Greetz,

RM
 

spidy

Moderator
AW: USB-Laufwerk

Jepp, könnte sein, den Link habe ich heute Morgen auch gefunden.
Werde heute Abend mal schauen, ob dies funktioniert.

Spidy
 

Rain_Maker

Administrator
Teammitglied
AW: USB-Laufwerk

Zumindest würde ich mir aber das "lshal" zur Ermittlung der UUID ersparen, denn die Ausgabe ist "etwas länglich" aber der entscheidende Teil ist zur Ausgabe von "blkid" identisch.

Code:
lshal |grep volume.uuid
udi = '/org/freedesktop/Hal/devices/volume_uuid_f22f80d5_5f30_46c0_8a47_468d21ffd2fe'
  info.udi = '/org/freedesktop/Hal/devices/volume_uuid_f22f80d5_5f30_46c0_8a47_468d21ffd2fe'  (string)
  volume.uuid = 'f22f80d5-5f30-46c0-8a47-468d21ffd2fe'  (string)
udi = '/org/freedesktop/Hal/devices/volume_uuid_4a0a573f_ae24_43a8_aab4_4746094945a1'
  info.udi = '/org/freedesktop/Hal/devices/volume_uuid_4a0a573f_ae24_43a8_aab4_4746094945a1'  (string)
  volume.uuid = '4a0a573f-ae24-43a8-aab4-4746094945a1'  (string)
udi = '/org/freedesktop/Hal/devices/volume_uuid_064edc10_daee_406f_b9fd_37bd3446ef51'
  info.udi = '/org/freedesktop/Hal/devices/volume_uuid_064edc10_daee_406f_b9fd_37bd3446ef51'  (string)
  volume.uuid = '064edc10-daee-406f-b9fd-37bd3446ef51'  (string)
udi = '/org/freedesktop/Hal/devices/volume_uuid_b5a71ac9_a4e7_4664_a7c9_856d1aa80c54'
  info.udi = '/org/freedesktop/Hal/devices/volume_uuid_b5a71ac9_a4e7_4664_a7c9_856d1aa80c54'  (string)
  volume.uuid = 'b5a71ac9-a4e7-4664-a7c9-856d1aa80c54'  (string)
udi = '/org/freedesktop/Hal/devices/volume_uuid_1861a717_3105_411c_86fb_2ab0c2bb6c62'
  info.udi = '/org/freedesktop/Hal/devices/volume_uuid_1861a717_3105_411c_86fb_2ab0c2bb6c62'  (string)
  volume.uuid = '1861a717-3105-411c-86fb-2ab0c2bb6c62'  (string)
udi = '/org/freedesktop/Hal/devices/volume_uuid_716bc6ad_cced_4f4e_9752_c37a84c644d8'
  info.udi = '/org/freedesktop/Hal/devices/volume_uuid_716bc6ad_cced_4f4e_9752_c37a84c644d8'  (string)
  volume.uuid = '716bc6ad-cced-4f4e-9752-c37a84c644d8'  (string)
  volume.uuid = ''  (string)
udi = '/org/freedesktop/Hal/devices/volume_uuid_80fbbfe2_ca26_4e47_8b03_7de72c3a358f'
  info.udi = '/org/freedesktop/Hal/devices/volume_uuid_80fbbfe2_ca26_4e47_8b03_7de72c3a358f'  (string)
  volume.uuid = '80fbbfe2-ca26-4e47-8b03-7de72c3a358f'  (string)
  volume.uuid = ''  (string)
udi = '/org/freedesktop/Hal/devices/volume_uuid_41a4964f_4991_4d57_9463_ea58d0489455'
  info.udi = '/org/freedesktop/Hal/devices/volume_uuid_41a4964f_4991_4d57_9463_ea58d0489455'  (string)
  volume.uuid = '41a4964f-4991-4d57-9463-ea58d0489455'  (string)
udi = '/org/freedesktop/Hal/devices/volume_uuid_5613_C162'
  info.udi = '/org/freedesktop/Hal/devices/volume_uuid_5613_C162'  (string)
  volume.uuid = '5613-C162'  (string)
(Festplatte + USB-Stick)

Code:
blkid
/dev/sda2: UUID="80fbbfe2-ca26-4e47-8b03-7de72c3a358f" TYPE="ext3" SEC_TYPE="ext2"
/dev/sda4: UUID="716bc6ad-cced-4f4e-9752-c37a84c644d8" TYPE="ext3" SEC_TYPE="ext2"
/dev/sda5: UUID="1861a717-3105-411c-86fb-2ab0c2bb6c62" TYPE="ext3" SEC_TYPE="ext2"
/dev/sda6: UUID="b5a71ac9-a4e7-4664-a7c9-856d1aa80c54" TYPE="ext3" SEC_TYPE="ext2"
/dev/sda7: UUID="064edc10-daee-406f-b9fd-37bd3446ef51" SEC_TYPE="ext2" TYPE="ext3"
/dev/sda8: TYPE="swap" UUID="4a0a573f-ae24-43a8-aab4-4746094945a1"
/dev/sda9: UUID="f22f80d5-5f30-46c0-8a47-468d21ffd2fe" TYPE="reiserfs"
/dev/sdb1: UUID="41a4964f-4991-4d57-9463-ea58d0489455" TYPE="ext2"
/dev/sdb2: UUID="5613-C162" TYPE="vfat"
9 von 10 Hausfrauen würden die zweite Ausgabe vorziehen.

Greetz,

RM
 

spidy

Moderator
AW: USB-Festplatte & USB Stick (Suse >= 10.0)

Mein Feedback:

Also, die im Link erwähnte Vorgehensweise funktioniert einwandfrei, allerdings habe ich auch Anmerkungen:

1. Es gibt einen Unterschied zwischen der englischen und deutschen Seite bei opensuse.org. Auf der englischen Seite fehlt am Ende der letzte Beitrag: "Eine andere Möglichkeit wäre, das Device per UUID zu identifizieren. Diese Version funktioniert auch unter SUSE >=10.0:". Dieser xml-Code ist auf der englischen Seite nicht vorhanden !

2. Wichtig ist auch, dass Ihr für jeden USB-Stick/USB-Platte eine eigene Datei erstellt, auch wenn der Stick bzw. die Platte mehr als 1 Partition hat.
Also den xml-Code 3x in einer Datei anzugeben, dies ging bei mir nicht (achtet auch auf den Zeilenumbruch am Ende) !

3. Beim Suchen im Netz werdet Ihr auch auf "ältere" Beiträge stossen, die einen Lösungsweg via "udev" zeigen. Macht Euch den Gefallen und geht den "hal-Weg" !

So und nun eine Kurzversion, was Ihr machen müsst um USB-Platten einen fixen Mount-Punkt zu geben. Ihr müsst nur zwei Dinge beachten:


A. Legt für jede Partition als Root eine Datei in "/usr/share/hal/fdi/policy/20thirdparty/" mit der Endung ".fdi" an.

B. In jeder Datei sollte dieser Code sein:

Code:
<?xml version="1.0" encoding="ISO-8859-1"?>
<deviceinfo version="0.2">
  <device>
    <match key="block.is_volume" bool="true">
      <match key="volume.fsusage" string="filesystem">
        <match key="volume.uuid" string="[B][COLOR=Red]UUID[/COLOR][/B]">
          <merge key="volume.policy.should_mount" type="bool">true</merge>>
          <merge key="volume.policy.desired_mount_point" type="string">[B][COLOR=Red]MountPoint[/COLOR][/B]</merge>
        </match>
      </match>
    </match>
  </device>
</deviceinfo>
Ihr müsst nun die UUID und den MountPoint ändern. Die jeweilige UUID erhält Ihr (wie bereits erwähnt) durch "blkid" in der Konsole als Super-User.
Der MountPoint ist der Name, der unter "/media" erscheinen soll.

Cheers.

Spidy
 

Rain_Maker

Administrator
Teammitglied
AW: USB-Laufwerk

Getestet (unter openSUSE 10.2 und Archlinux) und für gut befunden.

Eine Kleinigkeit ist mir allerdings dann doch (dank des feinen Syntax-Highlighting von vim) aufgefallen, die zwar nicht schlimm aber zumindest etwas unsauber ist.

Code:
         <merge key="volume.policy.should_mount" type="bool">true</merge>[COLOR='Red']>[/COLOR]
Steht auch witzigerweise so im Wiki drin, die zweite, schliessende Klammer ">" ist nicht nötig, auch wenn es die eigentliche Funktion nicht beeinträchtigt.

Also:

Code:
<?xml version="1.0" encoding="ISO-8859-1"?>
<deviceinfo version="0.2">
  <device>
    <match key="block.is_volume" bool="true">
      <match key="volume.fsusage" string="filesystem">
        <match key="volume.uuid" string="UUID">
          <merge key="volume.policy.should_mount" type="bool">true</merge>
          <merge key="volume.policy.desired_mount_point" type="string">MountPoint</merge>
        </match>
      </match>
    </match>
  </device>
</deviceinfo>
Aber wie gesagt, das ist nur ein kleiner Schönheitsfehler.

Ich mach dann mal das Licht aus.


//Edit:

Nach ein wenig weiterem "Rumgebastel" noch ein weiterer Kommentar:

Es geht auch mit einer Datei für mehrere Partitionen, hier ein Beispiel für meine externe USB-HD mit 3 Partitionen (Die Einträge, die der jeweiligen Partition zugeordnet sind, wurden von mir farblich hervorgehoben).

Code:
<?xml version="1.0" encoding="ISO-8859-1"?>
<deviceinfo version="0.2">
[COLOR='Red']  <device>
    <match key="block.is_volume" bool="true">
      <match key="volume.fsusage" string="filesystem">
        <match key="volume.uuid" string="UUID_der_ersten_Partition">
          <merge key="volume.policy.should_mount" type="bool">true</merge>
          <merge key="volume.policy.desired_mount_point" type="string">MOUNTPUNKT_der_ersten_Partition</merge>
        </match>
      </match>
    </match>
  </device>[/COLOR]
  [COLOR='Blue']<device>
    <match key="block.is_volume" bool="true">
      <match key="volume.fsusage" string="filesystem">
        <match key="volume.uuid" string="UUID_der_zweiten_Partition">
          <merge key="volume.policy.should_mount" type="bool">true</merge>
          <merge key="volume.policy.desired_mount_point" type="string">Mountpunkt_der_zweiten_Partition</merge>
        </match>
      </match>
    </match>
  </device>[/COLOR]
[COLOR='Sienna']  <device>
    <match key="block.is_volume" bool="true">
      <match key="volume.fsusage" string="filesystem">
        <match key="volume.uuid" string="UUID_der_dritten_Partition">
          <merge key="volume.policy.should_mount" type="bool">true</merge>
          <merge key="volume.policy.desired_mount_point" type="string">Mountpunkt_der_dritten_Partition</merge>
        </match>
      </match>
    </match>
  </device>[/COLOR]
</deviceinfo>
Greetz,

RM
 

Rain_Maker

Administrator
Teammitglied
AW: Mini-HowTo: HAL - USB-Wechselmedien einen festen Mountpunkt zuweisen

Kleiner Zusatztipp, wie man das für die meisten Automounter, die auf HAL zurückgreifen (und damit auch pmount-hal, siehe dieses kleine HowTo) auf einen Schlag erledigen kann.

HAL liest vorhandene "Disklabels" aus, diese kann man z.B. mit gparted oder den Konsolentools

Code:
tune2fs # ext2/3

reiserfstune # für ReiserFS (welch Überraschung)

mklabel # vfat, im Paket mtools enthalten

ntfslabel # naja, natürlich für ntfs, im Paket ntfsprogs  enthalten
auch noch nachträglich setzen.

Für die Änderung von Disklabels auf Windows/DOS-Dateisytemen sei dem geneigten Leser dieses HowTo nahegelegt.

https://help.ubuntu.com/community/RenameUSBDrive

(openSUSE-User können sich natürlich das "sudo-Gehampel" ersparen, indem sie sich vorher mit "su -" zu root machen.)

WICHTIG:

Die zu ändernden Partitionen sollten _NICHT_ gemountet sein, notfalls als root mit "umount /dev/devicefile" aushängen (vorher natürlich mit "fdisk -l" das devicefile ermitteln).

Wer ganz auf Nummer sicher gehen will, der sollte vor diesen Aktionen am Dateisystem ein Backup anlegen (bei mir ging es bisher immer gut, aber ich habe so oder so Backups).


Vorteil der Geschichte:

Das Ganze wird unter verschiedenen Desktops, auf verschiedenen Kisten und mit unterschiedlichen Automountern funktionieren, sofern diese auf HAL zurückgreifen.

Greetz,

RM
 
Status
Für weitere Antworten geschlossen.
Oben