USB Automount

Hast Du Probleme mit Hardware, die durch die anderen Foren nicht abgedeckt werden? Schau auch in den "Tipps und Tricks"-Bereich.
Antworten
Traveller42
Beiträge: 26
Registriert: 08.05.2021 22:43:21

USB Automount

Beitrag von Traveller42 » 08.05.2021 23:00:58

Ja, ich habe mich im Forum nach diesemThema umgeschaut, bin aber aus den Beiträgen leider nicht schlau geworden ;-)
Eine Suchemaschinen-Suche hat mich leider auch nicht schlauer gemacht.

Ich arbeite auf einem Raspberry PI 4B headless, d.h. ohne grafische Oberfläche und ausschliesslich per SSH. Die Arbeit mit einer grafischen Oberfläche ist keine Option.
Die installierte Version von Raspbian bzw. Raspberry OS ist "Buster", heute Abend frisch aktualisiert.

Ich möchte einen USB-Stick oder eine USB-SSD automatisch einhängen lassen. Dazu habe ich überall Hinweise auf "usbmount" gefunden. Leider funktioniert dies nicht. Das Paket lässt sich installieren, die Verzeichnisse unter /media wurden angelegt. Aber beim einstecken eines USB-Sticks passiert rein gar nichts. Auch nach dem Edit der Konfigurationsdatei und einem Reboot passiert nichts.

Code: Alles auswählen

sudo blkid -o list -w /dev/null
zeigt folgendes Ergebnis:

Code: Alles auswählen

device         fs_type label           mount point    UUID
-------------------------------------------------------------------------------
/dev/mmcblk0p1   vfat     boot           /boot              7581-8A48
/dev/mmcblk0p2   ext4     rootfs        /                     fa37d505-e741-4d35-bcec-4580aef395e1
/dev/sda1             exfat   SSD512      (not mounted)  BE5F-ADBE
/dev/sdb1             vfat     USB 32GB   (in use)           E8B3-01C1
/dev/mmcblk0                                   (in use)
Der Stick und die SSD sind also vorhanden und werden erkannt. Manuelles mounten/unmounten funktioniert, der Stick und die SSD sind problemlos ansprechbar.

Ich habe mir verschiedene anderen Themen angeschaut, und verstehe auch, dass ich problemlos mit fstab etc das Mounten erledigen könnte. Dies setzt aber voraus, dass die BulkIDs der Sticks bekannt sind. Ich wünsche mir aber, dass ein unbekannter USB Stick ebenfalls auto-gemountet wird - eben ganz so, wie an einem Sinnlos-Rechner.

Wie kann ich dies bewerkstelligen? Oder, wie bekomme ich usbmount zum laufen? Was mich wundert: Laut verschiedenen Beiträgen war dieses Paket zwischenzeitlich vom Repository verschwunden, weil es vom Author nicht mehr gepflegt wurde. Nun ist es aber wieder da und lässt sich kommentarlos installieren.

Das Config-File sieht übrigens so aus ... hab' der Kürze wegen alle Kommentare rausgeschmissen hier für das Forum:

Code: Alles auswählen

ENABLED=1
MOUNTPOINTS="/media/usb0 /media/usb1 /media/usb2 /media/usb3
             /media/usb4 /media/usb5 /media/usb6 /media/usb7"
FILESYSTEMS="vfat ext2 ext3 ext4 hfsplus ntfs fuseblk"
MOUNTOPTIONS="sync,noexec,nodev,noatime,nodiratime"
FS_MOUNTOPTIONS="-fstype=vfat,gid=users,dmask=0007,fmask=0117"
VERBOSE=no
Ich habe VERBOSE mal auf YES gestellt. Hier sind die Einträge vom Syslog nach dem Einstecken des USB-Sticks:

Code: Alles auswählen

