Автомонтирование карт с интерфейсом USB на Debian

Можно использовать ssh клиент для выполнения ssh на удаленной машине после входа в систему.

ssh -t unix.university.com \
    ssh -t unix.department.univeristy.com \
    ssh -t office-machine.department.university.com

(Причина я включаю -t в вызовах то, потому что ssh давал мне ошибочное ре: stdin, не являющийся терминалом, когда я попробовал его на своей собственной машине; Ваша машина может отличаться.)

Когда Вы выйдете от последней оболочки, процесс будет цепочечный выход, сохраняя Вас вводящий Ctrl-D много раз.

10
16.11.2011, 18:18
5 ответов

Изображенный должен быть намного более легкий способ решить такую типичную проблему, и существует. Вот то, что я примерил свой wheezy/sid сервер:

sudo apt-get install usbmount

Включите палку usb, сделанную! Моя палка теперь доступна через /media/usb.

Btw, usbmount не имеет страницы справочника, читают /usr/share/doc/usbmount/README.gz вместо этого. Кажется, что usbmount монтирует Вашу палку с синхронизирующей опцией по умолчанию. Для Вашей палки могло бы быть намного лучше смонтировать его асинхронный и работать sync или umount прежде, чем отключить его. Это настраивается.

12
27.01.2020, 20:01
  • 1
    видит также pumount –  Alex 18.08.2013, 21:59
  • 2
    Обращает внимание это usbmount больше не поддерживайте NTFS с тех пор debian jessie: bugs.debian.org/774149 –  malat 19.05.2015, 18:32
  • 3
    Выполнение этого на Debian Jessie, usbmount никогда, кажется, не монтирует его. Страница пакета говорит, что теперь не сохраняется, и я выполняю systemd. Интересно, не работает ли этот пакет больше с изменениями systemd? –  Travis Griggs 09.07.2016, 01:30
  • 4
    Действительно, не работал на меня на Jessie, видят мой ответ (это: ddumont.wordpress.com/2015/09/27 / … действительно работал), –  Paul 22.02.2017, 15:37

Заметьте, что у Вас не может только быть узла единого устройства для представления любого возможного присоединенного pendrive. Что, если Вы включаете двух из них? Или когда pendrive имеет больше чем один раздел?

