Предложения, необходимые для udev, udisks, autofs, настройки уведомлений для полного автомонтирования в Linux

Продолжение на Automounting подключенных устройств в Linux , что оставило вещи немного базовыми. Запуск Gentoo, я автоматизирую комбинацию локальных и сетевых устройств на своем ноутбуке с autofs-5.0.4-r5. Выполнение autofs само по себе дает мне пару проблем:

  • Я должен предопределять имена для точек монтирования для каждого устройства, но иногда после перезагрузки мой считыватель карт MMC переключает позиции с моего загрузочного USB-накопителя
  • Я бы хотел, чтобы автоматически появлялись точки монтирования на основе LABEL, только autofs AFAIK не может этого сделать

Это то, что udev и udisks, безусловно, способны делать. Но:

  • Сканирование одного или всех портов, по протоколу UDP или всех протоколов, чтобы узнать, получаю ли я, что я могу получить
  • Как вы защищаете файл текстовых учетных данных с именем пользователя и паролем?
  • Маскарад не работает иногда
  • Почему ping6 использует сокет IPv4?
  • Sabayon - mysql (и другие службы) не запускается
  • Как найти, какой пакет предоставляет файл?
    • Я не хочу, чтобы файловая система монтировалась автоматически при подключении устройства, просто дайте мне точку монтирования призраков с именем LABEL

    Фактическое монтирование файловой системы должно происходить только при первом доступе к точке монтирования, как работает аутфикс-ореоринг. Это должно снизить риск загрязнения файловых систем путем случайного отсоединения устройств, при этом обеспечивая большую доступность.

    Вдобавок к этому я мог бы всегда знать, что происходит, в моей DE.

    • Есть ли приложение в системном трее, которое может указывать статус всех автомонтировщиков, т. Е. Зеленый = ничего не установлено, красный = что-то установлено?
    • Существует ли способ распределения-агностик для предоставления уведомлений об эксплуатации файловой системы (un), например, с помощью уведомления-отправки? Что относительно Gentoo-специфического, это работает и для меня. Сценарий udev не помогает с NFS и CIFS, правильно?

    Это комбо должно быть окончательной настройкой automount, или я что-то упускаю?

  • Как назначить несколько разных имен интерфейсов на одной карте NIC (аппаратный MAC-адрес)
  • Linux отключает / скрывает устройства mtdblock от lsblk
  • Правила UDEV Interfere
  • В чем разница между именем хоста, именем хоста --fqdn и hostname -A
  • udev для назначения известных символических ссылок для идентичных последовательных устройств USB
  • IP-адреса устройства и сетевого интерфейса
  • 2 Solutions collect form web for “Предложения, необходимые для udev, udisks, autofs, настройки уведомлений для полного автомонтирования в Linux”

    Это все возможно с udev . Посмотрите на UAM , который, по-видимому, касается большинства упомянутых вами проблем, но на самом деле автоматически монтируется. Если вам нравится, вы можете использовать большие возможности, которые он предоставляет, но измените его так, чтобы носители не были установлены автоматически. Вы также можете связаться с автором и предложить использовать неавтоматический подход к установке в качестве новой функции. Между тем, кратко рассмотрим его возможности:

    • Он работает на вершине udev , делая его независимым от DE и основанным на событиях. (Он также предлагает обходной путь для оптических носителей, которые не могут быть обнаружены udev .)
    • Позволяет вам определить MOUNTPOINT_TEMPLATES которые могут решить проблему именования, о которой вы упоминали, несколькими способами (см. Uam.conf ), потенциально также используя LABEL (по вашему желанию)
    • Механизмы оповещения поддерживаются, вам просто нужно настроить их на ваши специфические для DE потребности.
    • Кажется, он имеет четкий дизайн, позволяя вам легко находить, где и когда срабатывает каждое действие.

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

    Предварительные требования: вы должны установить udev + autofs.

    Шаг 1)

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

     # Add symlink /dev/usbdisks/<label> to /dev/sd[az][1-9] # if partition has a label # Add symlink /media/usb/<label> to /media/autousb/<label> # for automounter support ACTION=="add", KERNEL=="sd*", ENV{DEVTYPE}=="partition", \ ENV{ID_BUS}=="usb", ENV{ID_FS_LABEL_ENC}=="?*", \ SYMLINK+="usbdisks/$env{ID_FS_LABEL_ENC}", MODE:="0660", \ RUN+="/bin/rm /media/usb/$env{ID_FS_LABEL_ENC}", \ RUN+="/bin/ln -sf /media/autousb/$env{ID_FS_LABEL_ENC} /media/usb/$env{ID_FS_LABEL_ENC}" # Fallback: If partition has a NO label, use kernel name (sd[az][1-9]) ACTION=="add", KERNEL=="sd*", ENV{DEVTYPE}=="partition", \ ENV{ID_BUS}=="usb", ENV{ID_FS_LABEL_ENC}!="?*", \ 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", ENV{ID_FS_LABEL_ENC}=="?*", \ SYMLINK+="usbdisks/$env{ID_FS_LABEL_ENC}", MODE:="0660" # Fallback: If partition has NO label, use kernel name ACTION=="change", KERNEL=="sd*", ENV{DEVTYPE}=="partition", \ ENV{ID_BUS}=="usb", ENV{ID_FS_LABEL_ENC}!="?*", \ SYMLINK+="usbdisks/%k", MODE:="0660" # When device is removed, also remove /media/usb/<label> ACTION=="remove", KERNEL=="sd*", ENV{DEVTYPE}=="partition", \ ENV{ID_BUS}=="usb", ENV{ID_FS_LABEL_ENC}=="?*", \ RUN+="/bin/rm /media/usb/$env{ID_FS_LABEL_ENC}" # Fallback: If partition has no label, remove /media/usb/%k ACTION=="remove", KERNEL=="sd*", ENV{DEVTYPE}=="partition", \ ENV{ID_BUS}=="usb", ENV{ID_FS_LABEL_ENC}!="?*", \ RUN+="/bin/rm /media/usb/%k" 

    Что это делает: он создает две символические ссылки: одну для раздела устройства хранения USB в разделе «/ dev / usbdisks / <…>». Он будет либо использовать метку раздела USB-накопителя, либо имя ядра, если нет метки. Вторая символьная ссылка будет ссылаться на «/ media / usb / <…>» на «/ media / autousb / <…>», это делается для поддержки автомонтировщика (см. Шаг 2).

    Примечание. Я изначально не использовал правила с переменными ID_FS_LABEL_ENC, так как это опасно, на мой взгляд. Что произойдет, если вы подключите два USB-накопителя, которые используют один и тот же ярлык?

    Но плакат специально хотел использовать метку USB-диска, поэтому я соответствующим образом изменил правила.

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

     sudo udevadm control --reload-rules 

    С этим файлом правил udev все настроено на автоматизацию раздела USB-накопителя. Обратите внимание, что это прямо сейчас, устройство НЕ будет автоматизировано (намеренно). Он будет автоматизирован после использования с

    Шаг 2)

    Настройка autofs для автомонтирования / 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 должен быть исполняемым, так что autofs использует это как скрипт (bash). Так, например,

     sudo chmod 0755 /etc/auto.usb 

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

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

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

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

    Шаг 3) Необязательно … Чтобы «изъять» == размонтировать ваши USB-накопители (или разделы на вашем USB-накопителе), создать сценарий в / sbin / usbeject:

     #!/bin/bash killall -s SIGUSR1 /usr/sbin/automount 

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

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

    Настоящий трюк здесь – использовать символические ссылки с "/ media / usb" на "/ media / autousb":

    • Символьные ссылки «/ media / usb» будут созданы udev, предоставив пользователю простой обзор, в котором расположены разделы устройств хранения USB-накопителей
    • AutoFS затем будет автоматизировать раздел по требованию, если вы используете его через / media / usb
    • С помощью скриптового файла «auto.usb» вы можете поддерживать любую файловую систему и, кроме того, вы также можете поддерживать любую схему именования.
    • Этот подход поддерживает USB-накопители с несколькими разделами, даже если эти разделы используют разные типы файловой системы.
    Linux и Unix - лучшая ОС в мире.