May  8 23:09:27 DL0JRK kernel: [   86.043387] usb 1-1.3: new high-speed USB device number 3 using xhci_hcd
May  8 23:09:27 DL0JRK kernel: [   86.174424] usb 1-1.3: New USB device found, idVendor=0781, idProduct=5571, bcdDevice= 1.27
May  8 23:09:27 DL0JRK kernel: [   86.174446] usb 1-1.3: New USB device strings: Mfr=1, Product=2, SerialNumber=3
May  8 23:09:27 DL0JRK kernel: [   86.174464] usb 1-1.3: Product: Cruzer Fit
May  8 23:09:27 DL0JRK kernel: [   86.174481] usb 1-1.3: Manufacturer: SanDisk
May  8 23:09:27 DL0JRK kernel: [   86.174498] usb 1-1.3: SerialNumber: 4C531001610213102544
May  8 23:09:27 DL0JRK kernel: [   86.177180] usb-storage 1-1.3:1.0: USB Mass Storage device detected
May  8 23:09:27 DL0JRK kernel: [   86.193299] scsi host0: usb-storage 1-1.3:1.0
May  8 23:09:27 DL0JRK mtp-probe: checking bus 1, device 3: "/sys/devices/platform/scb/fd500000.pcie/pci0000:00/0000:00:00.0/0000:01:00.0/usb1/1-1/1-1.3"
May  8 23:09:27 DL0JRK mtp-probe: bus: 1, device: 3 was not an MTP device
May  8 23:09:27 DL0JRK mtp-probe: checking bus 1, device 3: "/sys/devices/platform/scb/fd500000.pcie/pci0000:00/0000:00:00.0/0000:01:00.0/usb1/1-1/1-1.3"
May  8 23:09:27 DL0JRK mtp-probe: bus: 1, device: 3 was not an MTP device
May  8 23:09:28 DL0JRK kernel: [   87.274583] scsi 0:0:0:0: Direct-Access     SanDisk  Cruzer Fit       1.27 PQ: 0 ANSI: 6
May  8 23:09:28 DL0JRK kernel: [   87.279299] sd 0:0:0:0: [sda] 61056064 512-byte logical blocks: (31.3 GB/29.1 GiB)
May  8 23:09:28 DL0JRK kernel: [   87.288276] sd 0:0:0:0: [sda] Write Protect is off
May  8 23:09:28 DL0JRK kernel: [   87.288300] sd 0:0:0:0: [sda] Mode Sense: 43 00 00 00
May  8 23:09:28 DL0JRK kernel: [   87.289021] sd 0:0:0:0: [sda] Write cache: disabled, read cache: enabled, doesn't support DPO or FUA
May  8 23:09:28 DL0JRK kernel: [   87.291422] sd 0:0:0:0: Attached scsi generic sg0 type 0
May  8 23:09:28 DL0JRK kernel: [   87.383910]  sda: sda1
May  8 23:09:28 DL0JRK kernel: [   87.387981] sd 0:0:0:0: [sda] Attached SCSI removable disk
May  8 23:09:29 DL0JRK usbmount[807]: loaded usbmount configurations
May  8 23:09:29 DL0JRK usbmount[807]: creating /var/run/usbmount directory
May  8 23:09:29 DL0JRK usbmount[807]: trying to acquire lock /var/run/usbmount/.mount.lock
May  8 23:09:29 DL0JRK usbmount[807]: acquired lock /var/run/usbmount/.mount.lock
May  8 23:09:29 DL0JRK usbmount[807]: /dev/sda does not contain a filesystem or disklabel
May  8 23:09:29 DL0JRK systemd-udevd[796]: Process '/usr/share/usbmount/usbmount add' failed with exit code 1.
May  8 23:09:29 DL0JRK usbmount[832]: loaded usbmount configurations
May  8 23:09:29 DL0JRK usbmount[832]: trying to acquire lock /var/run/usbmount/.mount.lock
May  8 23:09:29 DL0JRK usbmount[832]: acquired lock /var/run/usbmount/.mount.lock
May  8 23:09:29 DL0JRK usbmount[832]: /dev/sda1 contains filesystem type vfat
May  8 23:09:29 DL0JRK usbmount[832]: mountpoint /media/usb0 is available for /dev/sda1
May  8 23:09:29 DL0JRK usbmount[832]: executing command: mount -tvfat -osync,noexec,nodev,noatime,nodiratime,gid=users,dmask=0007,fmask=0117 /dev/sda1 /media/usb0
May  8 23:09:29 DL0JRK kernel: [   87.902646] FAT-fs (sda1): Volume was not properly unmounted. Some data may be corrupt. Please run fsck.
May  8 23:09:29 DL0JRK usbmount[832]: executing command: run-parts /etc/usbmount/mount.d
May  8 23:09:29 DL0JRK usbmount[832]: usbmount execution finished
Wenn ich den Befehl aus dem Syslog manuell ausführe, funktioniert dieser nur, wenn ich mit suodo vorweg arbeite. Vielleicht ist dies das Problem? Das usbmount nicht die richtigen Rechte nutzt? Nur wie kannich hier die passenden Rechte an den Mann bringen?

