2011-7-30 13:56:27

来源:互联网 发布:deepin linux 15.4 编辑:程序博客网 时间:2024/05/21 19:46
 

 

 

2011-7-30 13:56:27

 

)udev

1)udev与硬件平台无关,属于用户空间的进程,它脱离驱动层的关联,而建立在操作系统之上,只要修改配置文件使之生效,无需重启操作系统.
2)udev需要内核sysfs和tmpfs的支持
3)udev已经取代devfs和hotplus,udev通过netlink直接监听这些事件.
注:
这里的hotplus主要负责在线和脱机情况下为硬件定位和安装驱动程序模块.
在早期的发行中常使用一个外部二进制文件/sbin/hotplug来将设备状态的改变通知Udev.

 

二)sysfs

1)sysfs是一个建立在内存基础上的文件系统.它建立在内核对象kobjects的基础上,而kobjects是内核2.6新添加的功能.
2)sysfs是包含一系列不同层次的小文件,每一个小文件包含的信息极少.


三)设备节点插入移出的工作流程:

1)当设备插入或移出系统的时候,kernel会向udev守护进程发送事件中的参数和sysfs中的信息.
2)udev守护进程加载适当的驱动程序,并创建/dev/目录下的结点.
3)udev通过根据/etc/udev/rules.d下的规则,把事件发送给HAL.
注:HAL位于操作系统和驱动程序之上,是一个运行于用户空间的服务程序.
4)HAL创建关于这个设备的XML描述.
5)通过Dbus通知相应的应用程序.比如:Natuilus.
注:Dbus类似于系统总线,主要用于进程间通信.


四)创建自定义的udev规则


1)测试nvram,这个nvram模块在rules.d中有定义,nvram被划分为其它杂项

加载nvram模块
modprobe nvram

查看/dev/nvram设备节点
ls -l /dev/nvram
crw-rw---- 1 root root 10, 144 2010-01-31 04:56 /dev/nvram

卸载nvram模块
rmmod nvram

查看/dev/nvram设备节点
ls -l /dev/nvram
ls: cannot access /dev/nvram: No such file or directory

 

2)新增加一个自定义的规则,规则文件名格式:
数字-自定义模块名.rules
注:
数字代表优先级,数字越小,优先级就越高.优先级高的规则先执行,忽略同名的其它名字,但不忽略链接.


数字-文件名.rules

cat << EOF > /etc/udev/rules.d/25-cmos.rules
> KERNEL=="nvram", MODE="0660", NAME="cmos"
> EOF

 

加载nvram模块
modprobe nvram

查看/dev/cmos设备节点
ls -l /dev/cmos
crw-rw---- 1 root root 10, 144 2010-01-31 05:13 /dev/cmos

注:
KERNEL域会让udev端口监听程序去匹配内核模式名nvram.
MODE域代表产生设备节点的权限.
NAME域代表产生设备节点的名字.

原创粉丝点击