嵌入式Linux操作系统移植IMX6开发板之实现USB 自动挂载
2018-01-03 01:39
393 查看
本篇文章讲述如何实现USB自动挂载,U盘即插即用,不用手动挂载的方法,以及给出U盘自动挂载的原理。
目前做的IMX6开发板,移植Linux系统,源码(linux内核为3.0.35)由厂家提供(后面会提供内核,uboot,文件系统源码)。主要功能是实现机器人控制器与示教器一体的功能。
一.首先给出我在 IMX6开发板实现的USB自动挂载的方法(不局限于具体开发板):
-USB的自动挂载:
1、在/etc/udev/rules.d目录里面创建11-usb-mount.rules,
11-usb-mount.rules里面的内容如下:
2、 在/sbin/目录里创建mount-usb.sh脚本文件
mount-usb.sh的内容如下:
重启下即可在linux上实现自动挂载,u盘自动挂载到/udisk目录里
-USB的自动卸载:
1、在/etc/udev/rules.d目录里面创建11-usb-umount.rules,内容如下:
2、在/sbin/目录里创建umount-usb.sh脚本文件
通过上面的方法,亲测有效,可以实现U盘的自动挂载。
二 分析一下U盘自动挂载的简单原理
拿jz2440开发板中的led驱动程序做例子:
Busybox中的mdev.conf
在mdev.txt中有说明文档:
mdev.conf的格式:
device regex:正则表达式,表示哪一个设备
uid: owner
gid: 组ID
octal permissions:以八进制表示的属性
@:创建设备节点之后执行命令
$:删除设备节点之前执行命令
*: 创建设备节点之后 和 删除设备节点之前 执行命令
command:要执行的命令
表2.常用的限定符
代码/语法 说明
* 重复零次或更多次
+ 重复一次或更多次
? 重复零次或一次
{n} 重复n次
{n,} 重复n次或更多次
{n,m} 重复n到m次
写mdev.conf
方法1.
方法2.
方法3.
方法4.
方法5.
把命令写入一个脚本(最后需要添加执行权限,chmod + x add_remove_led.sh):
add_remove_led.sh
6 .
U盘自动加载(放到/etc/mdev.conf里面的)
7.
想获得各种学习资源以及交流学习的加我(有我博客中写的代码的原稿):
qq:1126137994
微信:liu1126137994
可以共同交流关于嵌入式,操作系统,C++语言,C语言,数据结构等技术问题。
目前做的IMX6开发板,移植Linux系统,源码(linux内核为3.0.35)由厂家提供(后面会提供内核,uboot,文件系统源码)。主要功能是实现机器人控制器与示教器一体的功能。
一.首先给出我在 IMX6开发板实现的USB自动挂载的方法(不局限于具体开发板):
-USB的自动挂载:
1、在/etc/udev/rules.d目录里面创建11-usb-mount.rules,
11-usb-mount.rules里面的内容如下:
ACTION!="add",GOTO="farsight" KERNEL=="sd[a-z][0-9]",RUN+="/sbin/moun-tusb.sh %k" LABEL="farsight"
2、 在/sbin/目录里创建mount-usb.sh脚本文件
mount-usb.sh的内容如下:
#!/bin/sh /bin/mount -t vfat /dev/$1 /udisk sync
重启下即可在linux上实现自动挂载,u盘自动挂载到/udisk目录里
-USB的自动卸载:
1、在/etc/udev/rules.d目录里面创建11-usb-umount.rules,内容如下:
ACTION!="remove",GOTO="farsight" SUBSYSTEM!="block",GOTO="farsight" KERNEL=="sd[a-z][0-9]",RUN+="/sbin/umount-usb.sh" LABEL="farsight"
2、在/sbin/目录里创建umount-usb.sh脚本文件
umount-usb.sh的内容如下: #!/bin/sh /bin/umount /udisk sync
通过上面的方法,亲测有效,可以实现U盘的自动挂载。
二 分析一下U盘自动挂载的简单原理
拿jz2440开发板中的led驱动程序做例子:
Busybox中的mdev.conf
在mdev.txt中有说明文档:
mdev.conf的格式:
<device regex> <uid>:<gid> <octal permissions> <device regex> <uid>:<gid> <octal permissions> [<@|$|*> <command>]
device regex:正则表达式,表示哪一个设备
uid: owner
gid: 组ID
octal permissions:以八进制表示的属性
@:创建设备节点之后执行命令
$:删除设备节点之前执行命令
*: 创建设备节点之后 和 删除设备节点之前 执行命令
command:要执行的命令
表2.常用的限定符
代码/语法 说明
* 重复零次或更多次
+ 重复一次或更多次
? 重复零次或一次
{n} 重复n次
{n,} 重复n次或更多次
{n,m} 重复n到m次
写mdev.conf
方法1.
leds 0:0 777 led1 0:0 777 led2 0:0 777 led3 0:0 777
方法2.
leds?[123]? 0:0 777
方法3.
leds?[123]? 0:0 777 @ echo create /dev/$MDEV > /dev/console
方法4.
leds?[123]? 0:0 777 * if [ $ACTION = "add" ]; then echo create /dev/$MDEV > /dev/console; else echo remove /dev/$MDEV > /dev/console; fi
方法5.
leds?[123]? 0:0 777 * /bin/add_remove_led.sh (这是要写入mdev.conf的配置)
把命令写入一个脚本(最后需要添加执行权限,chmod + x add_remove_led.sh):
add_remove_led.sh
#!/bin/sh if [ $ACTION = "add" ]; then echo create /dev/$MDEV > /dev/console; else echo remove /dev/$MDEV > /dev/console; fi
6 .
U盘自动加载(放到/etc/mdev.conf里面的)
sda[1-9]+ 0:0 777 * if [ $ACTION = "add" ]; then mount /dev/$MDEV /mnt; else umount /mnt; fi
7.
sda[1-9]+ 0:0 777 * /bin/add_remove_udisk.sh add_remove_udisk.sh (最后需要添加执行权限,chmod + x add 4000 _remove_udisk.sh) #!/bin/sh if [ $ACTION = "add" ]; then mount /dev/$MDEV /udisk; else umount /udisk; fi
想获得各种学习资源以及交流学习的加我(有我博客中写的代码的原稿):
qq:1126137994
微信:liu1126137994
可以共同交流关于嵌入式,操作系统,C++语言,C语言,数据结构等技术问题。
相关文章推荐
- 树莓派上手实战之命令行下实现USB存储设备自动挂载
- linux下插入USB设备使用脚本实现自动挂载
- 如何在i.mx6dl开发板上移植udev并实现移动设备的自动挂载
- 树莓派实现USB存储设备自动挂载
- 在嵌入式开发平台中实现USB设备的自动挂载
- 树莓派Raspberry Pi实战之命令行下实现USB存储设备自动挂载
- 实现USB自动挂载
- 在嵌入式Linux系统中实现USB存储设备的自动挂载
- udev实现自动挂载USB
- usb多分区自动挂载实现方式1(脚本方式,非完美)
- 如何实现USB自动挂载?
- Linux 实现USB自动挂载
- 树莓派Raspberry Pi实战之命令行下实现USB存储设备自动挂载
- 关于在开发板中实现NFS自动挂载的问题
- 树莓派上手实战之命令行下实现USB存储设备自动挂载
- 树莓派Raspberry Pi实战之命令行下实现USB存储设备自动挂载
- 如何实现USB自动挂载?
- 关于在开发板中实现NFS自动挂载的问题
- 用udev自动挂载usb设备
- Ubuntu上利用Chef实现磁盘的自动分区、自动挂载