Code: Alles auswählen

 sudo mount -tvfat -osync,noexec,nodev,noatime,nodiratime,gid=users,dmask=0007,fmask=0117 /dev/sda1 /media/usb0
===> wird einwandfrei gemountet.

Benutzeravatar
smutbert
Moderator
Beiträge: 8311
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

Re: USB Automount

Beitrag von smutbert » 08.05.2021 23:33:32

Willkommen im Debianforum,

In buster, ja sogar ganz debian gibt es seit oldolstable (jessie) das Paket Debianusbmount nicht mehr (abgesehen vom Überbleibsel in unstable). Es ist also aufgrund mangelnder Pflege verschwunden geblieben und es würde mich nicht wundern, wenn es mit dem aktuellen udev nicht mehr zusammarbeitet, also nicht mehr richtig funktioniert.

Aber:
Es gibt in deinem Logauschnitt zwei sehr eindeutige Zeilen:

Code: Alles auswählen

May  8 23:09:29 DL0JRK usbmount[832]: executing command: mount -tvfat -osync,noexec,nodev,noatime,nodiratime,gid=users,dmask=0007,fmask=0117 /dev/sda1 /media/usb0
May  8 23:09:29 DL0JRK kernel: [   87.902646] FAT-fs (sda1): Volume was not properly unmounted. Some data may be corrupt. Please run fsck.
Die erste dokumentiert, dass usbmount tatsächlich versucht »/dev/sda1«, vermutlich den Stick zu mounten.
Noch interessierte die zweite Zeile, die vom FAT-Dateisystemtreiber des Kernels stammt und zeigt, dass das Dateisystem auch tatsächlich gemountet wurde. Es handelt sich nämlich um eine Warnung, dass das Dateisystem einmal nicht sauber geunmountet ungemountet ausgehängt wurde und die beim Mounten kommt.

Was nicht aus der Meldung hervorgeht, ist wo das Dateisystem tatsächlich gemountet wurde. Eventuell wäre nach so einem Versuch die Ausgabe von

Code: Alles auswählen

$ mount | grep /dev/sda1
interessant.

Darüber hinaus fallen mir auch noch ein paar weitere Anmerkungen ein, aber die hebe ich mir für etwas später auf, wenn (hoffentlich) das Rätsel um usbmount gelöst ist

Traveller42
Beiträge: 26
Registriert: 08.05.2021 22:43:21

Re: USB Automount

Beitrag von Traveller42 » 08.05.2021 23:54:15

