LINUX.ORG.RU

автомонтирование MMC


0

0

при втыкании mmc в кардридер ноута появляются /dev/mmcblk0 и /dev/mmcblk0p1. дальнейший отклик отсутствует. руками монтируется нормально.

вобщем, как сделать, чтоб монтировалось само? и окно вылезало с файлами, так же, когда простую флешку втыкаешь.

В гугле ничего не написано.

ubuntu 7.04


Попробовать написать правило в hal.

Файл, ну, к примеру, пусть будет 82-mmcflash.fdi

<?xml version="1.0.gif" encoding="ISO-8859-1"?><!-- -*- SGML -*- -->
<deviceinfo version="0.2">
<device>
<!-- Mount mmc-flash drives as /media/mmc -->
<match key="block.device" string="/dev/mmcblk0">
<merge key="volume.policy.should_mount" type="bool">true</merge>
<merge key="volume.policy.desired_mount_point" type="string">mmc/</merge>
</match>
</device>
</deviceinfo>

Монтироваться будет с /media/mmc. Это все про mmcblk0.

Bebop ★★
()
Ответ на: комментарий от Bebop

Как править правила удева, а главное - зачем, я не знаю. Нигде никакой документации нет.

Как править HAL я тоже не знаю. Ни принципов работы, ни описания fdi также игде нет.

плохо, товарищи.

scyld
() автор топика
Ответ на: комментарий от Bebop

>Попробовать написать правило в hal.

как и подозревал, не сработало. сам намедни такое писал.

scyld
() автор топика
Ответ на: комментарий от scyld

>Как править правила удева ... Нигде никакой документации нет.
извините, вас в гугле забанили?
"writing udev rules" в гугле. первая ссылка

>а главное - зачем, я не знаю
"чтоб монтировалось само"

нужно написать простенькое правило в udev и маленький скрипт. правило в удеве будет отслеживать появление нового устройство и запускать скрипт передавая ему такие параметры как /dev/mmcblk0p1 и допустим метку тома, можно ещё что-то.

допустим у меня сделано так:

/etc/udev/rules.d/51-my.rules:
--------------------------
SUBSYSTEM=="block", ACTION=="add", KERNEL=="sd?1", RUN+="/etc/udev/scripts/udev-mount add %E{ID_SERIAL} %k %E{ID_FS_TYPE}"
SUBSYSTEM=="block", ACTION=="remove", KERNEL=="sd?1", RUN+="/etc/udev/scripts/udev-mount remove %E{ID_SERIAL} %k %E{ID_FS_TYPE}"
#some beeps ;)
SUBSYSTEM=="block", ACTION=="add", KERNEL=="sd?" RUN+="/usr/bin/beep -f1000 -l10 -D100 -n -f3000 -l20"
SUBSYSTEM=="block", ACTION=="remove", KERNEL=="sd?" RUN+="/usr/bin/beep -f1000 -l10 -D100 -n -f500 -l20"
-------------------------

/etc/udev/scripts/udev-mount:
---------------------------
#!/bin/bash
SERIAL=$2
[ "${SERIAL}" == "HITACHI__DK14FA-20-0:0" ] && SERIAL="hitachi"
LOG="/var/log/udev"
MOUNT_POINT="/mnt/${SERIAL}"
DEV=`echo $3 | sed -n /^sd[a-z]/p`
FS_TYPE=$4
ACTION=$1

[ $FS_TYPE ] || FS_TYPE="vfat"
case $FS_TYPE in
ext3) FS_OPTIONS="async,noatime" ;;
vfat) FS_OPTIONS="async,noatime,gid=users,umask=0007,codepage=866,uni_xlate,shortname =winnt" ;;
*) FS_OPTIONS="defaults" ;;
esac

log(){
echo `date +"%b %d %T: "`$msg >> $LOG
}

msg="[MM] Action:${ACTION} Mount_point:${MOUNT_POINT} Device:/dev/$DEV" ; log
if [ "$ACTION" = "add" ]; then
if [ "$DEV" != "" ]; then
[ -d "$MOUNT_POINT" ] || mkdir "$MOUNT_POINT"
chmod 770 "$MOUNT_POINT"
chown root:users "$MOUNT_POINT"
mount /dev/$DEV "$MOUNT_POINT" -t $FS_TYPE -o $FS_OPTIONS
s=$?
[ $s ] && ( msg="[MM] /dev/$DEV successfully mounted" ; log )
[ $s ] || ( msg="[EE] Cannot mount /dev/$DEV, see dmesg for details" ; log ; beep -f2000 -l100 -r3 )
fi
elif [ "$ACTION" = "remove" ]; then
if [ "$DEV" != "" ]; then
umount -l /dev/$DEV
s=$?
[ $s ] && ( msg="[MM] /dev/$DEV successfully unmounted" ; log )
[ $s ] || ( msg="[EE] Cannot unmount /dev/$DEV, see dmesg for details" ; log ; beep -f2000 -l100 -r3 )
rmdir "$MOUNT_POINT"
fi
fi
--------------------------

[ "${SERIAL}" == "HITACHI__DK14FA-20-0:0" ] && SERIAL="hitachi"
это у меня девайс один монтируется в /mnt/hitachi остальные же в /mnt/$SERIAL

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

можно немного подправить скрипт и правила чтобы можно было монтировать девайсы с несколькими партициями.

З.Ы. установите пакет beep и наслаждайтесь звуковым сопровождением монтирования/отмонтированием девайсов)))
З.Ы.2 размонтировать естественно надо вручную (umount /mnt/.....)

Nao ★★★★★
()
Ответ на: комментарий от Nao

а я сделал


root@skjold:/etc/udev/rules.d# cat 85-mount-fstab.rules
SUBSYSTEM=="block", ACTION=="add", KERNEL=="mmcblk[0-9]p[1-9]", RUN+="/bin/mount %E{DEVNAME} /media/%E{ID_FS_LABEL_SAFE}"
SUBSYSTEM=="block", ACTION=="remove", KERNEL=="mmcblk[0-9]p[1-9]", RUN+="/bin/umount %E{DEVNAME}"

что я сделал не так??

где доки по hal fdi? их нет? неужели?

scyld
() автор топика
Ответ на: комментарий от Nao

хм. ты прав.

после этого подмонтировалось.

но это не совсем то. HAL не сработал, и поэтому не появилось никакое окно с файлами.

Вот я и говорю - наверное, надо HAL настроить?

Вот когда флешку втыкаешь и появляется окно - кто монтирует? наверное HAL. он я полагаю, подключен к DBUS и гном с кде получают сообщение что подмонтировано устройство.

А вышеописанным способом монтирует удев, а хал как отдыхал так и отдыхает. это неправильно.

scyld
() автор топика
Ответ на: комментарий от scyld

>но это не совсем то. HAL не сработал, и поэтому не появилось никакое окно с файлами.

да забудь ты про хал. ну напиши в скрипте чтобы окошко открывалось с файлами и всего делов)

Nao ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.