Otomatis berbagai sistem file stick USB di Jessie Lite

18

Saya ingin dapat mengautomatiskan USB stick fat32 dan ntfs yang diformat dengan cepat, seperti hot-plugging tanpa me-reboot Raspberry Pi 2. Saya memiliki ntfs-3g yang diinstal pada jessie-lite .

Memasukkan UUID ke dalam fstabbukanlah pilihan karena saya harus menemukan UUID dari setiap perangkat. Saya ingin dapat menyambungkan perangkat USB yang berbeda dengan format file yang berbeda dan memasangnya secara otomatis. Apakah ini mungkin?

Juga saya pernah hampir berhasil bekerja dengan usbmountprogram ini. Saya dapat mengakses drive saya sebentar sebelum mendapatkan kesalahan transport endpoint is not connected. Saya menginstal ulang program tetapi kemudian saya bahkan tidak pernah sampai ke titik itu lagi, bahkan dengan kesalahan.

F. Untermoser
sumber

Jawaban:

15

Setelah banyak penelitian saya bisa memperbaiki Masalah saya dengan usbmount:

Menambahkan ntfs ke usbmount

  1. Instal usbmount dengan sudo apt-get install usbmount.
  2. Instal paket driver NTFS ntfs-3g dengan sudo apt-get install ntfs-3g.

  3. Konfigurasikan usbmount untuk memasang sistem file yang ditentukan dengan membuka file usbmount dengan sudo nano /etc/usbmount/usbmount.conf.

Di sini ada garis yang disebut FILESYSTEMS="". Hanya sistem file yang ditentukan dalam baris ini yang dipasang melalui usbmount, jadi kami mengubahnya ke:FILESYSTEMS="vfat ntfs fuseblk ext2 ext3 ext4 hfsplus"

Jika Anda ingin usbmount me-mount Filesystem NTFS, pastikan untuk menambahkan ntfs dan fuseblk ke baris tersebut. Perangkat NTFS terkadang terdaftar sebagai fusblk oleh paket ntfs-3g, sehingga keduanya sama. Tapi saya tidak tahu kenapa.

Juga, jika Anda tidak menambahkan fuseblk di konfigurasi, Perangkat NTFS yang dicabut tidak akan secara otomatis di-unmount. Mereka akan tetap terpasang dan menyimpan folder tempat mereka dipasang sampai perangkat di-unmount secara manual dengan unmount /dev/sda1 -> di mana sda1 bisa menjadi variabel lain .

Baris penting berikutnya adalah FS_MOUNTOPTIONS="". Di sini Anda menentukan sistem file mana yang harus di-mount dan bagaimana mereka harus di-mount.

Kami mengubahnya menjadi: 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"

Dengan ini filesystem vfat (fat32) ntfs-3g (NTFS), dan fuseblk (NTFS lagi) di-mount. Saya pikir sebagian besar parameter dapat tetap sama. Sekali lagi di sini cukup tambahkan ntfs-3g ( tambahkan ntfs-3g bukan ntfs ) dan fuseblk untuk dapat me-mount semua File NTFS. Untuk lebih banyak sistem file, tambahkan lebih banyak baris yang dimulai dengan -fstype=.

Biarkan NTFS terpasang sampai perangkat dicabut

Berikut adalah solusi untuk masalah ini, ketika drive NTFS yang terpasang hanya dapat diakses selama beberapa detik. Perbaikan ini berasal dari Christian Weinberger .

  1. Buat file usbmount.rules di /etc/udev/rules.d/ dengan sudo nano /etc/udev/rules.d/usbmount.rules.

Ini isinya:

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. Buat file usbmount @ .service di / etc / systemd / system / with sudo nano /etc/systemd/system/[email protected].

Ini isinya:

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

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

Sekarang reboot dan periksa cat /etc/mtabke folder mana perangkat usb dipasang. Secara default mereka adalah mountet ke / media / usbstick0 .

Sumber:

Kristen Perbaiki

Kenapa fusblk?

F. Untermoser
sumber
Solusi ini membutuhkan beberapa langkah lagi, lihat jawaban saya.
AbiusX
2

Jawaban oleh Untermoser benar, tetapi itu akan merusak beberapa fungsi usbmount.

Karena dia menggunakan unit Systemd untuk memunculkan proses untuk me-mount (untuk mengaktifkan NTFS), variabel lingkungan $DEVPATHtidak lagi dikirim ke usbmount addperintah, yang mengakibatkan kegagalan pembuatan symlink.

Untuk memperbaikinya, jalankan yang berikut:

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

Perintah di atas akan dibuat ulang $DEVPATHjika tidak tersedia.

Ada juga bug lain di usbmount, sehubungan dengan usbmount remove. Itu loop di atas mountpoints, dan yang didefinisikan di usmount config tidak di-mount. Namun, jika kecocokan ditemukan tetapi tidak ada dalam daftar itu, hapus jeda dan tidak melakukan apa-apa. Ini sangat penting jika Anda membuat beberapa titik mount untuk satu USB, karena usbmount melihat yang pertama dan tidak melakukan apa pun.

Untuk memperbaikinya, perubahan berikut diperlukan:

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

Ini akan memindahkan istirahat di dalam lingkaran dalam (di mana kesuksesan dijamin, dan istirahat 2 langkah).

AbiusX
sumber
1

Bagi mereka yang mencoba untuk mendapatkan yang sama untuk bekerja pada Stretch (Lite) yang lebih baru dan menemukan bahwa jawaban oleh Untermoser dan AlbiusX tidak melepas drive vfat, Anda harus mengikuti langkah-langkah tambahan ini selain jawaban yang disediakan mereka :

Jalankan perintah berikut di terminal:

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

Ini akan membuat folder yang diperlukan diperlukan. Selanjutnya, buat file conf di sini, misalnya:

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

Di dalam file ini tambahkan baris berikut:

[Service] MountFlags=shared

Ini akan mengubah perilaku default systemd-udevd dari namespace sistem file pribadi untuk menggunakan yang dibagi, yang setara dengan perilaku udev di jessie.

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

Nacsiar
sumber
Jadi ini adalah masalah selama ini - saya melihat dokumen yang sudah ketinggalan zaman. Saya menjalankan Linux raspberrypi 4.14.79-v7+Pi, untuk referensi
ctietze