Автоматично налаштовуйте різні файлові системи USB-накопичувачів на Jessie Lite


18

Я хочу мати можливість автоматичного налаштування USB-накопичувачів fat32 та ntfs, відформатованих на льоту, як гаряче підключення без перезавантаження мого Raspberry Pi 2. У мене встановлено ntfs-3g на jessie-lite .

Введення UUID fstab- це не варіант, оскільки мені доведеться знайти UUID на кожному пристрої. Я хочу мати можливість підключати різні USB-пристрої з різними форматами файлів і монтувати їх автоматично. Чи можливо це?

Крім того, я одного разу майже отримав це, працюючи з usbmountпрограмою. Я міг отримати доступ до свого диска на секунду, перш ніж отримати помилку transport endpoint is not connected. Я перевстановив програму, але потім ніколи навіть не дійшов до цього моменту, навіть не з помилкою.

Відповіді:


15

Після багато досліджень я міг виправити свою проблему з usbmount:

Додавання ntfs до usbmount

  1. Встановіть usbmount за допомогою sudo apt-get install usbmount.
  2. Встановіть пакет драйверів NTFS ntfs-3g за допомогою sudo apt-get install ntfs-3g.

  3. Налаштуйте 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 доступний лише кілька секунд. Це виправлення походить від Крістіана Вайнбергера .

  1. Створіть файл 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"
  1. Створіть файл usbmount @ .service в / etc / systemd / system / з 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 .

Джерело:

Виправити християн

Чому фусблк?


Для цього рішення потрібно ще кілька кроків, дивіться мою відповідь.
AbiusX

2

Відповідь Untermoser правильна, але це порушить деякі функції usbmount.

Оскільки він використовує модулі Systemd для нерестування процесів для монтажу (для включення NTFS), змінна середовища $DEVPATHбільше не надсилається usbmount addкоманді, що призводить до збою створення символьної посилання.

Щоб виправити це, запустіть наступне:

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

Команда вгорі відтворює, $DEVPATHякщо вона недоступна.

Також є ще одна помилка в usbmount щодо usbmount remove. Він перетворюється на точки монтажу, і той, який визначений у конфігурації usmount, відключений. Однак якщо відповідність знайдена, але її немає в цьому списку, видаліть перерви і нічого не робити. Це особливо важливо, якщо ви створюєте кілька точок кріплення для одного USB, оскільки usbmount бачить перше і нічого не робить.

Для виправлення потрібні такі зміни:

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

Це перемістить перерву всередині внутрішньої петлі (там, де успіх гарантований, і зробіть 2 кроки назовні).


1

Для тих, хто намагається зробити так само, щоб працювати над новою версією Stretch (Lite) і виявляє, що відповіді Untermoser та AlbiusX не відключають диски vfat, вам потрібно буде виконати ці додаткові кроки на додаток до наданих відповідей. :

Виконайте таку команду в терміналі:

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

Це створить необхідні необхідні папки. Далі, створіть тут конф-файл, наприклад:

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+на Пі, для довідки
ctietze
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.