添加 ntfs3 强制挂载; 优化挂载点选择
This commit is contained in:
parent
0f21055517
commit
4565174733
|
@ -5,37 +5,55 @@ LOGGER() {
|
||||||
logger -t "automount[$$]" "$*"
|
logger -t "automount[$$]" "$*"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
get_mnt() {
|
||||||
|
[ -z "$*" ] && return
|
||||||
|
mnt_count=$(uci show | egrep 'fstab.@mount.*uuid' | wc -l)
|
||||||
|
[ "$mnt_count" = 0 ] && return
|
||||||
|
local i=1;for i in $(seq 0 $mnt_count)
|
||||||
|
do
|
||||||
|
if_enabled=$(uci get fstab.@mount[$i].enabled 2> /dev/null)
|
||||||
|
[ "$if_enabled" != 1 ] && continue
|
||||||
|
uuid=$(uci get fstab.@mount[$i].uuid 2> /dev/null)
|
||||||
|
[ "$uuid" != "$1" ] && continue
|
||||||
|
mnt=$(uci get fstab.@mount[$i].target 2> /dev/null)
|
||||||
|
echo $mnt
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
if [ "$(uci get fstab.@global[0].auto_mount)" != 1 ]
|
if [ "$(uci get fstab.@global[0].auto_mount)" != 1 ]
|
||||||
then
|
then
|
||||||
block mount
|
block mount
|
||||||
|
rm -f /tmp/automount.pid
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# [ -f /tmp/automount.pid ] && exit
|
||||||
echo "$$" > /tmp/automount.pid
|
echo "$$" > /tmp/automount.pid
|
||||||
touch -f /tmp/automount.log
|
touch -f /tmp/automount.log
|
||||||
|
|
||||||
case "$HOTPLUG_TYPE,$DEVTYPE" in
|
case "$HOTPLUG_TYPE,$DEVTYPE" in
|
||||||
block,partition)
|
block,partition)
|
||||||
LOGGER "Attached mode: $ACTION"
|
sleep 1
|
||||||
sleep 3
|
|
||||||
if [ "$ACTION" = remove -o "$ACTION" = add ]
|
if [ "$ACTION" = remove -o "$ACTION" = add ]
|
||||||
then
|
then
|
||||||
for disk in $(mount | awk '{print $1}' | grep /dev | egrep -v "rom|mtdblock|loop|overlay");do
|
for disk in $(mount | awk '{print $1}' | grep /dev | egrep -v "rom|mtdblock|loop|overlay");do
|
||||||
part=$(mount | grep $disk | awk '{print $3}')
|
part=$(mount | grep $disk | egrep -v "rom|mtdblock|loop|overlay" | awk '{print $3}')
|
||||||
[ ! "$part" ] && continue
|
[ ! "$part" ] && continue
|
||||||
skip_umount=$(lsblk --list $disk > /dev/null 2>&1; echo $?)
|
skip_umount=$(lsblk --list $disk > /dev/null 2>&1; echo $?)
|
||||||
if [ "$skip_umount" != 0 ]
|
if [ "$skip_umount" != 0 ]
|
||||||
then
|
then
|
||||||
umount $part 2> /dev/null || umount -l $part 2> /dev/null
|
umount $part 2> /dev/null || umount -l $part 2> /dev/null
|
||||||
LOGGER "Successfully umounted invisible part [$part]"
|
LOGGER "Successfully umounted [$part]"
|
||||||
[ ! "$(ls -A $part)" ] && rm -rf $part
|
[ ! "$(ls -A $part)" ] && rm -rf $part
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
|
sleep 1
|
||||||
if [ "$ACTION" = add ]
|
if [ "$ACTION" = add ]
|
||||||
then
|
then
|
||||||
block mount
|
block mount
|
||||||
for part in $(lsblk --list | egrep -v "mtdblock|loop|overlay" | grep part | awk '{print $1}');do
|
for part in $(lsblk --list | egrep -v "mtdblock|loop|overlay" | grep part | awk '{print $1}');do
|
||||||
|
blk_id="$(block info /dev/$part | egrep -o 'UUID="[0-9a-zA-Z].+' | awk -F '["]' '/UUID/{print $2}')"
|
||||||
skip_mount=$(mount | awk '{print $1}' | grep -q $part ; echo $?)
|
skip_mount=$(mount | awk '{print $1}' | grep -q $part ; echo $?)
|
||||||
fstype=$(block info /dev/$part 2> /dev/null | egrep -o 'TYPE="[0-9a-zA-Z].+' | awk -F '["]' '/TYPE/{print $2}')
|
fstype=$(block info /dev/$part 2> /dev/null | egrep -o 'TYPE="[0-9a-zA-Z].+' | awk -F '["]' '/TYPE/{print $2}')
|
||||||
if [ "$skip_mount" = 0 ]
|
if [ "$skip_mount" = 0 ]
|
||||||
|
@ -43,31 +61,30 @@ block,partition)
|
||||||
LOGGER "Already mounted [/dev/$part] on this device"
|
LOGGER "Already mounted [/dev/$part] on this device"
|
||||||
continue
|
continue
|
||||||
fi
|
fi
|
||||||
if [ -z "$fstype" ]
|
|
||||||
then
|
|
||||||
LOGGER "Unknown filesystem of [/dev/$part]"
|
|
||||||
continue
|
|
||||||
fi
|
|
||||||
case "$fstype" in
|
case "$fstype" in
|
||||||
ntfs)
|
*ntfs*)
|
||||||
extra="-o nls=utf8"
|
extra="-o nls=utf8"
|
||||||
|
[ -n "$(opkg list | grep ntfs3-oot 2> /dev/null)" ] && extra="$extra -o force"
|
||||||
|
[ -n "$(opkg list | grep antfs 2> /dev/null)" ] && fstype="antfs"
|
||||||
;;
|
;;
|
||||||
vfat)
|
vfat)
|
||||||
extra="-o iocharset=utf8"
|
extra="-o iocharset=utf8"
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
LOGGER "Try to mount disk [/dev/$part]($fstype) on [/mnt/$part] ..."
|
mnt_point="$(get_mnt $blk_id)"
|
||||||
mkdir -p /mnt/$part
|
[ -z "$mnt_point" ] && mnt_point="/mnt/$part"
|
||||||
chmod 777 /mnt/$part
|
LOGGER "Mounting disk [/dev/$part]($fstype:$blk_id) on [$mnt_point] ..."
|
||||||
mount -t $fstype /dev/$part /mnt/$part -o rw,defaults,discard $extra
|
mkdir -p $mnt_point || LOGGER "Failed to create mount point [$mnt_point]"
|
||||||
|
chmod 777 $mnt_point
|
||||||
|
mount -t $fstype /dev/$part $mnt_point -o rw,defaults,discard $extra
|
||||||
if [ "$?" != 0 ]
|
if [ "$?" != 0 ]
|
||||||
then
|
then
|
||||||
mount /dev/$part /mnt/$part -o rw,defaults && failed=0 || failed=1
|
mount /dev/$part $mnt_point -o rw,defaults && failed=0 || failed=1
|
||||||
else
|
else
|
||||||
failed=0
|
failed=0
|
||||||
fi
|
fi
|
||||||
[ "$failed" = 0 ] && LOGGER "Successfully mounted disk [/dev/$part] on [/mnt/$part]" || {
|
[ "$failed" = 0 ] && LOGGER "Successfully mounted disk [/dev/$part]" || {
|
||||||
LOGGER "Failed to mount disk [/dev/$part] on [/mnt/$part]"
|
LOGGER "Failed to mount disk [/dev/$part]"
|
||||||
}
|
}
|
||||||
sleep 1 & unset failed
|
sleep 1 & unset failed
|
||||||
done
|
done
|
||||||
|
@ -76,5 +93,5 @@ block,partition)
|
||||||
esac
|
esac
|
||||||
|
|
||||||
rm -f /tmp/automount.pid
|
rm -f /tmp/automount.pid
|
||||||
LOGGER "automount: Finished"
|
LOGGER "automount: Done"
|
||||||
exit 0
|
exit 0
|
||||||
|
|
Loading…
Reference in New Issue