linux udev概述

来源:互联网 发布:windows平板电脑排行榜 编辑:程序博客网 时间:2024/05/07 02:46
 

linux udev概述

zz:http://blog.csdn.net/fengying765/article/details/6990330

Udev: linux用户空间设备管理


描述

Udev 是提供设备事件,管理设备节点的权限,在/dev中创建额外的符号链接,或重命名的网络接口的系统软件。根据发现的顺序,内核通常只分配不可预知的设备名称。根据其性能或当前配置,符号连接或网络设备名提供一种方法来可靠地识别设备。

udev处理的所有设备信息存储于udev数据库和发送到可能的事件订阅。通过libudev库可以访问所有的存储数据和资源提供的事件 。

udev中的tools 和rules不是公开的API,并且他们可能随时改变。任何外部应用程序不要调用/ lib / udev中的私有工具,它可能下一个版本中消失。仅udevadm和libudev可以访问udev的信息。在/lib/udev中的tools和rules以及/dev/.udev中的整个内容是udev私有的,他们会在需要时改变。


要求

-kernel版本:可用的 sysfs, procfs, signalfd, inotify,unix domain sockets, networking and hotplug :
    CONFIG_HOTPLUG=y
    CONFIG_UEVENT_HELPER_PATH=""
    CONFIG_NET=y
    CONFIG_UNIX=y
    CONFIG_SYSFS=y
    CONFIG_SYSFS_DEPRECATED*=n
    CONFIG_PROC_FS=y
    CONFIG_TMPFS=y
    CONFIG_INOTIFY_USER=y
    CONFIG_SIGNALFD=y
    CONFIG_TMPFS_POSIX_ACL=y (user ACLs for device nodes)
    CONFIG_BLK_DEV_BSG=y (SCSI devices)

- 选择CONFIG_SYSFS_DEPRECATED*的话udev将不会工作;
- Unix domain sockets (CONFIG_UNIX) 作为可加载的kernel模块,udev将会工作,但是这种方式不被支持;
- 如今已不需要在kernel配置中选择已过时的hotplug工具/sbin/hotplug,它可能致使系统不可用,因为kernel将在并行的情况下创建许多线程以致于耗尽系统的内存资源。

- proc文件系统必须挂载在/proc,sysfs文件系统必须挂载于/sys,一个标准的udev安装不支持其它的路径。

- 在udev启动时,文件系统必须有如下可解析的组名:disk,cdrom,floppy,tape,audio,video,lp,tty,dialout,kmem。这些组名只伴随着rootfs的加载,没有可用网络时。(these group names with only the rootfs mounted, and while no network is available.)

- 编译'udev extras'需要 libacl, libglib2, libusb, usbutils, pciutils,gperf,这些依赖可以用配置选项--disable-extras  disable。


建立

- 启动时,/dev目录应该挂载devtmpfs文件系统。udev将管理kernel创建的设备节点的权限和所有权,并可能创建额外的符号链接。如果需要,udev也可以工作于一个空的tmpfs文件系统,但是一些例如/dev/null, /dev/console, /dev/kmsg的静态设备节点是udev启动所需要的;
- 启动udev守护进程来处理kernel发送的设备事件和申请这些设备的配置,这些通常由以下方式完成:

    /sbin/udevadm trigger --type=subsystems,
    /sbin/udevadm trigger –type=devices
- 重启udev daemon不会对已存在的设备使用任何rules。
- 新的或更改过的rules会自动生效,不需要重启daemon或signal


操作
- 基于kernel发出创建/删除设备events,udev在/dev中创建/删除设备节点。

- 所有的kernel事件都和一套指定的规则匹配,它可能挂接到事件处理和加载所需的kernel模块来设置设备,kernel导出所有设备的主/次设备号,如果需要,udev将会创建一个带有kernel默认名称的设备节点。如果 udev使用设备节点的权限/所有权,创建指向设备节点的额外符号链接,并执行程序来处理对应的设备。

- udev处理的事件,和合并到设备数据库中的信息,可以通过libudev访问到:

http://www.kernel.org/pub/linux/utils/kernel/hotplug/libudev/
http://www.kernel.org/pub/linux/utils/kernel/hotplug/gudev/

0 0