嵌入式linux挂载usb文件系统,支持热插拔
发布的linux版本默认是支持usb文件系统挂在的。挂u盘之前,运行命令cat /proc/partitions,看看现在系统中有哪些分区。插上u盘以后,再次运行上述命令,看看多出来什么分区(通常是sda1或者 sdb1). 1、插入U盘 2、输入 fdisk -l /dev/sda 查看输出结果,比如我的是这样的: # fdisk -l /dev/sda
发布的linux版本默认是支持usb文件系统挂在的。
挂u盘之前,运行命令cat /proc/partitions,看看现在系统中有哪些分区。插上u盘以后,再次运行上述命令,看看多出来什么分区(通常是sda1或者 sdb1).
1、插入U盘
2、输入 fdisk -l /dev/sda 查看输出结果,比如我的是这样的:
# fdisk -l /dev/sda
Disk /dev/sda: 131 MB, 131104768 bytes
3 heads, 32 sectors/track, 2667 cylinders
Units = cylinders of 96 * 512 = 49152 bytes
Device Boot Start End Blocks Id System
/dev/sdb1 * 1 2668 128016 6 FAT16
3、看了上面的输出就知道U盘所在的设备了,比如我的就是/dev/sdb1,接着便是挂载了,假设我将U盘挂载到/mnt/usb目录(没有的话,新建)中,就是 mount -t msdos /dev/sdb1 /mnt/usb ;如果是fat16就使用下面的命令 mount -t msdos /dev/sdb1 /mnt/usb; 如果是fat32 mount -t vfat /dev/sdb1 /mnt/usb -o iocharset=utf8; 如果是ext2格式,就用命令: mount -t ext2 /dev/sda1 /mnt/usb
4、打开/mnt/usb 就可以看到你的U盘里的东西了! cd /mnt/usb
不过如果在插入U盘以后如果再次拔掉U盘,通过命令fdisk -l查看之后会出现和上次不一样(开机后第一次是sda1,再次插拔是sdb1,再次插拔是sdc1)。为了支持热插拔,笔者写了个简单的shell脚本:
if [ -r "/mnt/usb" ] #创建usb挂在目录
then
echo "/mnt/usb file exist"
else
mkdir /mnt/usb
echo "creat directory /mnt/usb"
fi
fdisk -l > file_info.txt #通过命令查看当前U盘所在的盘符,并重定向到file_info.txt文件
line_info=$(sed -n 7p file_info.txt) #获取file_info文件的第七行(根据环境不同,所在的行号不一样,我的是第七行)
echo "line_info = $line_info"
mount_info=$(echo $line_info | cut -c 1-9) #获取第七行的1-9这几个字符为usb的设备文件节点(如:/dev/sda1这九个字符)
echo "mount_info = $mount_info"
if [ -r /mnt/usb/nextph_sep -o -r /mnt/usb/photo -o -r /mnt/usb/bodypart.db -o -r /mnt/usb/nextph_sep -o -r /mnt/usb/apollo.sh -o -r /mnt/usb/chinese.qm -o -r /mnt/usb/english.qm ] #如果在/mnt/usb目录下有我需要的文件,证明已经挂在成功
then
echo "usb has been mounted before"
else
mount -t vfat $mount_info /mnt/usb #挂在usb
if [ $? = 0 ];then #挂在成功
echo "mount usb success"
else
echo "mount usb failed"
exit 1
fi
fi
更多推荐
所有评论(0)