Rating@Mail.ru
IPB
Etersoft - from Windows to Linux
Etersoft
решения для перехода
с Windows на Linux
Дружественные сайты: alv.me и Rus-Linux.net

Здравствуйте, гость ( Вход | Регистрация ) Поиск · 

> Рекомендация

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

 
Reply to this topic Start new topic
> Настройка монтирования устройств при подключении с помощью hal+udev+KDE
selivan
bookmark
gyfbbdvkffmrljmmmwd
Apr 8 2008, в 23:15
Сообщение #1


Новичок
Иконка группы

Сообщений: 27

Вставить имя   :   Цитата

ОС: Debian GNU/Linux testing

Группа: Участники

Автор темы
Надоело мне каждый раз при вставке флешки или диска кликать мышкой, решил что оно должно само всё делать. Наваял такое вот:

/etc/udev/rules.d/10_local.rules:
Код
#insert rule
BUS=="usb", SUBSYSTEM=="block", KERNEL=="sd*", ACTION=="add", NAME="%k", GROUP="disk", RUN+="/etc/udev/scripts/my-flash-mount.sh add %k"
#eject rule
SUBSYSTEM=="block", KERNEL=="sd*", ACTION=="remove", RUN+="/etc/udev/scripts/my-flash-mount.sh remove %k"


/etc/udev/my-flash-mount.sh
CODE

#!/bin/bash
# using:
# flash-mount.sh add|remove sdc1

LOG=/var/log/udev

# try to mount only partitions (sdb1) , not whole disk (sdb)
DEV=`echo $2 | sed -n '/^sd[a-z][1-9]/p'`
if [ -z $DEV ]; then exit; fi

# get dir name to mount to
# DIRTY CODE !!! FIXME
f=`mktemp`
{ for i in /media/usbdisk[0-9]*; do echo `echo $i | cut -dk -f2`; done } | sort -n | tail -1 > $f
NUM=`cat $f`
if [ $NUM == '[0-9]*' ]; then NUM=0; fi
DIR="/media/usbdisk$NUM"

# DEBUG
echo ------- >> $LOG
echo '$DEV:'$DEV >> $LOG
echo '$DIR:'$DIR >> $LOG


if [ $1 = 'add' ]; then
echo `date` >> $LOG
echo "Mounting $DEV" >> $LOG
{ if [ ! -d $DIR ]; then mkdir -m 750 $DIR; fi } >> $LOG
chown root:plugdev /media/$DEV >> $LOG
mount /dev/$DEV $DIR -t vfat -o users,dmask=007,fmask=117,utf8,noatime,quiet 2>&1 >$LOG
elif [ $1 = 'remove' ]; then
echo `date` >> $LOG
DIR=`mount | fgrep $DEV | cut -d' ' -f 3`
echo "Unmounting $DEV" >> $LOG
umount /dev/$DEV 2>&1 >> $LOG
rmdir $DIR >> $LOG
fi


Оно даже заработало и стало примонтировать вставляемые флешки, но при попытке сделать в KDE для этой флешки "Safely Remove" оно ругается:

Код
Unfortunately, the device system:/media/sdb1 (/dev/sdb1) named 'selivan_flash' and currently mounted at /media/usbdisk0 could not be unmounted.
Unmounting failed due to the following error:
Device to unmount is not in /media/.hal-mtab so it is not mounted by HAL


То есть заниматься монтированием должен всё-таки hal. Как же это можно настроить?

З.Ы. Кусок скрипта про имя каталога для монтирования очень кривой
З.З.Ы. KDE 3.5.8
Go to the top of the page
 
+Quote Post
KernelPanic
bookmark
gyfbbdvkffmrljmmmwd
Apr 8 2008, в 23:33
Сообщение #2


Brain Атаке
Иконка группы

Сообщений: 2060

Вставить имя   :   Цитата

ОС: Debian squeeze/sid/exp
Город: Omsk

Группа: Бывшие модераторы

Ну, теоретически, все просто, так как всего лишь:
Device to unmount is not in /media/.hal-mtab so it is not mounted by HAL
То есть твой скрипт должен добавлять запись в ентот файл и все.

Хотя это, в принципе, ни к чему, так Safety Unmount все равно мышей. Но полезно поиздеваться над халом wink.gif
Go to the top of the page
 
+Quote Post
selivan
bookmark
gyfbbdvkffmrljmmmwd
Apr 9 2008, в 00:08
Сообщение #3


Новичок
Иконка группы

Сообщений: 27

Вставить имя   :   Цитата

ОС: Debian GNU/Linux testing

Группа: Участники

Автор темы
Гугль убедил-таки меня что монтировать должен hal. Вот только нигде не встречается решения проблемы "hal не монтирует", все решают "hal монтирует не так/не туда/не то". Кто-нибудь с Debian, KDE и без такой проблемы плиз скиньте в топик /etc/hal

Safely Remove всегда будет мышкой, компьютер не может догадаться когда мне захочется вынуть флешку, а вот монтировать при втыканни он вполне может. Второй кусок скрипта просто чтобы вынутая неотмонтированная флешка отмонтировалась если возможно
Go to the top of the page
 
+Quote Post
KernelPanic
bookmark
gyfbbdvkffmrljmmmwd
Apr 9 2008, в 00:33
Сообщение #4


Brain Атаке
Иконка группы

Сообщений: 2060

Вставить имя   :   Цитата

ОС: Debian squeeze/sid/exp
Город: Omsk

Группа: Бывшие модераторы

Чет я не понял, у тебя HAL не монтирует или не отмонтирует флэхи, или может и то и другое?
Я прекрасно понял для чего твой скрипт и правило для UDEV тоже wink.gif.
Сообщение, которое тебе выдает HAL, вкратце можно написать так:
"Устройство такое-то, примонтированное туда-то, не может быть отмонтированно ХАЛом, так как нет записи для этого устройства в файле /media/.hal-mtab (тот есть он полагает, что ты не халом монтировал, что верно)".
Теоретически для обмана хала можно соответствующую запись для устройства в данный файл вставлять скриптом (посмотри, какие записи для устройств делает хал в этом файле).
Go to the top of the page
 
+Quote Post
selivan
bookmark
gyfbbdvkffmrljmmmwd
Apr 9 2008, в 00:40
Сообщение #5


Новичок
Иконка группы

Сообщений: 27

Вставить имя   :   Цитата

ОС: Debian GNU/Linux testing

Группа: Участники

Автор темы
Монтирует и отмонтирует, но только если вручную в апплете для media:/ щёлкнуть ''Mount"/"Umount". Я хочу чтобы при вставке флешки она сразу автоматически монтировалась. Можно конечно сказать скрипту писать в .hal-mtab , но что-то записывать в служебные файлы демона - некрасивое решение. И потом придется ещё писать скрипты и для CD/DVD. hal вроде как умеет всё делать сам и красиво. Вот только блин не хочет sad.gif
Go to the top of the page
 
+Quote Post

 Reply to this topic Start new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



RSS Текстовая версия Сейчас: 24th November 2017 - в 10:37




Rating@Mail.ru