Podłącz automatycznie różne systemy plików pamięci USB w Jessie Lite

18

Chcę mieć możliwość automatycznego montażu pamięci USB fat32 i NTF sformatowanych w locie, takich jak podłączanie na gorąco bez ponownego uruchamiania mojego Raspberry Pi 2. Mam NTFS-3G zainstalowany na Jessie-Lite .

Wprowadzenie UUID fstabnie jest opcją, ponieważ musiałbym znaleźć UUID każdego urządzenia. Chcę mieć możliwość podłączania różnych urządzeń USB o różnych formatach plików i instalowania ich automatycznie. czy to możliwe?

Również raz prawie udało mi się pracować z usbmountprogramem. Mogłem uzyskać dostęp do dysku przez sekundę, zanim pojawi się błąd transport endpoint is not connected. Ponownie zainstalowałem program, ale nigdy więcej nie dotarłem do tego punktu, nawet z błędem.

F. Untermoser
źródło

Odpowiedzi:

15

Po wielu badaniach mogłem naprawić problem z usbmount:

Dodawanie NTFS do usbmount

  1. Zainstaluj usbmount z sudo apt-get install usbmount.
  2. Zainstaluj pakiet sterowników NTFS ntfs-3g z sudo apt-get install ntfs-3g.

  3. Skonfiguruj usbmount, aby montować określone systemy plików, otwierając plik usbmount za pomocą sudo nano /etc/usbmount/usbmount.conf.

Tutaj jest linia o nazwie FILESYSTEMS="". Tylko systemy plików określone w tym wierszu są montowane za pośrednictwem usbmount, dlatego zmieniamy je na:FILESYSTEMS="vfat ntfs fuseblk ext2 ext3 ext4 hfsplus"

Jeśli chcesz, aby usbmount montował systemy plików NTFS, pamiętaj, aby dodać ntfs i fuseblk do linii. Urządzenia NTFS są czasami wymienione jako fusblk przez pakiet ntfs-3g, więc te dwa są takie same. Ale tak naprawdę nie wiem dlaczego.

Ponadto, jeśli nie dodasz fuseblk w konfiguracji, odłączone urządzenia NTFS nie zostaną automatycznie odmontowane. Pozostaną zamontowane i zachowają folder, w którym są zamontowane, dopóki urządzenie nie zostanie ręcznie odmontowane za pomocą unmount /dev/sda1 -> gdzie sda1 może być inną zmienną .

Następna ważna linia to FS_MOUNTOPTIONS="". Tutaj określasz, które systemy plików powinny zostać zamontowane i jak powinny zostać zamontowane.

Zmieniamy to na: 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"

Dzięki temu montowane są systemy plików vfat (fat32) ntfs-3g (NTFS) i fuseblk (ponownie NTFS). Myślę, że większość parametrów może pozostać taka sama. Ponownie tutaj po prostu dodaj ntfs-3g ( dodaj ntfs-3g nie ntfs ) i fuseblk, aby móc zamontować wszystkie pliki NTFS. Aby uzyskać więcej systemów plików, dodaj więcej linii, zaczynając od -fstype=.

Trzymaj NTFS podłączony, dopóki urządzenie nie zostanie odłączone

Oto rozwiązanie problemu, gdy podłączony dysk NTFS jest dostępny tylko przez kilka sekund. Ta poprawka pochodzi od Christiana Weinbergera .

  1. Utwórz plik usbmount.rules w /etc/udev/rules.d/ za pomocą sudo nano /etc/udev/rules.d/usbmount.rules.

To jest treść:

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. Utwórz plik usbmount @ .service w / etc / systemd / system / with sudo nano /etc/systemd/system/[email protected].

To jest treść:

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

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

Teraz uruchom ponownie i sprawdź, cat /etc/mtabdo którego folderu są podłączone urządzenia USB. Domyślnie są one montowane na / media / usbstick0 .

Źródło:

Chrześcijanie Fix

Dlaczego Fusblk?

F. Untermoser
źródło
To rozwiązanie wymaga jeszcze kilku kroków, zobacz moją odpowiedź.
AbiusX
2

Odpowiedź Untermosera jest prawidłowa, ale spowoduje uszkodzenie niektórych funkcji usbmount.

Ponieważ używa jednostek Systemd do odradzania procesów do zamontowania (aby włączyć NTFS), zmienna środowiskowa $DEVPATHnie jest już wysyłana do usbmount addkomendy, co powoduje niepowodzenie tworzenia dowiązania symbolicznego.

Aby to naprawić, uruchom następujące polecenie:

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

Powyższe polecenie odtwarza, $DEVPATHjeśli nie jest dostępne.

Istnieje również inny błąd w usbmount w odniesieniu do usbmount remove. Pętla przechodzi przez punkty montowania, a ten zdefiniowany w usmount config jest odmontowany. Jeśli jednak dopasowanie zostanie znalezione, ale nie ma go na tej liście, usuń przerwy i nic nie robi. Jest to szczególnie ważne, jeśli tworzysz wiele punktów montowania dla jednego USB, ponieważ usbmount widzi pierwszy i nic nie robi.

Aby to naprawić, konieczna jest następująca zmiana:

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

Spowoduje to przesunięcie przerwy w wewnętrznej pętli (gdzie gwarantowany jest sukces i złamanie 2 kroków).

AbiusX
źródło
1

Dla tych, którzy starają się, aby to samo działało na nowszej wersji Stretch (Lite) i stwierdzili, że odpowiedzi Untermoser i AlbiusX nie odmontowują dysków vat, musisz wykonać te dodatkowe kroki oprócz dostarczonych odpowiedzi :

Uruchom następującą komendę w terminalu:

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

Spowoduje to utworzenie wymaganych folderów. Następnie utwórz plik conf, np .:

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

Wewnątrz tego pliku dodaj następujące wiersze:

[Service] MountFlags=shared

Spowoduje to zmianę domyślnego zachowania systemd-udevd prywatnych przestrzeni nazw systemu plików, tak aby korzystały z współdzielonych, co jest równoważne zachowaniu udev w jessie.

(Źródło: /unix/330094/udev-rule-to-mount-disk-does-not-work/330156#330156 )

Nacsiar
źródło
To był problem przez cały czas - patrzyłem na nieaktualne dokumenty. Jestem uruchomiony Linux raspberrypi 4.14.79-v7+na Pi, dla odniesienia
ctietze