После многих исследований я смог решить мою проблему с помощью usbmount:
Добавление NTFS в usbmount
- Установите usbmount с
sudo apt-get install usbmount
.
Установите пакет драйверов NTFS ntfs-3g с помощью sudo apt-get install ntfs-3g
.
Настройте usbmount для монтирования указанных файловых систем, открыв файл usbmount с помощью sudo nano /etc/usbmount/usbmount.conf
.
Здесь есть строка под названием FILESYSTEMS=""
. Только файловые системы, указанные в этой строке, монтируются через usbmount, поэтому мы изменим его на:FILESYSTEMS="vfat ntfs fuseblk ext2 ext3 ext4 hfsplus"
Если вы хотите, чтобы usbmount смонтировал файловые системы NTFS, обязательно добавьте
в строку ntfs и fuseblk . Устройства NTFS иногда указываются как fusblk в пакете ntfs-3g, поэтому эти два одинаковы. Хотя я не знаю почему.
Кроме того, если вы не добавите fuseblk в конфигурацию, отключенные устройства NTFS не будут автоматически размонтированы. Они будут оставаться подключенными и будут сохранять папку, к которой они подключены, пока устройство не будет отключено вручную unmount /dev/sda1
-> где sda1 может быть другой переменной .
Следующим важным направлением является FS_MOUNTOPTIONS=""
. Здесь вы указываете, какие файловые системы должны быть смонтированы и как они должны быть смонтированы.
Мы изменим это на: 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"
При этом монтируются файловые системы vfat (fat32) ntfs-3g (NTFS) и
fuseblk (снова NTFS). Я думаю, что большинство параметров могут оставаться неизменными. Опять же, здесь просто добавьте ntfs-3g ( добавьте ntfs-3g, а не ntfs ) и fuseblk, чтобы иметь возможность монтировать все файлы NTFS. Для большего количества файловых систем добавьте больше строк, начинающихся с -fstype=
.
Не отключайте NTFS, пока устройство не будет отключено
Вот решение проблемы, когда подключенный диск NTFS доступен только в течение нескольких секунд. Это исправление исходит от Кристиана Вайнбергера .
- Создайте файл usbmount.rules в /etc/udev/rules.d/ с помощью
sudo nano /etc/udev/rules.d/usbmount.rules
.
Это содержание:
KERNEL=="sd*", DRIVERS=="sbp2", ACTION=="add", PROGRAM="/bin/systemd-escape -p --template=usbmount@.service $env{DEVNAME}", ENV{SYSTEMD_WANTS}+="%c"
KERNEL=="sd*", SUBSYSTEMS=="usb", ACTION=="add", PROGRAM="/bin/systemd-escape -p --template=usbmount@.service $env{DEVNAME}", ENV{SYSTEMD_WANTS}+="%c"
KERNEL=="ub*", SUBSYSTEMS=="usb", ACTION=="add", PROGRAM="/bin/systemd-escape -p --template=usbmount@.service $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"
- Создайте файл usbmount @ .service в / etc / systemd / system / with
sudo nano /etc/systemd/system/usbmount@.service
.
Это содержание:
[Unit]
BindTo=%i.device
After=%i.device
[Service]
Type=oneshot
TimeoutStartSec=0
Environment=DEVNAME=%I
ExecStart=/usr/share/usbmount/usbmount add
RemainAfterExit=yes
Теперь перезагрузите компьютер и проверьте, cat /etc/mtab
к какой папке подключены USB-устройства. По умолчанию они монтируются в / media / usbstick0 .
Источник:
Исправление христиан
Почему фусблк?
Untermoser ответ правильный, но он нарушит некоторые функции usbmount.
Поскольку он использует модули Systemd для порождения процессов для монтирования (для включения NTFS), переменная среды
$DEVPATH
больше не отправляетсяusbmount add
команде, что приводит к ошибке создания символической ссылки.Чтобы это исправить, запустите следующее:
Команда выше воссоздает,
$DEVPATH
если это не доступно.В usbmount есть еще одна ошибка, связанная с
usbmount remove
. Он зацикливается на точках монтирования, а тот, который определен в конфигурации usmount, не монтируется. Однако, если совпадение найдено, но его нет в этом списке, удалить разрывы и ничего не делать. Это особенно важно, если вы создаете несколько точек монтирования для одного USB, потому что usbmount видит первое и ничего не делает.Для исправления необходимо следующее изменение:
Это переместит разрыв во внутреннем цикле (где успех гарантирован, и сломает 2 шага).
источник
Для тех, кто пытается заставить то же самое работать на более новом Stretch (Lite) и обнаруживает, что ответы Untermoser и AlbiusX не отключают диски vfat, вам нужно будет выполнить эти дополнительные шаги в дополнение к предоставленным ответам :
Выполните следующую команду в терминале:
sudo mkdir -p /etc/systemd/system/systemd-udevd.service.d/
Это создаст необходимые папки, необходимые. Затем создайте файл conf здесь, например:
sudo nano /etc/systemd/system/systemd-udevd.service.d/shared-mount-ns.conf
Внутри этого файла добавьте следующие строки:
[Service] MountFlags=shared
Это изменит поведение по умолчанию systemd-udevd для частных пространств имен файловой системы на использование общих, что эквивалентно поведению udev в jessie.
(Источник: /unix/330094/udev-rule-to-mount-disk-does-not-work/330156#330156 )
источник
Linux raspberrypi 4.14.79-v7+
на Пи, для справки