Automount verschiedener USB-Stick-Dateisysteme auf Jessie Lite

18

Ich möchte in der Lage sein, USB-Sticks wie fat32 und ntfs, die im laufenden Betrieb formatiert wurden, automatisch zu mounten, z .

Das Eingeben der UUID fstabist keine Option, da ich die UUID jedes Geräts ermitteln muss. Ich möchte verschiedene USB-Geräte mit unterschiedlichen Dateiformaten anschließen und automatisch einbinden können. Ist das möglich?

Auch ich habe es mal fast geschafft mit dem usbmountProgramm zu arbeiten. Ich konnte für eine Sekunde auf mein Laufwerk zugreifen, bevor der Fehler angezeigt wurde transport endpoint is not connected. Ich habe das Programm neu installiert, aber dann bin ich nicht einmal mehr an diesen Punkt gekommen, auch nicht mit dem Fehler.

F. Untermoser
quelle

Antworten:

15

Nach vielen Recherchen konnte ich mein Problem mit usbmount beheben:

Ntfs zu usbmount hinzufügen

  1. Installieren Sie usbmount mit sudo apt-get install usbmount.
  2. Installieren Sie das NTFS-Treiberpaket ntfs-3g mit sudo apt-get install ntfs-3g.

  3. Konfigurieren Sie usbmount so, dass bestimmte Dateisysteme eingehängt werden, indem Sie die usbmount-Datei mit öffnen sudo nano /etc/usbmount/usbmount.conf.

Hier drin ist eine Zeile mit dem Namen FILESYSTEMS="". Nur die in dieser Zeile angegebenen Dateisysteme werden über usbmount gemountet. Wir ändern sie in:FILESYSTEMS="vfat ntfs fuseblk ext2 ext3 ext4 hfsplus"

Wenn usbmount NTFS-Dateisysteme mounten soll, müssen Sie der Zeile ntfs und fuseblk hinzufügen . NTFS-Geräte werden vom ntfs-3g-Paket manchmal als fusblk aufgelistet, sodass diese beiden identisch sind. Ich weiß allerdings nicht genau warum.

Wenn Sie in der Konfiguration kein fuseblk hinzufügen , werden nicht angeschlossene NTFS-Geräte nicht automatisch abgemeldet. Sie bleiben gemountet und behalten den Ordner, in dem sie gemountet sind, bis das Gerät manuell gemountet wird unmount /dev/sda1 -> wobei sda1 eine andere Variable sein könnte .

Die nächste wichtige Zeile ist FS_MOUNTOPTIONS="". Hier legen Sie fest, welche Dateisysteme gemountet werden sollen und wie sie gemountet werden sollen.

Wir ändern es zu: FS_MOUNTOPTIONS="-fstype=ntfs-3g,nls=utf8,umask=007,gid=46 -fstype=fuseblk,nls=utf8,umask=007,gid=46 -fstype=vfat,gid=1000,uid=1000,umask=007"

Damit sind die Dateisysteme vfat (fat32) ntfs-3g (NTFS) und fuseblk (wieder NTFS) gemountet. Ich denke, die meisten Parameter können gleich bleiben. Auch hier fügen Sie einfach ntfs-3g ( add ntfs-3g not ntfs ) und fuseblk hinzu, um alle NTFS-Dateien mounten zu können. Für mehr Dateisysteme fügen Sie mehr Zeilen hinzu, die mit beginnen -fstype=.

Lassen Sie NTFS aktiviert, bis das Gerät vom Stromnetz getrennt wird

Hier ist eine Lösung für das Problem, wenn das gemountete NTFS-Laufwerk nur für einige Sekunden erreichbar ist. Dieser Fix stammt von Christian Weinberger .

  1. Erstellen Sie die Datei usbmount.rules in /etc/udev/rules.d/ mit sudo nano /etc/udev/rules.d/usbmount.rules.

Dies ist der Inhalt:

