如何在i.mx6dl开发板上移植udev并实现移动设备的自动挂载

在整个移植过程中,我所使用的操作平台:

hostUbuntu14.04 LTS

boardMCIMX6DL-SDP

udev版本:udev100

一、移植udev

下载udev的源码并进行解压。解压完毕后进入目录,并修改Makefile文件中的CROSS_COMPILE字段,将其改为host

交叉工具链。

注意:此处的交叉工具链名字后面不要有空格!!


修改CFLAGS,在后面添加-mfloat-abi=hard(一定要添加,一定要添加,一定要添加,重要的事情说三遍)


之后保存退出,并执行命令make,执行完后生成了相应的文件。将生成的文件中的udev,udevd,udevstart,udevinfo

udevtest文件拷贝到根文件系统的/bin目录中。

注意:如果没有添加-mfloat-abi=hard,就会报出如下错误:

error:udev uses VFP register arguments,udev.o does not



二、修改/etc/fstab/etc/init.d/rcS文件

fstab修改内容:

<span style="font-size:14px;">	#device mount-point type options dump fsck order
	proc /proc proc defaults 0 0
	tmpfs /tmp tmpfs defaults 0 0
	sysfs /sys sysfs defaults 0 0
	tmpfs /dev tmpfs defaults 0 0</span>

在这一步骤中,需要视情况而定。如果fstab中缺少tmpfs就添加tmpfs中的两个语句,如果缺少sysfs就添加sysfs的语句。

如果添加或修改了已存在的tmpfssysfs,这可能会导致意外的错误,比如你的内核可能会一直停留在”nonblocking 

pool is initialized”处,无法跑起来。


rcS修改内容(rcS中添加如下语句)

<span style="font-size:14px;">	/bin/udevd --daemon
	/bin/udevstart</span>

添加完成后保存退出。


三、编写自动挂载u盘和sd卡的脚本

/mnt目录下创建usb目录和sd目录,作为移动存储设备的挂载点。

u盘:

1、修改/etc/udev/udev.conf文件,添加如下内容:

<span style="font-size:14px;">  	# The initial syslog(3) priority: "err", "info", "debug" or its
	# numerical equivalent. For runtime debugging, the daemons internal
	# state can be changed with: "udevcontrol log_priority=<value>".
	udev_log="err"</span>

2、在/etc/udev/rules.d目录下创建规则文件。

a、实现u盘自动挂载:sudovim 11-usb-add.rules

添加内容如下:

<span style="font-size:14px;">	ACTION!="add",GOTO="farsight"
	KERNEL=="sd[a-z][0-9]",RUN+="/sbin/mount-usb.sh %k"
	LABEL="farsight"</span>

实现u盘卸载自动删除节点:sudovim 11-usb-remove.rules

<span style="font-size:14px;">	ACTION !="remove",GOTO="farsight"
	SUBSYSTEM!="block",GOTO="farsight"
	KERNEL=="sd[a-z][0-9]",RUN+="/sbin/umount-usb.sh"
	LABEL="farsight"</span>

3、添加usb挂载脚本

/sbin下创建mount-usb.sh文件并添加如下内容:

<span style="font-size:14px;">	#!/bin/sh
	/bin/mount -t vfat /dev/$1 /mnt/usb
	sync</span>

/sbin下创建umount-usb.sh文件并添加如下内容:

<span style="font-size:14px;">	#!/bin/sh
	sync
	umount /mnt/usb</span>

添加完成后保存退出并将其权限修改为可执行。

SD卡:

1、在/etc/udev/rules.d目录下创建规则文件。

a、实现SD卡自动挂载:sudovim 12-sd-add.rules

添加如下内容:

<span style="font-size:14px;">	ACTION!="add",GOTO="farsight"
	KERNEL=="mmcblk[0-9]p[0-9]",RUN+="/sbin/mount-sd.sh %k"
	LABEL="farsight"</span>

实现sd卡卸载自动删除节点:sudovim 12-sd-remove.rules

添加如下内容:

<span style="font-size:14px;">	ACTION!="remove",GOTO="farsight" 
	SUBSYSTEM!="block",GOTO="farsight" 
	KERNEL=="mmcblk[0-9]p[0-9]",RUN+="/sbin/umount-sd.sh" 
	LABEL="farsight"</span>

2、添加sd挂载脚本

/sbin下创建mount-sd.sh文件并添加如下内容:

<span style="font-size:14px;">	#!/bin/sh
	/bin/mount -t vfat /dev/$1 /mnt/sd
	sync</span>

/sbin下创建umount-sd.sh文件并添加如下内容:

<span style="font-size:14px;">	#!/bin/sh
	sync
	umount /mnt/sd</span>

添加完成后保存退出并将其权限修改为可执行。












  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值