Besten Dank für das Willkommen und die schnelle Antwort.
  1. Die Ausgabe im Syslog ist leider nur eine Textausgabe aus dem Script. Ich habe das Script nun editert und überall vor den "mount" befehl noch ein "sudo" gesetzt. Leider hat dies nicht geholfen.
  2. Den Hinweis auf das angeblich fehlerhafte Filesystem habe ich auch gesehen. Dies ist aber nicht richtig. Ich habe mit fsck geprüft. Das Filesystem ist in Ordnung.

Die Ausgabe des mount Befehls beweist leider, das der USB Stick nicht gemountet wurde.
Ich habe usbmount hier angehängt: pastebin/?mode=view&s=41373

Aber mal anders herum, bevor wir noch mehr Gehirnschmalz in das usbmount Thema stecken: Welche andere Möglichkeiten habe ich, ein USB-Device automatisch mounten zu lassen in meinem Fall?

Benutzeravatar
smutbert
Moderator
Beiträge: 8311
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

Re: USB Automount

Beitrag von smutbert » 09.05.2021 00:30:53

Dass die erste Zeile nur die Ausgabe des Skripts ist, ist schon klar, aber die zweite Zeile zeigt, dass es danach tatsächlich gemountet wurde. Keine Ahnung was dann noch passiert ist.
Und die Warnung stimmt schon: Die besagt ja nicht, dass tatsächlich etwas beschädigt ist, sondern nur dass etwas beschädigt sein könnte.

Eine andere Möglichkeit wäre devmon aus Debianudevil, das aber dieselbe prinzipbedingte Schwäche hat wie usbmount.
Dazu schreibe ich noch zu einer etwas weniger späten Stunde etwas.

Traveller42
Beiträge: 26
Registriert: 08.05.2021 22:43:21

Re: USB Automount

Beitrag von Traveller42 » 09.05.2021 00:56:05

Verstanden ;-)

Ich habe den USB-Stick jetzt nochmal mit FSCK geprüft und das "dirty bit" entfernt.
Danach habe ich ihn wieder eingesteckt - und siehe da, das syslog sagt wieder, dass das filesystem unsauber ist.
Trotz allem, ist der USB-Stick anschliessend nicht gemountet.

Die testweise im Script eingesetzten sudo Kommandos habe ich wieder entfernt, da das Script anscheinend doch mit root-Rechten läuft.

Benutzeravatar
Blackbox
Beiträge: 4289
Registriert: 17.09.2008 17:01:20
Lizenz eigener Beiträge: GNU Free Documentation License

Re: USB Automount

Beitrag von Blackbox » 09.05.2021 01:53:02

Traveller42 hat geschrieben: ↑ zum Beitrag ↑
08.05.2021 23:54:15
Welche andere Möglichkeiten habe ich, ein USB-Device automatisch mounten zu lassen in meinem Fall?
Debianpmount; Debiangvfs; Debianafuse; Debianudevil usw.
Eigenbau PC: Debian Sid - Kernel: 6.5.13 - Xfce 4.18 mit sway
Desktop PC: Dell Inspiron 530 - Debian Sid - Kernel: 6.5.13 - Xfce 4.18 mit sway
Notebook: TUXEDO BU1406 - Debian Sid - Kernel: 6.5.13 - Xfce 4.18 mit sway
Alles Minimalinstallationen und ohne sudo/PA/PW.
Rootserver: Rocky Linux 9.3 - Kernel: 5.14

Freie Software unterstützen, Grundrechte stärken!

Benutzeravatar
smutbert
Moderator
Beiträge: 8311
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

Re: USB Automount

Beitrag von smutbert » 09.05.2021 22:22:30

Damit das Dateisystem in (auch erkennbar) in konsistenten Zustand ist, hängt man es normalerweise aus bevor man den USB-Stick abzieht.
In der grafischen Oberfläche gibt es dafür normalerweise irgendeinen aushängen- oder auswerfen-Knopf oder etwas ähnliches.

