USB-Datenträger automatisch einbinden (So geht's)


12

Hintergrund: Ich versuche, eine USB-Festplatte als schreibgeschützt zu mounten, aber meine Ubuntu-Installation mountet sie rw, wenn ich die Festplatte einstecke.

Ich kann die Festplatte manuell aushängen und sie mit den Befehlen umount und mount als schreibgeschützt erneut einhängen, aber das macht keinen Spaß. Könnte mir jemand eine kurze Erklärung geben, wie genau USB-Mounts auf einem typischen Linux-System automatisch ausgeführt werden (udev? Historischer Hintergrund ist auch nett) und wie ich diesen Prozess optimieren kann, damit ich die Festplatte lesen kann?

Vielen Dank.

Bearbeiten: Ich benutze Gnome, wenn das überhaupt hilft.
Edit2: In meiner Eile habe ich vergessen, ein bisschen mehr Informationen zur Verfügung zu stellen. So sieht die Festplatte bei der Ausgabe von 'mount' aus.

/dev/sdb1 on /media/LaCie type fuseblk (rw,nosuid,nodev,allow_other,default_permissions,blksize=4096)

Edit3: Dies kann auch auf seine eigene Weise relavent sein. In der Mount-Ausgabe habe ich auch Folgendes:

gvfs-fuse-daemon on /home/fletcher/.gvfs type fuse.gvfs-fuse-daemon (rw,nosuid,nodev,user=fletcher)  

Ich dachte, dass dies mit dem oben genannten Fuseblk-Mount zu tun haben könnte, aber was ich herausfand, war dies.

Gvfs ist das virtuelle Gnome-Dateisystem. Es ist ein virtuelles Dateisystem, das auf dem bereits vorhandenen Kernel vfs aufbaut. gvfs verwendet die GIO-Bibliothek (bei der es sich um eine VFS-API handelt), um auf Dateien, Geräte, Remotenetzwerkspeicherorte usw. zuzugreifen. Dies ist im Wesentlichen der Fall, wenn Sie eine Remotenetzwerkverbindung in Nautilus bereitstellen. Es verwendet FUSE, um den Speicherort (innerhalb?) Des .gvfs-Verzeichnisses bereitzustellen, und kommuniziert dann mit der virtuellen Dateisystemschicht von gnome, um mit der neuen Bereitstellung zu kommunizieren.

Grundsätzlich erlaubt diese Struktur dem Benutzer, neue Orte dynamisch einzuhängen und mit ihnen über Nautilus zu interagieren.

Nur als Referenz: FUSE ist ein Userspace-Dateisystem, auch bekannt als "mount", auch wenn dieser Benutzer kein Root-Benutzer ist.

Also, wo bleibt mir das? Nun, die LaCie-Festplatte wird mit dem Typ fuseblk gemountet. Dies ist nur ein Blockgerät mit Sicherung. Daher hat ein Daemon das Laufwerk automatisch erkannt, als es eingesteckt war, und dann die Sicherung ausgeführt, um mein Block-Gerät zu mounten. Also, welcher Daemon ist das und wie ist er konfiguriert (ich vermute, es ist eine interne Gnom-Sache), ist die wichtigste Frage. Eine zweite Frage ist, wie das System eine neu eingelegte USB-Festplatte automatisch erkannt hat, aber ich denke, das ist ein bisschen abseits und viel niedriger (sprich: udev?).

Links:


Gibt es einen fstab-Eintrag für das / media / LaCie-Dateisystem und / oder das / dev / sdb1-Gerät? Ist / dev / sdb1 trotzdem beschriftet (e2label / dev / sdb1)?
Tok

Nein, es gibt keinen fstab-Eintrag. Ich glaube, es ist beschriftet, wenn es unter / media / LaCie eingebunden wird. Ich müsste ntfslabel installieren, um das herauszufinden, aber ich bin gerade dabei, die Arbeit zu verlassen. Es erscheint auch auf meinem Desktop als LaCie.
fthinker

Antworten:


3

Ich habe versucht, dies auf meinem Computer zu tun und es ist Arbeit :)

Zuerst erhalte ich einen Namen für mein Gerät:

ls -l /proc/disk/by-id/

In meinem Fall ist es / proc / disk / by-id / usb-09a6_8001

Ich habe diese Zeile in / etc / fstab hinzugefügt:

/dev/disk/by-id/usb-09a6_8001   /media/macle ext2 ro,users 0 2

Und es funktioniert, wenn ich meinen USB-Schlüssel einstecke, ist er auf Ro gemountet und gehört meinem Benutzer.


