openwrt程序之udev
来源:互联网 发布:二战三巨头知乎 编辑:程序博客网 时间:2024/06/05 02:28
转自http://blog.csdn.net/fengying765/article/details/6995313
udev是一种工具,它能够根据系统中的硬件设备的状况动态更新设备文件,包括设备文件的创建,删除等。设备文件通常放在/dev目录下,使用udev后,在/dev下面只包含系统中真实存在的设备。它于硬件平台无关的,位于用户空间,需要内核sysfs和tmpfs的支持,sysfs为udev提供设备入口和uevent通道,tmpfs为udev设备文件提供存放空间。
在 sysfs 下的很多 kobject 下都有 uevent 属性,它主要用于内核与 udev 之间的一个通信接口;从 udev 本身与内核的通信接口 netlink 协议套接字来说,它并不需要知道设备的 uevent 属性文件,但多了 uevent 这样一个接口,可用于 udevmonitor 通过内核向 udevd发送消息,也可用于检查设备本身所支持的 netlink 消息上的环境变量,这个特性一般用于开发人员调试 udev 规则文件, udevtrigger 这个调试工具本身就是以写各设备的 uevent 属性文件实现的。
udev具有如下几个作用:
1. 内核设备事件管理
* 启动初始化时, /dev目录使用tmpfs挂载,然后, Udev拷贝/lib/udev/devices 的静态设备节点到 /dev 目录.
* Udev守护进程开始运行,为所有连接到系统的设备收集来自内核的uevents.
* Udev守护进程解析uevent数据,并且对/etc/udev/rules.d中指定的规则进行匹配.
* 根据指定的规则为设备创建设备节点和符号链接.
* Udev守护进程读取/etc/udev/rules.d/*.rules 中的规则并且保存到内存里面.
* Udev接收接收inotify事件,如果某个规则发生了改变,读取这些改变并更新内存副本.
2. 管理设备节点的权限
在规则文件(*.rules)中利用关键子OWNER, GROUP, MODE为设备设定权限。例如“
KERNEL=="sda", NAME="my_root_disk", MODE="0660"
KERNEL 是匹配键,NAME 和 MODE 是赋值键。
这条规则的意思是:如果有一个设备的内核设备名称为 sda,则该条件生效,执行后面的赋值:
在 /dev下产生一个名为 my_root_disk的设备文件,并把设备文件的权限设为 0660。
例如:/etc/udev/rules.d/10-local.rules
KERNEL=="event*", NAME="input/%k", MODE:="0660", GROUP:="input"
KERNEL=="mouse*", NAME="input/%k", MODE:="0660", GROUP:="input"
KERNEL=="mice*", NAME="input/%k", MODE:="0660", GROUP:="input"
这时插拔一下usb鼠标就会发现/dev/input/mousex以及和它相关的/dev/input/eventx的所属组变成了“input”,而不是默认的“root”。
3. 在/dev中创建额外的符号链接
插拔移动设备将在/dev目录下创建/删除设备的符号链接,例如:
# ls /dev/sda1
4. 重命名的网络接口的系统软件
创建一个rules文件/etc/udev/rules/10-local.rules,如下所示:
DRIVER=“rt3070sta”,NAME=“wlan0”
其中“DRIVER”为无线网络驱动的名称,“NAME”为重命名后的无线网络名称
还可以利用nameif重命名网络接口
nameif ra0 74:F0:6D:4E:89:3A
其中,“ra0” 为重命名后的无线网络名称,“74:F0:6D:4E:89:3A” 无线网络的mac地址
5. 动态分配主/次设备号
传统的devfs不能动态分配major和minor的值,而major和minor非常有限,很快就会用完了。udev能够像DHCP动态分配IP地址一样去动态分配major和minor。
6.提供设备命名持久化的机制
传统设备命名方式不具直观性,像/dev/hda1这样的名字肯定没有boot_disk这样的名字直观。udev能够像DNS解析域名一样去给设备指定一个有意义的名称。
- openwrt程序之udev
- openwrt开发之用户程序打包
- minimal之udev
- linux驱动之--udev
- 初探Linux之udev
- linux之udev
- Linux设备管理之udev
- openwrt 程序开机启动
- openwrt程序自启动
- openwrt 杀死程序
- udev
- udev
- udev
- udev
- udev
- udev
- udev
- udev
- securityoverridehacking challenge 解题思路汇总——JavaScript
- MFC多线程各种线程用法
- UVa 10034 Freckles (最小生成树+kruskal)
- osg 示例程序解析之osgdelaunay
- When you are old
- openwrt程序之udev
- Swift:实例方法和类型方法
- Obj-C内存管理(二)
- 黑马程序员--iOS--Objective-C基础 (内存管理三)
- 暑假集训第三周周六赛 STL D - 胜利大逃亡
- 在VS2010上配置SGI_STL
- XCode上设备或证书不能自动建和修改的问题解决
- iOS UI04_Target-Action
- POJ1465 Multiple BFS+同余判重