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

Автор Антон Валерьевич, 11 января 2014, 00:43:10

« назад - далее »

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

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

Я тут давеча писал о явлениях 1) невозможности выключить и перезагрузить компьютер и 2) автоматического монтирования флэшек (USB) правами обычного пользователя в XFCE4 и Mute в Wheezy, при том, что в Squeeze (Gnome2) это происходило запросто.
Здесь я опишу лишь решение второго затруднения.

Я являюсь любителем загружаться в консоли и вручную запускать экранное окружение командой startx или startxfce4 в случае необходимости графического междумордия.
Мною было обнаружено, что при установке графического окружения по умолчанию (Gnome3), при установке Wheezy, вместе с gdm3 (графическим окном авторизации) и выключение/перезагрузка и автомонтирование флэшек работают ожидаемо и естественно.
При консольной авторизации и ручном запуске окон добавление своего пользователя в любые группы давало нулевой результат, касательно перезагрузки и автомонтирования. Т.е дело НЕ в этом.

В процессе поиска решения и нашёл способ автомонтирования флэшек с помощью Udev http://zenux.ru/articles/40/
Этот способ работающий, но чуток неприятный тем, что размонтирование флэшки производится по факту её изъятия из разъёма USB, т.е. этот способ при отключении флэшки, фактически лишь подчищает систему, удаляя ранее созданную папку, в которую была смонтирована флэшка. Я хотел способ культурного, правильного отключения, т.е. сначала отмонтирование, если таковое возможно, и лишь последующее отключение устройства.

Сравнивая работоспособность функций (1) и (2) в Gnome3 и их отсутствие в других случаях, я стал искать источник проблемы.

Решение нашлось в статье http://www.wrigley.me.uk/wp/tag/systemd/
Как я понял, в Wheezy начали внедрять systemd, но сделано это либо неполностью, либо странно. Мне хочется верить, что в дальнейшем вернётся возможность ручного запуска окошек из консоли без потери функциональности.

Недостатком решения, описанного в статье http://www.wrigley.me.uk/wp/tag/systemd/ является необходимость заблаговременного создания вручную папки, в которую будет монтироваться устройство и беЗсмысленное существование этой папки при отсутствии устройства.

Я совместил оба способа, ранее известного с помощью udev и описанного в англоязычной статье.

РЕШЕНИЕ

В папке /etc/udev/rules.d я создал файл 70-automount.rules (название может быть любым), в котором описал два правила
SUBSYSTEM=="block", KERNEL=="sd[b-z][0-9]", ACTION=="add", RUN+="/bin/mkdir /media/%k"
SUBSYSTEM=="block", KERNEL=="sd[b-z][0-9]", ACTION=="remove", RUN+="/bin/rmdir /media/%k"
где %k - параметр, получаемый от ядра, который соответствует имени подключенного устройства. В моём случае это - sdb1, sdc1, sdd1, sd?N и т.п.

Таким образом я избавил себя от необходимости ручного создания папок, в которые будут монтироваться флэшки, и при этом я могу предсказать в какую папку будет монтироваться та или иная флэшка, но об это чуть ниже. Вторая строка файла (второе правило) подчищает систему при вынимании устройства.
Я подозреваю, что при аварийном обесточивании компьютера созданная при подключении папка останется до очередного отключения соответствующего устройства, но мне это представляется достаточно редким случаем и малым "злом".

Это была часть решения взятая из варианта автомонтирования с помощью Udev. Но, пока я лишь создаю папки, но монтирование пока НЕ происходит.
Автоматическое монтирование флэшек достигается добавлением в файл /etc/fstab
следующих строк:
/dev/sdb1                                    /media/sdb1     auto          rw,user,noauto,comment=systemd.automount 0 0
/dev/sdb2                                    /media/sdb2     auto          rw,user,noauto,comment=systemd.automount 0 0
...
/dev/sde3                                    /media/sde3     auto          rw,user,noauto,comment=systemd.automount 0 0

Т.е. вся "хитрость" systemd заключается в наличии параметра comment=systemd.automount в столбце <options>

Вот тут-то мне необходимы папки, создаваемые udev. Я точно знаю в какую папку монтировать каждую флэшку. Таким образом путаница отсутствует.
В своей системе я создал в файле fstab строки для устройств sdb(1-3), sdc(1-3), sdd(1-3) и sde(1-3) - всего 12 строк.
Я понимаю, что это решение ограниченное и НЕкрасивое. Я буду благодарен подсказкам о возможности красивее, короче описать правила для подключения множества устройств с множеством разделов. Я знаю, что мне чаще всего будет хватать и одного раздела на устройство, а больше двух флэшек я обычно одновременно НЕ использую.

Есть ещё один кривой момент. При размонтировании устройства экранное окружение (Mate) ругается на отсутствие у меня прав, но устройство при этом благополучно отмонтируется. Но нужно нажать кнопку <OK> в появляющемся окне предупреждения. Подскажите, как справиться с этой напастью.

Мне следовало бы проверить отмонтирование устройства при совершении операций с флэшкой, например, записывать на неё большой фильм при попытке отмонтирования, а также проверить работоспособность этого решения в отношении картридеров, подключаемых через USB, но пока я ограничился сделанным. Если я проверю эти действия, то напишу здесь же результат проверки.

У меня отсутствует представление о возможных "дырах" в безопасности, которые я мог сделать и прочих недочётах, упущенных мною.
Я буду благодарен за критику и предложения по усовершенствованию моего решения.

Malaheenee

Оформление ужасное, читать просто невозможно.
По теме -  а что, policykit уже отменили?
Все мы где-то, когда-то и в чем-то были новичками.