Автор Тема: Автомонтирование ЮСБ носителей в консоли  (Прочитано 1064 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Delta213

  • Пользователь
  • *
  • Сообщений: 22
Всем привет!

Помогите начинающему pls.
Осваиваю линукс и нужно мне минимальный установленный дистрибутив. Он будет крутиться в дальнейшем на распберри. Собственно легкий NAS требуется, графика не нужна и даже вредна. Я для начала установил на РС минимальную сборку с офф. сайта 10.8. Не могу сделать автомонтирование флешек, USB HDD. Уже всякое пробовал, обчитался уже, не получается :( Нашел пакет udevil, в него входит devmon, вот если я этот devmon запускаю, то начинается автомонтирование, криво правда работает, но хоть так. А как теперь его в автозагрузку добавить? Но лучше как нормально и правильно это сделать? Лучше по шагам. Я сейчас снесу все что наковырял, там уже такой мусор, не выгрести и по новой свежую установлю.
 

Оффлайн ChubaDuba

Уже всякое пробовал, обчитался уже, не получается
udisks2 пробовали?
Бλог   @chuba_duba
 
Пользователи, которые поблагодарили этот пост: Delta213

Оффлайн dzhoser

Создайте файл
/etc/udev/rules.d/11-media-by-label-auto-mount.rules
Со следующим содержимым
Цитировать
KERNEL!="sd[a-z][0-9]", GOTO="media_by_label_auto_mount_end" 
# Import FS infos 
IMPORT{program}="/sbin/blkid -o udev -p %N" 
# Get a label if present, otherwise specify one 
ENV{ID_FS_LABEL}!="", ENV{dir_name}="%E{ID_FS_LABEL}" 
ENV{ID_FS_LABEL}=="", ENV{dir_name}="usbhd-%k" 
# Global mount options 
ACTION=="add", ENV{mount_options}="relatime" 
# Filesystem-specific mount options 
ACTION=="add", ENV{ID_FS_TYPE}=="vfat|ntfs", ENV{mount_options}="$env{mount_options},utf8,gid=100,umask=002" 
# Mount the device 
ACTION=="add", RUN+="/bin/mkdir -p /media/%E{dir_name}", RUN+="/bin/mount -o $env{mount_options} /dev/%k /media/%E{dir_name}" 
# Clean up after removal 
ACTION=="remove", ENV{dir_name}!="", RUN+="/bin/umount -l /media/%E{dir_name}", RUN+="/bin/rmdir /media/%E{dir_name}" 
# Exit 
LABEL="media_by_label_auto_mount_end"
После того, как вы создали свой скрипт и сохранили его, перезагрузите udev с помощью:

udevadm control --reload-rules
« Последнее редактирование: 19 Марта 2021, 21:27:11 от dzhoser »
 
Пользователи, которые поблагодарили этот пост: Delta213

Оффлайн Delta213

  • Пользователь
  • *
  • Сообщений: 22
Я так уже делал, не работает :(
На 11-media-by-label-auto-mount.rules стоит 755
Флешка подключена.
 

* 1.png (Filesize: 67.6 КБ, Dimensions: 1200x599)


Та флеха была нтфс, вставил установочную дебиан, читает только корневые каталоги, сейчас покажу.
Вот, каталоги все пустые.
 

* 2.png (Filesize: 58.43 КБ, Dimensions: 1153x486)


* 3.png (Filesize: 55.8 КБ, Dimensions: 1042x388)

« Последнее редактирование: 19 Марта 2021, 22:08:53 от Delta213 »
 

Оффлайн Delta213

  • Пользователь
  • *
  • Сообщений: 22
Подсмотрел как монтируются диски в одной сборке, попробовал у себя, эффект тот-же, в media появляется пустая папка с именем=LABLE подключенного диска.

там так:
в 11-media-by-label-auto-mount.rules
Spoiler: ShowHide

SUBSYSTEM!="block", GOTO="end_rule"
KERNEL!="sd[a-z][0-9]", GOTO="end_rule"
ACTION=="add", RUN+="/home/root/mount_media %k plugdev"
ACTION=="remove", RUN+="/home/root/mount_media %k unplugdev"
LABEL="end_rule"



в /home/root/mount_media
Spoiler: ShowHide

if [ "$2" = "plugdev" ]; then
     /home/root/mount.sh
else
TEMPL="^/dev/${1} "
MOUNT_POINT=$(/bin/cat /proc/mounts | grep -w "$TEMPL" | /usr/bin/cut -d ' ' -f 2)
umount -l /dev/${1}
sleep 1
rmdir --ignore-fail-on-non-empty "$MOUNT_POINT"
fi
exit 0


и сам скрипт mount.sh
Spoiler: ShowHide

#!/bin/sh
mountl=''
rmdir /media/* /q 2>/dev/null
for dev in $(ls -1 /dev/disk/by-label/* | grep -v EFI) ; do
  label=$(basename $dev)
 mountl=$mountl$(readlink $dev)
  if [ $label != "raspberrypi" ]; then
     mkdir -p /media/$label
     mount $dev /media/$label -o iocharset=utf8,noatime  2>/dev/null
     if [ -z "$(ls -A /media/$label)" ]; then
   mount $dev /media/$label -o ro,iocharset=utf8,noatime  2>/dev/null
           if [ -z "$(ls -A /media/$label)" ]; then
   mount $dev /media/$label -o noatime 2>/dev/null
                   if [ -z "$(ls -A /media/$label)" ]; then
mount -t xfs $dev /media/$label  2>/dev/null
                       if [ -z "$(ls -A /media/$label)" ]; then 
  mount -t exfat $dev /media/$label  2>/dev/null
                       fi
   fi
           fi
     fi
  fi
done
for dev in $(ls -1 /dev/disk/by-uuid/*) ; do
    alo1=$(readlink $dev | grep mmcblk)
    if [ -z "$alo1" ]; then
    alo2=$(echo "$mountl" | grep "$(readlink $dev)")
    if [ -z "$alo2" ]; then
     label=$(basename $dev)
     mkdir -p /media/$label
     mount $dev /media/$label -o iocharset=utf8,noatime  2>/dev/null
     if [ -z "$(ls -A /media/$label)" ]; then
   mount $dev /media/$label -o ro,iocharset=utf8,noatime  2>/dev/null
           if [ -z "$(ls -A /media/$label)" ]; then
   mount $dev /media/$label -o noatime 2>/dev/null
                   if [ -z "$(ls -A /media/$label)" ]; then
mount -t xfs $dev /media/$label  2>/dev/null
                       if [ -z "$(ls -A /media/$label)" ]; then 
  mount -t exfat $dev /media/$label  2>/dev/null
                       fi
   fi
           fi
fi
     fi
  fi
done


где посмотреть на чем затык?
« Последнее редактирование: 20 Марта 2021, 10:42:46 от Delta213 »
 

Оффлайн ChubaDuba

$ sudo apt-get install udisks2 policykit-1 udiskie --no-install-recommends
$ sudo nano /etc/udev/rules.d/99-udisks2.rules

99-udisks2.rules:
# UDISKS_FILESYSTEM_SHARED
# ==1: mount filesystem to a shared directory (/media/VolumeName)
# ==0: mount filesystem to a private directory (/run/media/$USER/VolumeName)
# See udisks(8)
ENV{ID_FS_USAGE}=="filesystem|other|crypto", ENV{UDISKS_FILESYSTEM_SHARED}="1"

Запускаем:
udiskie --use-udisks2

И всё монтируется в /media
Бλог   @chuba_duba
 
Пользователи, которые поблагодарили этот пост: Delta213

Оффлайн Delta213

  • Пользователь
  • *
  • Сообщений: 22
Огромное спасибо!!!
Да, так работает. Но, тысяча извинений, чайник я, как добавить udiskie --use-udisks2 в автостарт?
Добавил в  /etc/rc.local , не срабатывает. И так не срабатывает: exec udiskie --use-udisks2
« Последнее редактирование: 20 Марта 2021, 12:06:35 от Delta213 »
 

Оффлайн ChubaDuba

$ sudo nano /opt/udisks2_mount

udisks2_mount:
#!/bin/bash

udiskie --use-udisks2

$ sudo chmod +x /opt/udisks2_mount

$ sudo nano /etc/systemd/system/udisks2_mount.service

udisks2_mount.service:
[Unit]
Description=Start udisks2 mount
 
[Service]
ExecStart=/opt/udisks2_mount

$ sudo systemctl daemon-reload
$ sudo systemctl enable udisks2_mount.service
$ sudo systemctl start udisks2_mount.service

Должно заработать.
Бλог   @chuba_duba
 
Пользователи, которые поблагодарили этот пост: Delta213

Оффлайн Delta213

  • Пользователь
  • *
  • Сообщений: 22
Должно заработать.

Не заработало. Как посмотреть в каком месте косяк? В /var/log/syslog я особо страшного не нахожу, хотя я тот еще "специалист".

На udisks2_mount стоит 755, я и на  udisks2_mount.service на всякий 755 поставил.
« Последнее редактирование: 20 Марта 2021, 13:28:32 от Delta213 »
 

Оффлайн ChubaDuba

Не заработало.
Да, косякнул...
Тогда вот так:
$ mkdir -p  ~/.config/systemd/user/
$ nano ~/.config/systemd/user/udiskie.service

udiskie.service:
[Unit]
Description=Removable disk automounter using udisks2

[Service]
ExecStart=/usr/bin/udiskie --use-udisks2

[Install]
WantedBy=default.target

$ systemctl --user daemon-reload
$ systemctl --user enable udiskie.service
$ systemctl --user start udiskie.service


« Последнее редактирование: 20 Марта 2021, 16:43:19 от ChubaDuba »
Бλог   @chuba_duba
 

Оффлайн ChubaDuba

Re: Автомонтирование ЮСБ носителей в консоли
« Ответ #10 : 20 Марта 2021, 16:12:54 »
Проверил, теперь всё монтируется.
Бλог   @chuba_duba
 

Оффлайн Delta213

  • Пользователь
  • *
  • Сообщений: 22
Re: Автомонтирование ЮСБ носителей в консоли
« Ответ #11 : 20 Марта 2021, 16:15:46 »
А у меня нет.

То что было в /opt/udisks2_mount
и в /etc/systemd/system/udisks2_mount.service

Надо было оставить? Я удалил.
 

Оффлайн ChubaDuba

Re: Автомонтирование ЮСБ носителей в консоли
« Ответ #12 : 20 Марта 2021, 16:18:04 »
Надо было оставить?
Удалить.
Бλог   @chuba_duba
 

Оффлайн ChubaDuba

Re: Автомонтирование ЮСБ носителей в консоли
« Ответ #13 : 20 Марта 2021, 16:19:07 »
Показывайте содержимое udiskie.service
Бλог   @chuba_duba
 

Оффлайн Delta213

  • Пользователь
  • *
  • Сообщений: 22
Re: Автомонтирование ЮСБ носителей в консоли
« Ответ #14 : 20 Марта 2021, 16:23:53 »
Да вроде на месте.

 

* 4.png (Filesize: 10.37 КБ, Dimensions: 661x418)
 

Теги:
     

    Приятное автомонтирование флэшек в Wheezy (и их отключение)

    Автор Антон Валерьевич

    Ответов: 1
    Просмотров: 6042
    Последний ответ 11 Января 2014, 10:34:58
    от Malaheenee
    [РЕШЕНО] Автомонтирование USB без DE и файловых менеджеров

    Автор speed_vm

    Ответов: 2
    Просмотров: 2905
    Последний ответ 31 Января 2017, 11:54:11
    от speed_vm
    Как настроено автомонтирование флешек в DEB8 (MATE) "из коробки" ?

    Автор shurup

    Ответов: 3
    Просмотров: 1899
    Последний ответ 07 Декабря 2015, 01:37:30
    от Malaheenee
    [РЕШЕНО]помогите настроить автомонтирование устройст хранения

    Автор w.qazmju

    Ответов: 5
    Просмотров: 6050
    Последний ответ 19 Сентября 2016, 22:14:59
    от w.qazmju