Bei usbmount weiß man dagegen eigentlich schon vorher, dass die Benutzer vor dem Abziehen des Sticks das Dateisystem nicht (immer) aushängen werden.
Damit die Daten trotzdem nach Möglichkeit vollständig geschrieben werden, mountet usbmount das Dateisystem mit der Option sync (sieht man auch im log). Mit dieser Option werden Daten möglichist schnell auf den Stick geschrieben, im Gegensatz zum Verhalten ohne sync bzw. mit async, bei dem die Daten eine gewisse Zeit gewartet wird und die Schreibzugriffe dann nach nach Möglichkeit zusammengefasst und eventuell in optimierter Reihenfolge erfolgen.

sync hat damit den Vorteil, dass man davon ausgehen kann, dass alle Daten geschrieben sind, wenn am Stick keine Zugriffle mehr leuchtet oder blinkt. Windows macht es meines Wissens im Prinzip genauso.

Der Nachteil ist, dass sync viel langsamer ist und i. A. auch mehr Schreibzugriffe erfolgen. Je nach Stick bedeutet das auch eine kürzere Lebenszeit des Sticks.
Außerdem wird ohne Aushängen der konsistente Zustand nicht im Dateisystem eingetragen, deswegen auch die Meldung beim Mounten, dass Daten beschädigt sein könnten.


Wenn es also irgendwie geht, würde ich immer eine Variante bevorzugen, bei der der Stick vor dem Abziehen auch ausgehängt wird, wobei mir durchaus klar ist, dass das speziell bei headless-Systemen unbequem und/oder schwierig bis fast unmöglich sein kann.


Mich würde ja noch immer interessieren auf deinem Raspberry Pi da wirklich passiert:
Traveller42 hat geschrieben: ↑ zum Beitrag ↑
09.05.2021 00:56:05
[...]
Danach habe ich ihn wieder eingesteckt - und siehe da, das syslog sagt wieder, dass das filesystem unsauber ist.
Trotz allem, ist der USB-Stick anschliessend nicht gemountet.
Da würde mich nach dem Anstecken die Ausgabe von

Code: Alles auswählen

dmesg -T
(mindestens vom Zeitpunkt des Erkennens des Sticks an) und die von

Code: Alles auswählen

mount
(möglichst recht bald nach dem Erkennen des Sticks) interessieren.


Willst du der Sache nicht auf den Grund gehen, würde ich am ehesten zu devmon/udevil tendieren. Die sync-Option ist dort per default nicht mit dabei, aber man kann sie natürlich angeben.

Traveller42
Beiträge: 26
Registriert: 08.05.2021 22:43:21

Re: USB Automount

Beitrag von Traveller42 » 11.05.2021 17:10:39

dmesg -T ergibt folgendes:

Code: Alles auswählen

[Di Mai 11 17:07:05 2021] usb 1-1.3: new high-speed USB device number 3 using xhci_hcd
[Di Mai 11 17:07:05 2021] usb 1-1.3: New USB device found, idVendor=0781, idProduct=5571, bcdDevice= 1.27
[Di Mai 11 17:07:05 2021] usb 1-1.3: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[Di Mai 11 17:07:05 2021] usb 1-1.3: Product: Cruzer Fit
[Di Mai 11 17:07:05 2021] usb 1-1.3: Manufacturer: SanDisk
[Di Mai 11 17:07:05 2021] usb 1-1.3: SerialNumber: 4C531001610213102544
[Di Mai 11 17:07:05 2021] usb-storage 1-1.3:1.0: USB Mass Storage device detected
[Di Mai 11 17:07:05 2021] scsi host0: usb-storage 1-1.3:1.0
[Di Mai 11 17:07:06 2021] scsi 0:0:0:0: Direct-Access     SanDisk  Cruzer Fit       1.27 PQ: 0 ANSI: 6
[Di Mai 11 17:07:06 2021] sd 0:0:0:0: [sda] 61056064 512-byte logical blocks: (31.3 GB/29.1 GiB)
[Di Mai 11 17:07:06 2021] sd 0:0:0:0: [sda] Write Protect is off
[Di Mai 11 17:07:06 2021] sd 0:0:0:0: [sda] Mode Sense: 43 00 00 00
[Di Mai 11 17:07:06 2021] sd 0:0:0:0: [sda] Write cache: disabled, read cache: enabled, doesn't support DPO or FUA
[Di Mai 11 17:07:06 2021] sd 0:0:0:0: Attached scsi generic sg0 type 0
[Di Mai 11 17:07:06 2021]  sda: sda1
[Di Mai 11 17:07:06 2021] sd 0:0:0:0: [sda] Attached SCSI removable disk
[Di Mai 11 17:07:07 2021] FAT-fs (sda1): Volume was not properly unmounted. Some data may be corrupt. Please run fsck.
Die ausgabe von "mount" ist folgende:

