嵌入式linux挂载usb文件系统,支持热插拔

发布的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
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值