KERNEL=="sd*", DRIVERS=="sbp2",         ACTION=="add",  PROGRAM="/bin/systemd-escape -p [email protected] $env{DEVNAME}", ENV{SYSTEMD_WANTS}+="%c"
KERNEL=="sd*", SUBSYSTEMS=="usb",       ACTION=="add",  PROGRAM="/bin/systemd-escape -p [email protected] $env{DEVNAME}", ENV{SYSTEMD_WANTS}+="%c"
KERNEL=="ub*", SUBSYSTEMS=="usb",       ACTION=="add",  PROGRAM="/bin/systemd-escape -p [email protected] $env{DEVNAME}", ENV{SYSTEMD_WANTS}+="%c"
KERNEL=="sd*",                          ACTION=="remove",       RUN+="/usr/share/usbmount/usbmount remove"
KERNEL=="ub*",                          ACTION=="remove",       RUN+="/usr/share/usbmount/usbmount remove"
  1. Erstellen Sie die Datei usbmount @ .service in / etc / systemd / system / with sudo nano /etc/systemd/system/[email protected].

Dies ist der Inhalt:

[Unit]
BindTo=%i.device
After=%i.device

[Service]
Type=oneshot
TimeoutStartSec=0
Environment=DEVNAME=%I
ExecStart=/usr/share/usbmount/usbmount add
RemainAfterExit=yes

Starten Sie nun neu und überprüfen Sie, cat /etc/mtabin welchem ​​Ordner die USB-Geräte eingehängt sind. Standardmäßig sind sie in / media / usbstick0 eingebunden .

Quelle:

Christen reparieren

Warum fusblk?

F. Untermoser
quelle
Diese Lösung benötigt ein paar weitere Schritte, siehe meine Antwort.
AbiusX
2

Die Antwort von Untermoser ist korrekt, aber es wird einige der usbmount-Funktionen beeinträchtigen.

Da er Systemd-Einheiten verwendet, um Prozesse zum Mounten zu erzeugen (um NTFS zu aktivieren), wird die Umgebungsvariable $DEVPATHnicht mehr an den usbmount addBefehl gesendet , was zu einem Fehler bei der Symlink-Erstellung führt.

Führen Sie Folgendes aus, um das zu beheben:

sed -i '/# Determine vendor/,/if/ s/\(.*vendor=\)/if [ -z "$DEVPATH" ]; then DEVPATH="$(udevadm info --query=path --name=\/$DEVNAME)"; fi\n\1/g' /usr/share/usbmount/usbmount

Der obige Befehl wird neu erstellt, $DEVPATHwenn er nicht verfügbar ist.

Es gibt auch einen anderen Fehler in Bezug auf usbmount usbmount remove. Es führt eine Schleife über Mountpunkte durch, und die in usmount config definierte Schleife wird nicht gemountet. Wenn jedoch eine Übereinstimmung gefunden wird, diese jedoch nicht in der Liste enthalten ist, entfernen Sie die Unterbrechungen und führen Sie keine Aktionen aus. Dies ist besonders wichtig, wenn Sie mehrere Mountpunkte für einen USB-Stick erstellen, da usbmount den ersten erkennt und nichts unternimmt.

Um dies zu beheben, ist die folgende Änderung erforderlich:

sed -i '/umount.d ||/,/break/ s/break.*//; /umount.d ||/,/done/ s/:/:\n\t\tbreak 2/' /usr/share/usbmount/usbmount

Dadurch wird die Pause in der inneren Schleife verschoben (wo der Erfolg garantiert ist, und 2 Schritte ausgebrochen).

AbiusX
quelle
1

Wenn Sie versuchen, dasselbe für die Arbeit mit dem neueren Stretch (Lite) zu tun, und feststellen, dass die Antworten von Untermoser und AlbiusX die Bereitstellung von VFAT-Laufwerken nicht aufheben, müssen Sie diese zusätzlichen Schritte zusätzlich zu den angegebenen Antworten ausführen :

Führen Sie den folgenden Befehl im Terminal aus:

sudo mkdir -p /etc/systemd/system/systemd-udevd.service.d/

Dadurch werden die erforderlichen Ordner erstellt. Als nächstes erstellen Sie hier eine conf-Datei, zB:

sudo nano /etc/systemd/system/systemd-udevd.service.d/shared-mount-ns.conf

Fügen Sie in dieser Datei die folgenden Zeilen hinzu:

[Service] MountFlags=shared

Dadurch wird das Standardverhalten von systemd-udevd für private Dateisystem-Namespaces geändert, um freigegebene zu verwenden. Dies entspricht dem Verhalten von udev in jessie.

(Quelle: /unix/330094/udev-rule-to-mount-disk-does-not-work/330156#330156 )

Nacsiar
quelle
Das war also die ganze Zeit das Problem - ich habe mir veraltete Dokumente angesehen. Bin Linux raspberrypi 4.14.79-v7+auf dem Pi
unterwegs