使用udev以/dev动态生成/删除设备文件
-------------请参阅
udev是一个独立于硬件平台的用户空间进程,建立在操作系统上,与驱动程序层无关。 根据此设计实施,您可以随时更改和删除/dev下的设备文件名和指向,以便根据需要安排和管理设置
要准备文件系统并完成这种灵活的功能,只需简单地更改udev配置文件,不需要重新启动操作系统。 udev
我们设备的管理已经像摸袋子一样轻松自如了。
创建udevd工具
-------------请参阅
33558 www.kernel.org/pub/Linux/utils/kernel/hot plug /
# wget 3358 www.us.kernel.org/pub/Linux/utils/kernel/hot plug/udev-100.tar.bz2
# tar xjf udev-100.tar.bz2
# cd udev-100
# vi Makefle
CROSS_COMPILE?=
=====
CROSS_COMPILE?=/usr/local/arm/3.4.1/LHD Qt/arm-Linux -
#化妆
如果没有任何意外,在当前目录中有9个工具程序: udevd控制、udevd、udevinfo、udevmonitor、udevsettle、udevstart、udevtest和udevtrigger 嵌入式系统只需要udevd和udevtest
udev的构成
-------------请参阅
首先,udev需要内核sysfs和tmpfs支持。 sysfs为udev提供设备入口和事件通道,而tmpfs为udev设备文件提供存储空间。 也就是说,在接通电源之前系统中没有足够的设备文件,因此需要先启动kernel的技巧。
由于在kernel启动未完成之前设备文件不可用,因此如果将mtd设备用作rootfs装载点,/dev/MTD块不存在。 在kernel上找不到rootfs,kernel只能停在那里恐慌。
可以通过将设备编号传递给kernel来解决此问题。 在linux系统中,mtdblock的主设备号为31,部件号从0开始,则与以前的/dev/mtdblock/3相同,一个接一个地类推,因此更改引导装载器并返回
然后,需要重新生成rootfs并将udevd和udevstart复制到/slhdqt目录中。 然后,必须通过/etc/建立udev的设备规则:
# cd udev-100
# cpudevdudevstartrootfs/slh dqt /
1、之前使用的udev-100目录中有一个etc目录,其中包含udev设备规则的详细示例文本。 为了简单和简洁,我们只需要使用名为udev-100/etc/udev/udev.conf的文件,就可以在我们的rootfs/etc下创建并复制udev目录。 这个文件很简单。 只有一行注释,用于配置日志信息,嵌入式系统可能无法使用日志,但不能使用udev
# cd rootfs/etc/
# mkdir udev
# CPU dev-100/etc/udev/udev.conf rootfs/etc/udev /
2、在rootfs/etc/udev下创建rules.d目录,生成空配置文件touch etc/udev/rules.d/udev.conf。 然后,编辑此文件并写入以下设置:
# cd rootfs/etc/udev/
# mkdir rules.d
# virootfs/etc/udev/rules.d/udev.conf
-------------请参阅
# VC设备
KERNEL=='tty[0-9]* ',NAME='vc/%n '
#块设备
KERNEL=='loop[0-9]* ',NAME='loop/%n '
# MTD设备
KERNEL=='mtd[0-9]* ',NAME='mtd/%n '
KERNEL=='mtdblock* ',NAME='mtdblock/%n '
#输入设备
KERNEL=='mice' NAME='input/%k '
KERNEL=='mouse[0-9]* ',NAME='input/%k '
KERNEL=='ts[0-9]* ',NAME='input/%k '
KERNEL=='event[0-9]* ',NAME='input/%k '
# misc设备
KERNEL=='apm_bios ',NAME='misc/%k '
KERNEL=='rtc ',NAME='misc/%k '
保存它,我们的设备文件系统基本上很好。 udevd和udevstart会自动分析此文件。
3、在rootfs/etc/init.d/rcS中添加以下行,以便udevd在kernel发生后自动运行:
# vi rootfs/etc/init.d/rcS
-------------请参阅
/lhdqt/mount -t tmpfs tmpfs /dev
echo 'Starting udevd . '
/slhdqt/udevd----daemon
/slhdqt/udevstart
4、重新生成rootfs,烧成flash指定的rootfs part。
5、设备规则需要动态变更时,可以将etc/udev放入jffs或yaffs part准备修改,必要时可以随时扩展udev.conf的配置项目。
转自:http://hi.Baidu.com/zengzhaonong/blog/item/6ff 7261249 c 18452 f 919 b 83 b.html