转载地址:
http://blog.csdn.net/phoenix500526/article/details/51159567
在整个移植过程中,我所使用的操作平台:
host:Ubuntu14.04 LTS
board:MCIMX6DL-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修改内容:
在这一步骤中,需要视情况而定。如果fstab中缺少tmpfs就添加tmpfs中的两个语句,如果缺少sysfs就添加sysfs的语句。
如果添加或修改了已存在的tmpfs或sysfs,这可能会导致意外的错误,比如你的内核可能会一直停留在”nonblocking
pool is initialized”处,无法跑起来。
rcS修改内容(在rcS中添加如下语句):
添加完成后保存退出。
三、编写自动挂载u盘和sd卡的脚本
在/mnt目录下创建usb目录和sd目录,作为移动存储设备的挂载点。
u盘:
1、修改/etc/udev/udev.conf文件,添加如下内容:
2、在/etc/udev/rules.d目录下创建规则文件。
a、实现u盘自动挂载:sudovim 11-usb-add.rules
添加内容如下:
实现u盘卸载自动删除节点:sudovim 11-usb-remove.rules
3、添加usb挂载脚本
在/sbin下创建mount-usb.sh文件并添加如下内容:
在/sbin下创建umount-usb.sh文件并添加如下内容:
添加完成后保存退出并将其权限修改为可执行。
SD卡:
1、在/etc/udev/rules.d目录下创建规则文件。
a、实现SD卡自动挂载:sudovim 12-sd-add.rules
添加如下内容:
实现sd卡卸载自动删除节点:sudovim 12-sd-remove.rules
添加如下内容:
2、添加sd挂载脚本
在/sbin下创建mount-sd.sh文件并添加如下内容:
在/sbin下创建umount-sd.sh文件并添加如下内容:
添加完成后保存退出并将其权限修改为可执行。
====================================
UDEV的移植
【实验目的】
移植udev 实验自动创建设备节点和自动挂在SD卡和U盘。
【实验环境】
1、 Ubuntu 10.10发行版
2、 u-boot-2010.03
3、 FS2410平台
4、 交叉编译器 arm-none-Linux-gnueabi-gcc-4.3.2
【实验步骤】
1、下载UDEV源码udev-080.tar.bz2,网址:
http://www.us.kernel.org/pub/linux/utils/kernel/hotplug/,
并解压:tar xvf udev-080.tar.bz2
2.交叉编译(在udev-080目录下)。
vim Makefile
修改Makefile,具体修改如下:
CROSS = arm-none-linux-gnueabi-
保存退出。
执行命令:make 进行编译
然后执行
arm-none-linux-gnueabi-strip udev udevd udevstartudevinfo udevtest。
并拷贝这些文件(udev udevd udevstart udevinfo udevtest)到/source/rootfs/bin目录下面。
3.修改/source/rootfs/etc/fstab为
#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
4.修改/source/rootfs/etc/init.d/rcS,添加如下内容
/bin/udevd --daemon
/bin/udevstart
这样当我们插上U盘和SD卡的时候,就可以看到我们的设备节点而不需要手动创建设备节点。
5.SD卡或U盘自动挂载的实现
拷贝实验代码中udev目录(老师给的代码)到 rootfs/etc
拷贝mount-sd.sh、 umount-sd.sh 、mount-usb.sh、 umount-usb.sh到/source/rootfs/sbin下
这个时候当插入U盘或SD卡时就会自动挂载在tmp下。可以通过修改mount-sd.s和mount-usb.sh添加其他功能和修改挂载点。