Vielen Dank :) Aber der Hauptschwerpunkt meiner Frage ist es, die extreme Frustration zu lindern, die ich jedes Mal verspüre, wenn ich verstehen muss, wie automount- und usb-Geräte funktionieren. Ich bin hier, um die Magie zu entschlüsseln, die hinter diesen komplexen Systemen steckt. Außerdem ist die Verwendung von fstab- und usb-Geräten etwas knifflig, da nicht immer garantiert wird, dass sie beim Start eingesteckt werden!
fthinker

1
Ich weiß nicht, wie es funktioniert, aber ich bin mir ziemlich sicher, dass neue Geräte von einer udev-Regel erkannt werden. Schauen Sie sich /etc/udev/rules.d/ und /lib/udev/rules.d/ an.
Profy


2

Wie Ulrich Dangel sagte, sollten heutzutage Udisken die Referenz sein. Ich habe noch nicht gesehen, wie es benachrichtigt wird (udev-> dbus-> udisks?), Aber manuell kann es verwendet werden, um ein Gerät mit den von Ihnen benötigten Optionen zu mounten.

Udisks spricht mit polkit, um zu sehen, was ein Benutzer mit Volumes machen darf. Ich vermute, hier, aber wenn wir einen Ort zum Festlegen von Eigenschaften für eine benannte Festplatte / ein benanntes Gerät finden könnten, sollte es funktionieren.

Mit udisksctl sollte Ihr Benutzer in der Lage sein, das Gerät mit den von Ihnen benötigten Optionen zu mounten.

udisksctl mount -b / dev / sdxy -o ro / mountpoint

Ich weiß jedoch nicht, wo ich die Optionen platzieren soll.

UPDATE: Nach Ulrichs Vorschlägen bin ich zum Gnome-Festplatten-Dienstprogramm gegangen und habe das erreicht, was Sie brauchen, bin mir aber nicht sicher, ob es die eleganteste Lösung ist oder nicht. Ich verwende Kororaa 17 (Fedora 17 basiert) mit Cinnamon + Gnome3, gehe zum Dienstprogramm "Disks" und ändere die Mount-Optionen für mein USB-Laufwerk, füge "ro" hinzu und speichere.

Es fügt einen Eintrag zu fstab hinzu (dort sehe ich es nicht als elegante Lösung, ich denke, es sollte eine Benutzerkonfiguration bleiben, die nicht systemweit ist). Ich schließe das Laufwerk an und es wird automatisch mit Optionen auf dem ausgewählten Mount-Punkt gemountet Ich habe bei Gnome Festplatten-Dienstprogramm gespeichert.


Was meinst du mit dir, um zu sehen, wie es benachrichtigt wird? Welcher Schritt fehlt?
Ulrich Dangel

Und es ist nicht udev→dbus→udiskaberudev/uevent→udisk→dbus
Ulrich Dangel

Ich meinte, ich war nicht wirklich sicher und wollte es überprüfen, aber jetzt sehe ich, dass ich mich nicht zu 100% geirrt habe.
verdreifacht

[strike] Bitte zeige die Zeile, die zu fstab hinzugefügt wurde. Ich möchte bestätigen, was ich denke, dass es ist. [/ Strike] Also stimmt die fstab-Zeile mit der Antwort von @ profy überein? dh mit der roOption.
Invertzucker

-1

Zum Thema, wie der Kernel Hardware erkennt, hier ein sehr schöner Artikel, was passiert .

In Summe:

  • Der Kernel durchsucht ständig Ihre PC-Busse und ordnet Geräte dem virtuellen Dateisystem zu, normalerweise unter /sys/.
  • Der Kernel sendet eine Nachricht, dass neue Hardware für udev verfügbar ist.
    • udev-Regeln auf dem Gerät verarbeiten
    • Verknüpfen Sie das Gerät mit /dev/
    • Gerätetreiber laden
    • Benachrichtigen Sie den User Space des Geräts über dbus

An diesem Punkt ist das Gerät bereit, vom Anwenderbereich verwendet zu werden. Gvfs und FUSE sind beide Userspace-Dateisysteme.


Nein, udevnormalerweise werden Anwendungen nicht benachrichtigt, da dbusdies von Anwendungen von Drittanbietern durchgeführt wird. Wenn Sie verwenden qdbus --system, werden keine udev-Namen angezeigt. Typischerweise Sie Anwendungen nur abonnierten themself ueventsoder ihre eigenen Regeln versenden
Ulrich Dangel

Vielen Dank für den Hinweis auf @ulrich. Meine Zusammenfassung enthält einen sehr einfachen Überblick, der viele Zwischenschritte ausschließt. Weitere Informationen finden Sie im verlinkten Artikel.
Invertzucker

2
Der Artikel ist auch falsch, da normalerweise keine Umfragen zur Überwachung der Busse durchgeführt werden
Ulrich Dangel
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.