[РЕШЕНО] systemd-212-1 - сломали автомонтирование udev

Штатное средство - команда mount. Вот она действительно способна, а всё что выше - причиндалы.

За всё время, что я пользуюсь KDE , был один(!) затык - когда он не дожидался размонтирования. А тут стоило архимагам поменять своё заклинание - и у деревенских колдунов тут же сбежали демоны.
elsonador
А тут стоило архимагам поменять своё заклинание - и у деревенских колдунов тут же сбежали демоны.
+100 )))
Псевдографический инсталлятор Arch Linux ver. 3.8.2
Благодарности принимаются на ЯД 410012815723874
elsonador
А тут стоило архимагам поменять своё заклинание - и у деревенских колдунов тут же сбежали демоны.
Вообще-то, сбежали они только у меня одного. Да и то потому что я использовал очень древнее заклинание, к тому же не очень корректное, как выяснилось. Но древность его обусловлена тем, что оно долго и без проблем работало. Сейчас я его как следует обновил, и дооолго ещё не буду иметь проблем.
Итог.
Комплект из 4 файлов - правило, сервис и два скрипта.
CD/DVD (sr*) монтирует в /media/cdrom; всё остальное - в /media/метка или (если метки нет) в /media/устройство.
Особенности: монтирует от пользователя с uid=1000; параметры vfat слегка заточены под русский; монтирует sdb* и далее (то есть если в системе два винта, то правило надо изменить).
/etc/udev/rules.d/64-automount.rules
# Automount removables
# Automount removables

KERNEL=="sd[b-z]*", ACTION=="add", RUN+="/usr/bin/systemctl start [email protected]%k"
KERNEL=="sd[b-z]*", ACTION=="remove", RUN+="/usr/bin/systemctl stop [email protected]%k"

KERNEL=="sr0", ACTION=="change", ENV{ID_FS_TYPE}=="?*", RUN+="/usr/bin/systemctl start [email protected]%k"
KERNEL=="sr0", ACTION=="change", ENV{ID_FS_TYPE}!="?*", RUN+="/usr/bin/systemctl stop [email protected]%k"
/etc/systemd/system/[email protected]
[Service]
Type=oneshot
TimeoutSec=0
RemainAfterExit=yes

ExecStart=/usr/local/bin/automount %I
ExecStop=/usr/local/bin/autoumount %I
/usr/local/bin/automount
#!/bin/bash
# mount $1 to the /media by label or device name
# mount for user with uid=1000
echo $1
# is FS exists?
ID_FS_TYPE=$(/usr/bin/lsblk -no FSTYPE /dev/$1 2> /dev/null)
if [ ! -n "$ID_FS_TYPE" ]; then
  exit
fi
echo FS=$ID_FS_TYPE

#Define mountpoint: "cdrom" for sr0, label if present, else device name.
#Define mount options
if [ "$1" == "sr0" ]; then
  echo $1==cdrom
  MP="cdrom"
  mount_options="ro"
else
  MP=$(/usr/bin/lsblk -no LABEL /dev/$1 2> /dev/null)
# Global mount options
  mount_options="uid=1000,umask=022,dmask=0"

# Special mount options
  if [ "$ID_FS_TYPE"=="vfat" ]; then
    mount_options=$mount_options,codepage=866,iocharset=utf8
  fi
  if [ "$ID_FS_TYPE"=="ntfs" ]; then
    mount_options=defaults,$mount_options
  fi
fi
if [ ! -n "$MP" ]; then
  MP=$1
fi
mountpoint="/media/$MP"

mp_dir="/run/removable-mount"
echo create $mountpoint, mount $1 and save $mp_dir/$1

# Mount the device
/bin/mkdir -p $mountpoint
/bin/mount -o $mount_options /dev/$1 $mountpoint

# Remember the mountpoint (see "removable-umount")
mkdir -p $mp_dir
echo $mountpoint > $mp_dir/$1
/usr/local/bin/autoumount
#!/bin/bash
# umount $1 if mounted and remove mountpoint (see "removable-mount")
mp_dir="/run/removable-mount"
mp_file=$mp_dir/$1
if [ -f $mp_file ]; then
  mountpoint=`cat $mp_file`
  echo umount $1, remove $mountpoint and $mp_file
  umount /dev/$1 2> /dev/null
  rmdir $mountpoint 2> /dev/null
  rm $mp_file
