внутри которого монтирование запрещено. После изучения темы в интернете, было принято решение реализовать автомонтирование помощью devd и
родился нижеследующий скипт, который в настоящий момент успешно используется. Может кому-нибудь тоже пригодится.
Код: Выделить всё
#!/bin/sh
#
#author Alexander Makarenkov
#vesrion 20100506
#e-mail asim@makarenkov.info
#################################################################
UMASS_MOUNT_PATH=/host/run/item/asim/mnt/removable
#################################################################
remove_prefix(){
echo ${1#${2}}
}
dev_da_list(){
local result
result=''
for i in `ls /dev/da[0-9][a-z]*`; do
device_name=`remove_prefix "$i" '/dev/'`
result="$result $device_name"
done
echo "$result"
}
mnt_da_list(){
local result
result=''
for i in `mount | grep '/dev/da' | cut -f 1 -d ' '`; do
if [ ! -z "$i" ]; then
device_name=`remove_prefix "$i" '/dev/'`
result="$result $device_name"
fi
done
echo "$result"
}
do_mount(){
# $1 - device name
if [ ! -d "$UMASS_MOUNT_PATH/$1" ]; then
mkdir -p "$UMASS_MOUNT_PATH/$1" && chmod 770 "$UMASS_MOUNT_PATH/$1"
fi
if [ -d "$UMASS_MOUNT_PATH/$1" ]; then
mount -o rw,sync "/dev/$1" "$UMASS_MOUNT_PATH/$1" || mount -t msdosfs -o rw,sync,longnames,-L=ru_RU.KOI8-R,-D=CP1251 "/dev/$1" "$UMASS_MOUNT_PATH/$1" || mount -t ext2fs -o rw,sync "/dev/$1" "$UMASS_MOUNT_PATH/$1"
fi
}
is_in_list(){
# $1 - item
# $2 - list
for i in `echo "$2"`; do
if [ '.'"$1" = '.'"$i" ]; then
return 0
fi
done
return 1
}
#################################################################
PATH='/bin:/sbin:/usr/bin:/usr/sbin'
dev_da_list=`dev_da_list`
mnt_da_list=`mnt_da_list`
###########mount da devices that are not mounted yes#############
for i in `dev_da_list`; do
if [ ! -z "$i" ]; then
if ! `is_in_list "$i" "$mnt_da_list"`; then
do_mount "$i" 2>> /dev/null
fi
fi
done
#######umount mounted da devices that are not exists#############
for i in `mnt_da_list`; do
if [ ! -z "$i" ]; then
if ! `is_in_list "$i" "$dev_da_list"`; then
umount -f "/dev/$i" 2>> /dev/null
fi
fi
done
########### remove unmounted mountpoints #############
mnt_da_list=`mnt_da_list`
for i in `ls "$UMASS_MOUNT_PATH"`; do
if [ ! -z "$i" ]; then
if ! `is_in_list "$i" "$mnt_da_list"`; then
rm -R "$UMASS_MOUNT_PATH/$i"
fi
fi
done
#################################################################
Соответственно в devd.conf он прописывается следующим образом:
Код: Выделить всё
### Automount umass devices
attach 10 {
match "device-name" "umass[0-9]+";
action "sleep 4 && /etc/bin/umass-automount.sh";
};
detach 10 {
match "device-name" "umass[0-9]+";
action "/etc/bin/umass-automount.sh";
};
###