linux 嵌入式自动检测u盘口并挂载

2019-07-12 16:16发布

1、在/etc/udev/rules下面添加 11-usb.rules (11开头是为了把规则排前面) 11-usb.rules 如下:
ACTION!="add",GOTO="out"
KERNEL=="sd[a-z][0-9]",SUBSYSTEM=="block",KERNELS=="1-1:1.0",DRIVERS=="usb-storage",RUN+="/sbin/mount-usb1.sh %k"
KERNEL=="sd[a-z][0-9]",SUBSYSTEM=="block",KERNELS=="1-2:1.0",DRIVERS=="usb-storage",RUN+="/sbin/mount-usb2.sh %k"
LABEL="out"
ACTION!="remove",GOTO="out"
KERNEL=="sd[a-z][0-9]",RUN+="/sbin/umount-usb.sh %k"
LABEL="out"
有两个usb口的设备 ,KERNELS=="1-1:1.0” 1-2:1.0 如果是有四个usb口的时候,我遇到的情况是1-1.1:1.0   1-1.2:1.0   1-1.3:1.0  1-1.4:1.0 这个可以通过串口连接设备,然后插入u盘看log 不同的设备 usb的协议版本或者口都不一样,要视情况定
2、运行脚本 /sbin/mount-usb1 把脚本放在/sbin目录下面 ,当然放别处也可以,RUN后面指定脚本路径即可,记得给脚本运行权限,这样的话,u盘从哪个口插入,就对应执行相应的脚本进行挂载 mount-usb1如下:
#!/bin/sh
mkdir -p /mnt/usb1
mount /dev/$1 /mnt/usb1
内容我不解释了