fi
Есть ещё подвязанные к монтированию в /media два скрипта: один для вывода списка смонтированного в conky, второй - pipemenu отмонтирования для openbox.
У меня пхожая пролема, но на свежеустановленной системе (стационар). На нетбуке, где арч живёт давно и обновляется регулярно, такого нет.
Суть проблемы такова, что при подключении внешних носителей (типа флешки), DE это событие видит, спрашивает "подключить?", если нажимаю "Да", то в ответ приходит "недостаточно прав, введите пароль администратора". Это я выличил быстро, допилив одно правило polkit. Флэшки начали монтироватися, но в режиме "read-only", то есть ничего туда не запишешь. Ради эксперемента монтировал/размонтировал в ручную, пытался записать данные под root`ом, но результат тот-же. ФС на флешках - FAT/NTFS, бегло просмотрел правила polkit и udev, на первый взгляд ничего нового и необычного. Сильно глубоко копать времени нет. Может я какой пакет забыл установить?
Читай WiKi по установке ещё раз, я от нечего делать сделал чистую установку на виртуальную машину - всё тикает.
52th
У меня пхожая пролема,
Ничего похожего. У меня простые и понятные скрипты, а у Вас - неизвестно что, работающее неизвестно как. Зато "полноценная DE".

У меня простые и понятные скрипты, а у Вас - неизвестно что, работающее неизвестно как. Зато "полноценная DE".

А вот мне чего-то не очень хочется городить огород и изобретать велосипеды. Я хочу решать проблемы системы методами самой системы. Скрипты - это давольно тепло и лапово, но мне в данном случае, я хочу чтобы всё работало и без левых "костылей". Когда у меня будут нестандартные задачи по автоматизации (в системе), тогда буду писать скрипты. А монтирование флешек, это простите, ситуация штатная, которая должна работать "из коробки" и причём корректно.
Чует моё сердце - ответ лежит на поверхности, надо либо пару строчек в одном из правил дописать, либо какой-нибудь пакет доустановить.
52th
ФС на флешках - FAT/NTFS
Это стоит ntfs-3g,gvfs?
Последний крик моды - эхо 30-летней давности.
52th

У меня простые и понятные скрипты, а у Вас - неизвестно что, работающее неизвестно как. Зато "полноценная DE".
А вот мне чего-то не очень хочется городить огород и изобретать велосипеды. Я хочу решать проблемы системы методами самой системы. Скрипты - это давольно тепло и лапово, но мне в данном случае, я хочу чтобы всё работало и без левых "костылей".
Золотые слова. Только непонятные. Что такое эта самая "система"? Я считаю, что каждая задача должна решаться на самом нижнем уровне, на котором она решается просто. А если вместо этого "система" нагромождает странные, разнообразные и зачастую глючные средства - это зло и ubuntu way.
В KDE монтированием занимается Dolphin (или кто там дескотоп), в гноме - Nautilus, в XFCE - Thunar, в LXDE - pcmanfm; для особых ценителей есть ещё spaceFM, Stuurman и не знаю что ещё. Кто-то из них монтирует через udisks, кто-то через udisks2 (которые между собой не совместимы), кому-то агента можно полностью настроить; настройки у всех разные; интерфейс не очень удобный. И всё это запросто может заглючить после очередного обновления, что уже не раз бывало.
Что делать тем, кто не любит автомонтирования, я советовать не берусь. А если автомонтирование желательно, то только что я привёл очень простое решение, которое будет работать под любой DE и не повалится после очередного улучшения ФМ.
52th
Когда у меня будут нестандартные задачи по автоматизации (в системе), тогда буду писать скрипты. А монтирование флешек, это простите, ситуация штатная, которая должна работать "из коробки" и причём корректно.
Золотые слова. Только жизнь, к сожалению, под них не подходит. Я не видел ни одной системы, в которой работа с флэшками "из коробки" не имела бы очевидных недостатков. А ведь кроме монтирования есть ещё и отмонтирование - тут вообще песня, самый яркий пример того, как не надо делать, даёт винда.
52th
Чует моё сердце - ответ лежит на поверхности, надо либо пару строчек в одном из правил дописать, либо какой-нибудь пакет доустановить.
Если уж надо разбираться в каких-то правилах и писать какие-то строчки, то лучше это сделать на уровне одинаковых везде udev и systemd - эти знания пригодятся ещё не раз.
 
Зарегистрироваться или войдите чтобы оставить сообщение.