Code: Alles auswählen

/dev/mmcblk0p2 on / type ext4 (rw,noatime)
devtmpfs on /dev type devtmpfs (rw,relatime,size=3900044k,nr_inodes=85318,mode=755)
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
proc on /proc type proc (rw,relatime)
securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000)
tmpfs on /run type tmpfs (rw,nosuid,nodev,mode=755)
tmpfs on /run/lock type tmpfs (rw,nosuid,nodev,noexec,relatime,size=5120k)
tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,mode=755)
cgroup2 on /sys/fs/cgroup/unified type cgroup2 (rw,nosuid,nodev,noexec,relatime,nsdelegate)
cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,xattr,name=systemd)
none on /sys/fs/bpf type bpf (rw,nosuid,nodev,noexec,relatime,mode=700)
cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,cpu,cpuacct)
cgroup on /sys/fs/cgroup/net_cls,net_prio type cgroup (rw,nosuid,nodev,noexec,relatime,net_cls,net_prio)
cgroup on /sys/fs/cgroup/blkio type cgroup (rw,nosuid,nodev,noexec,relatime,blkio)
cgroup on /sys/fs/cgroup/perf_event type cgroup (rw,nosuid,nodev,noexec,relatime,perf_event)
cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,devices)
cgroup on /sys/fs/cgroup/pids type cgroup (rw,nosuid,nodev,noexec,relatime,pids)
cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,cpuset)
cgroup on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,freezer)
systemd-1 on /proc/sys/fs/binfmt_misc type autofs (rw,relatime,fd=34,pgrp=1,timeout=0,minproto=5,maxproto=5,direct)
debugfs on /sys/kernel/debug type debugfs (rw,relatime)
mqueue on /dev/mqueue type mqueue (rw,relatime)
sunrpc on /run/rpc_pipefs type rpc_pipefs (rw,relatime)
configfs on /sys/kernel/config type configfs (rw,relatime)
/dev/mmcblk0p1 on /boot type vfat (rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=ascii,shortname=mixed,errors=remount-ro)
tmpfs on /run/user/1000 type tmpfs (rw,nosuid,nodev,relatime,size=806428k,mode=700,uid=1000,gid=1000)

Benutzeravatar
smutbert
Moderator
Beiträge: 8311
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

Re: USB Automount

Beitrag von smutbert » 11.05.2021 23:17:37

Da muss ich zugeben, dass ich keine Ahnung habe was auf deinem Raspberry Pi da passiert – es erweckt den Eindruck als würde usbmount das Ding mounten und gleich wieder unmounten oder irgendsoetwas ähnliches.

Mounten auf der Kommandozeile funktioniert aber?

Dann kann ich nur raten es mit etwas anderem versuchen. Das erwähnte devmon würde ich zum Beispiel erst einmal testweise auf der Kommandozeile (über ssh) starten, mit der sync-Mountoption etwa so

Code: Alles auswählen

devmon --mount-options "sync,noexec,nosuid,nodev,noatime"
Da lässt sich auch schön live mitverfolgen was alles passiert.

Antworten