中级会员
- 积分
- 325
- 金钱
- 325
- 注册时间
- 2022-4-12
- 在线时间
- 41 小时
|
根据《【正点原子】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
分享完毕
|
|