嵌入式系统,在启动时,特别是有存储设备的,如果需要在脚本里面处理,则参考如下,可以对设备文件系统做识别,blkid 工具,另外对fat32,和ntfs系统,则,可以通过ntfs-3g处理,ntfs-3g可以处理读写数据,解决了ntfs自带的不能写的问题;
#Udisk corresponding to port3
UDISK_CORRESPOND_GL850GL1_PORT3="../devices/platform/hiusb-ehci.0/usb1/1-1/1-1.3"
#Mobile HD corresponding to port1
MOBILEHD_CORRESPOND_GL850GL1_PORT1="../devices/platform/hiusb-ehci.0/usb1/1-1/1-1.1"
#SD card corresponding to port3
SDCARD_CORRESPOND_GL850GL2_PORT3="../devices/platform/hiusb-ehci.0/usb1/1-2/1-2.3"
#eMMC card corresponding to port3
EMMCCARD_CORRESPOND_GL850GL2_PORT1="../devices/platform/hiusb-ehci.0/usb1/1-2/1-2.1"
devpartionname="$1"
devname=`echo $1 | tr -d 0-9`
#echo "devpartionname is $devpartionname, devname is $devname"
syshubportdevname=`ls /sys/block/$devname -l | cut -d '>' -f 2 | cut -c 2-48`
#echo "syshubportdevname is $syshubportdevname"
RET_CODE=$?
#Udisk eMMC SDcard HDD SSD MobileHD are /dev/sd[a-z] device
if [ -n "$1" ]; then
if [ -b /dev/$1 ]; then
DEV_FILE_SYSTEM_TYPE=`/usr/tools/blkid /dev/$1 | awk -F '=' '{print $NF}' | cut -d '"' -f 2 | tr -d '\n'`
#distinguish (Udisk eMMC SDcard HDD SSD MobileHD) and SATA
removeableflag=`cat /sys/block/$devname/removable`
if [ $removeableflag -eq 1 ]; then
case $syshubportdevname in
$UDISK_CORRESPOND_GL850GL1_PORT3)
#echo "/dev/$1 is a Udisk!!!"
echo /dev/$1 | tr -d '\n' > $UDISK_STORAGE_INSERTED_FLAG
if [ ! -d $UDISK_STORAGE_MOUNT_DIR ]; then
rm -rf $UDISK_STORAGE_MOUNT_DIR
mkdir $UDISK_STORAGE_MOUNT_DIR
fi
sleep 0.5
if [ "$devpartionname" == "$devname" ]&&[ -f /dev/$devname1 ]; then
echo "ignore Udisk mount!"
else
echo "Udisk mount $devpartionname..."
RET_CODE=0
TYPE="$DEV_FILE_SYSTEM_TYPE"
if [ "$TYPE" == "ntfs" ]; then
echo "try to use ntfs-3g to mount..."
/usr/tools/ntfs-3g /dev/$devpartionname $UDISK_STORAGE_MOUNT_DIR
RET_CODE=$?
elif [ "$TYPE" == "exfat" ]; then
echo "try to use mount.exfat to mount..."
/usr/tools/mount.exfat /dev/$devpartionname $UDISK_STORAGE_MOUNT_DIR
RET_CODE=$?
elif [ "$TYPE" == "vfat" ]; then
echo "try to mount..."
mount /dev/$devpartionname $UDISK_STORAGE_MOUNT_DIR
else
echo "Udisk type unsupport!"
mount /dev/$devpartionname $UDISK_STORAGE_MOUNT_DIR
fi
if [ $RET_CODE -ne 0 ]; then
mount /dev/$devpartionname $UDISK_STORAGE_MOUNT_DIR
fi
fi
;;
$MOBILEHD_CORRESPOND_GL850GL1_PORT1)
#echo "/dev/$1 is a Mobile HD!!!"
echo /dev/$1 | tr -d '\n' > $MOBILE_HD_STORAGE_INSERTED_FLAG
if [ ! -d $MOBILE_HD_STORAGE_MOUNT_DIR ]; then
rm -rf $MOBILE_HD_STORAGE_MOUNT_DIR
mkdir $MOBILE_HD_STORAGE_MOUNT_DIR
fi
#mount /dev/$devpartionname $MOBILE_HD_STORAGE_MOUNT_DIR
;;
$SDCARD_CORRESPOND_GL850GL2_PORT3)
#echo "/dev/$1 is a SD card!!!"
echo /dev/$1 | tr -d '\n' > $SDCARD_STORAGE_INSERTED_FLAG
if [ ! -d $SDCARD_STORAGE_MOUNT_DIR ]; then
rm -rf $SDCARD_STORAGE_MOUNT_DIR
mkdir $SDCARD_STORAGE_MOUNT_DIR
fi
#mount /dev/$devpartionname $SDCARD_STORAGE_MOUNT_DIR
;;
$EMMCCARD_CORRESPOND_GL850GL2_PORT1)
#echo "/dev/$1 is a eMMC card!!!"
#EMMC special handling#
EMMC_BLOCK_DEV=/dev/$devname
echo "EMMC_BLOCK_DEV=$EMMC_BLOCK_DEV"
;;
*)
echo "Unknown system HUB port device name: $syshubportdevname"
;;
esac
else
touch $HDD_STORAGE_INSERTED_FLAG
#echo "/dev/$1 is a HDD!!!"
echo /dev/$1 | tr -d '\n' > $HDD_STORAGE_INSERTED_FLAG
if [ ! -d $HDD_STORAGE_MOUNT_DIR ]; then
rm -rf $HDD_STORAGE_MOUNT_DIR
mkdir $HDD_STORAGE_MOUNT_DIR
fi
#mount /dev/$devpartionname $HDD_STORAGE_MOUNT_DIR
fi
fi
fi