Обычно то, что Вы используете для создания узла пользовательского именованного устройства, SYMLINK+=. grep для него в правилах видеть, как это используется: grep SYMLINK /etc/udev/rules.d/*. Как во всех udev-инициированных командах, можно использовать некоторые значимые переменные, которые описаны в man udev. Вы могли бы понять, что не должны действительно давать пользовательское имя устройству, так как можно питаться, это - имя к сценарию (через %k переменная).

Что касается решения автомонтирования, взгляните на UAM, который я описал немного в ответе на этот вопрос.

2
27.01.2020, 20:01
  • 1
    я понимаю эти ограничения. Как это происходит, я только когда-либо должен поддерживать единственную карту с интерфейсом USB, подключенную в любой момент к этой конкретной системе. Однако я должен был бы поддерживать несколько разделов на карте с интерфейсом USB (будет хорошо, если они могли бы быть смонтированы в подпапки от точки монтирования). Учитывая эти требования, у Вас есть совет для потенциального решения? Из-за природы проекта, я должен избегать использования дополнительного стороннего программного обеспечения если вообще возможный. –  jon 16.11.2011, 16:59
  • 2
    Затем взгляните на редактирование, которое я просто сделал (средняя часть). Это было бы достаточно? –  rozcietrzewiacz 16.11.2011, 17:07
  • 3
    Также обратите внимание, что UAM не является действительно программой - это - набор хороших udev правила с сопроводительными сценариями. Можно взглянуть на правила и легко адаптировать их к потребностям. –  rozcietrzewiacz 16.11.2011, 17:12
  • 4
    Спасибо за совет. Еще одна вещь: Вы думаете, что могли посмотреть на мой вывод от udevadm и скажите мне, какое устройство является устройством, для которого я должен на самом деле быть нацелен со своим правилом? Различные примеры я видел онлайн, что все, кажутся, включить намного более короткие деревья и каждый пример, кажется, предназначаются для другого уровня устройства без объяснения, которого должен быть предназначен и почему. –  jon 16.11.2011, 17:49
  • 5
    Просто добавленный обновление выше, какие-либо идеи?Спасибо! –  jon 16.11.2011, 18:18

Извините, что ответил на свой собственный вопрос, и большое спасибо происходит из-за rozcietrzewiacz для содействия, но мне в конечном счете удалось сделать некоторые главные успехи с помощью следующего правила после часов чтения онлайн:

SUBSYSTEMS=="scsi", KERNEL=="sd[a-h]1", SYMLINK+="removable", RUN+="/bin/mount /dev/removable /path/to/mount"

Это смонтирует первый раздел любого устройства SCSI. Я предполагаю, что следующий вопрос будет состоять в том, как смонтировать несколько разделов, но это - другая проблема в течение другого дня.

1
27.01.2020, 20:01
  • 1
    Это не хорошее правило. Это будет соответствовать также разделам жестких дисков. существует a removable атрибут необходимо протестировать на, и скорее block вместо scsi. –  rozcietrzewiacz 18.11.2011, 12:18

Вот как я недавно сделал это, и я сейчас вполне доволен этим подходом. Это для Ubuntu 12.04 + Gentoo, но я думаю, что любой дистрибутив, который позволяет работать UDEV и Autofs.

Предварительные условия: Вы должны установить UDEV + Autofs.

Шаг 1)

Создайте следующие файлы «/etc/udev/rules.d/90-usbd-auto.rules.d/90-usbd-auto.rules) (конечно, вы можете использовать любое имя, если он заканчивается с помощью« .Rules ») Отказ :

# Add symlink /dev/usbdisks/<label> to /dev/sd[a-z][1-9] 
# for automounter support

ACTION=="add", KERNEL=="sd*", ENV{DEVTYPE}=="partition", \
    ENV{ID_BUS}=="usb", \
    SYMLINK+="usbdisks/%k", MODE:="0660", \
    RUN+="/bin/rm /media/usb/%k", \
    RUN+="/bin/ln -sf /media/autousb/%k /media/usb/%k"

# Some FileSystems emit a "change" event when they are unmounted.
# UDEV seems to delete the device symlink in this case :-(
# So we need to re-create it here
ACTION=="change", KERNEL=="sd*", ENV{DEVTYPE}=="partition", \
    ENV{ID_BUS}=="usb", \
    SYMLINK+="usbdisks/%k", MODE:="0660"


# When device is removed, also remove /media/usb/<...>
ACTION=="remove", KERNEL=="sd*", ENV{DEVTYPE}=="partition", \
    ENV{ID_BUS}=="usb", \
    RUN+="/bin/rm /media/usb/%k"

Что это делает: он создает две симлизы, один для раздела устройства хранения USB под «/ dev / usbdisks / <...>».

Вторая SymLink будет связывать из «/ Media / USB / <...» / Media / Autousb / <...> «Это сделано для поддержки Automounter (см. Шаг 2).

Чтобы убедиться, что UDEV читает эти правила Использование

sudo udevadm control --reload-rules

Примечание: одно имя для того же USB-накопителя: возможна, но может быть, опасно: вы можете использовать, например, «$ env {id_fs_label_enc}», а не "% k" в вышеупомянутом УДЕВ Правил. Это будет использовать метку тома для создания / носителя / USB / <...>, но что произойдет, если вы подключаете два USB-палочках, и оба используете один и тот же метку громкости ...

с помощью этого файла правил UDEV. Все установлено Автоматическое изменение раздела устройства хранения USB. Обратите внимание, что сейчас устройство не будет автоматически (намеренно). Он будет автоматически, как только вы используете его с

Шаг 2)

Установка Autofs для Automount / Media / AutousB / <...>: Я добавил следующую строку в мой файл «/etc/auto.master» (для Ubuntu 12.04):

/media/autousb /etc/auto.usb --timeout=60

Это означает, что autofs будет размонтировать устройство через 60 секунд бездействия. Возможно, вы захотите использовать меньше или больше, зависит от вашего вкуса.

Для Gentoo вы должны изменить «/etc/autofs/auto.master», поэтому имеет смысл использовать

/media/autousb /etc/autofs/auto.usb --timeout=60

теперь я создал «auto.usb» со следующим контентом:

#!/bin/bash

key=${1}
fstype=$(/sbin/blkid -o value -s TYPE /dev/usbdisks/${key})
if [ "${fstype}" = "vfat" ] ; then
  echo "-fstype=vfat,sync,uid=0,gid=plugdev,umask=007 :/dev/usbdisks/${key}"
  exit 0
fi
if [ "${fstype}" = "ntfs" ] ; then
  echo "-fstype=fuse.ntfs-3g,sync,uid=0,gid=plugdev,umask=007 :/dev/usbdisks/${key}"
  exit 0
fi
if [ "${fstype}" = "ext4" ] ; then
  echo "-fstype=ext4,sync,nocheck :/dev/usbdisks/${key}"
  exit 0
fi

exit 1

Это auto.usb необходимо Быть исполняемым, чтобы автозапись использует это как (Bash) сценарий. Таким образом, например

sudo chmod 0755 /etc/auto.usb

Что это делает: этот сценарий будет сообщить AutoFS (/ usr / sbin / automount), как установить раздел USB-накопителя.

Скрипт будет первым использовать «/ sbin / Blkid», чтобы узнать, какая файловая система находится на разделах.

Затем скрипт предоставит правильные варианты монтажа в зависимости от раздела устройства.

Примечание. Я включил пример код для «VFAT» (вероятно, наиболее распространенным для USB-палочек), файловых систем «NTFS» и «Ext4». Конечно, довольно легко расширить это, чтобы поддержать больше файловых систем.

Шаг 3)

Необязательно ... Чтобы «изгнать» == Размонтируйте вашу USB-накопитель (или разделы на вашу USB-накопитель), создайте скрипт / SBIN / USBEJECT:

#!/bin/bash
# make sure everything is written to USB disk(s)
sync
# sending SIUGSR1 to automount will unmount the media
killall -s SIGUSR1 /usr/sbin/automount

С помощью этого скрипта вы можете использовать «sudo Usbeject», чтобы размонтировать все установленное устройство USB. разделы (рассказывая автоусчет, чтобы размонтировать их).

Конечно, вы можете просто убедиться, что раздел не используется нигде не используется; Тогда Automounter будет размонтировать раздел после 60-секундной тайм-аута ...

Реальный хитрость здесь - использовать SymLinks от «/ Media / USB» на «/ Media / Autousb»:

  • «/ Media / USB» SymLinks будет создан UDEV, предоставляя пользователю простой обзор, какие разделы устройства для хранения USB будут там
  • autofs, будут автоматическими разбиениями по требованию, если вы используете его через / Media / USB
  • с помощью сценариев «auto.usb «Файл, который вы можете поддержать любую файловую систему и дополнительно вы также можете поддерживать любой вид схемы именования.
  • Этот подход поддерживает USB-палочки с несколькими разделами, даже если эти разделы используют разные типы файловых систем.
2
27.01.2020, 20:01

Я обнаружил, что лучший ответ фактически устарел, поскольку он не поддерживается и не работает с / от Джесси (см. Комментарий Малата)

Для меня (о Джесси) решение в этот блог работал как шарм.

Благодарность "ddumont", но размещение обзора его блога / ответа здесь, чтобы справиться с возможной гнилью ссылок в будущем.

Добавьте следующую строку в / etc / fstab

/dev/sr0 /media/bluray auto defaults,nofail,x-systemd.automount 0 2

. Вы можете сделать это с помощью nano:

sudo nano /etc/fstab

Объяснение:

/ dev / sr0 - это файл устройства. Вы также можете использовать одну из символических ссылок, настроенных udev в / dev / disk / by-id. Вам нужно будет изменить это в соответствии с файлом вашего устройства ( sudo fdisk -l для вывода списка устройств)

/ media / bluray - это точка монтирования. Вы можете выбрать другую точку монтирования

nofail требуется, чтобы избежать отчета о сбое при загрузке без диска в оптическом приводе

x-systemd.automount - это параметр для настройки systemd для автоматического монтирования вставленного disc

Не указывайте noauto: это помешает systemd автоматически монтировать диск, что противоречит цели.

Тест

Запустите команду journalctl -x -f в терминале, чтобы проверить, что происходит с systemd

Перезагрузите конфигурацию systemd с помощью sudo systemctl daemon-reload .

загрузите диск в оптический привод

Затем journalctl должен показать что-то вроде:

Sept. 27 16:07:01 frodo systemd[1]: Mounted /media/bluray.

Далее

Чтобы успешно смонтировать приводы NTFS, мне пришлось установить ntfs-3g (старый ntfsprogs)

sudo apt-get install ntfs-3g

Я этого не делал. Чтобы заставить работать USB-накопитель в формате OSX, необходимо установить hfsprogs, но вы должны проверить это самостоятельно.

1
27.01.2020, 20:01

Теги

Похожие вопросы