OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3828|回复: 1

im6ul基于eudev的U盘自动挂载/卸载

[复制链接]

15

主题

38

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
325
金钱
325
注册时间
2022-4-12
在线时间
41 小时
发表于 2022-4-22 17:30:38 | 显示全部楼层 |阅读模式
根据《【正点原子】I.MX6U 移植Qt5.12.9 V1.0》移植Qt5.12.9时,教程里面提到移植的Qt不能支持热插拔鼠标问题,需要移植libudev,具体的解决方法已经在上一篇帖子分享了,不知道大家有没有成功?
既然已经移植了eudev,现在分享下基于eudev的U盘自动挂载,具体理论知识大家自行百度。。。

直接上结果:

1、找到/etc/udev/rules.d,在该文件夹下创建规则文件xxxxx.rules(xxxxx为自定义的规则名称),我创建的文件名是usb_disk.rules

2、sudo vi usb_disk.rules,并输入下方内容,还是比较容易理解的,大概的意思就是,eudev发现某某设备,然后执行下面的规则确定该调用什么脚本(先检查设备名称,再检查设备类型,再检查动作,如果都符合条件,就执行RUN里指定的脚本,注意脚本后面带上%K,表示给脚本传递设备名称做参数)
KERNEL=="sd[a-z][0-9]",SUBSYSTEM=="block",ACTION=="add",RUN+="/etc/udev/rules.d/usb_disk_insert.sh %k"
KERNEL=="sd[a-z][0-9]",SUBSYSTEM=="block",ACTION=="remove",RUN+="/etc/udev/rules.d/usb_disk_remove.sh %k"


3、编写U盘插入后执行的脚本,注意脚本的位置要跟步骤2里的规则里的写的保持一致,我是直接创建在规则文件加下
sudo vi usb_disk_insert.sh
脚本内容如下,意思是先定义变量保存设备名称和挂载点,删除挂载点的同名文件夹和文件,创建挂载点,将U盘设备挂载到挂载点
注意busybox不支持中文显示,解决方法在《【正点原子】I.MX6U嵌入式Linux驱动开发指南V1.5》的38.2.2小节
#!/bin/sh

echo "usb disk insert !!!" > /dev/console

dev_name=$1
mnt_dir=/mnt/usb_disk/$dev_name

echo $mnt_dir > /dev/console

rm -rf $mnt_dir
mkdir -p $mnt_dir

mount /dev/$dev_name $mnt_dir -t vfat -o iocharset=utf8

4、编写U盘插入后执行的脚本,注意脚本的位置要跟步骤2里的规则里的写的保持一致,我是直接创建在规则文件加下
sudo vi usb_disk_remove.sh
脚本内容如下,意思是先定义变量保存设备名称和挂载点,同步下linux的文件,切换到根目录,卸载之前创建的挂载点,删除之前创建的挂载点
#!/bin/sh

echo "usb disk remove !!!" > /dev/console

dev_name=$1
mnt_dir=/mnt/usb_disk/$dev_name

sync
cd /
umount $mnt_dir
rm -rf $mnt_dir

分享完毕


正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

9

主题

767

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
5274
金钱
5274
注册时间
2019-9-25
在线时间
433 小时
发表于 2022-4-27 09:47:38 | 显示全部楼层
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-25 10:44

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表