udev介绍

udev介绍:
1.udev规则文件:
    /etc/udev/rules.d/    # 用户自定义的规则文件一般放在这
    /lib/udev/rules.d/

2.udev主配置文件:
    /etc/udev/udev.conf

3.(文件名中的)50为默认值;数值越小越先被解析。
4.udev工具包括udevadm、udevcontrol、udevinfo、udevmonitor、udevsettle、udevtest、
  udevtrigger,都被集成到了udevadm中。


规则说明:
1.udev从头到尾逐行解析每个规则文件,每行代表一个规则,每个规则由若干"键-值"(key-value)对组成。
2.键分为两种:匹配键(match key)、赋值键(assignment key)。
3.每个规则必须至少有一个匹配键和一个赋值键。
4.每个规则一行,不可换行。
5.不可在一行规则中混合匹配两个不同父设备的属性。
6.创建的设备节点的mode默认值为0666
7.外部程序不会在终端执行,要确保程序为可执行,且脚本以shebang开头,终端不会有任何输出。
8.用于获取名称的外部程序运行时,设备节点尚未创建,所以不能访问设备节点。


规则样例:
view plaincopy to clipboardprint?
# 如果有设备被内核命名为hdb,那么创建设备节点my_disk替代hdb(即用/dev/my_disk取代/dev/hdb)  
KERNEL=="hdb", NAME="my_disk" 
# 如果匹配到这样一个设备:内核命名为hdb且驱动为ide-disk;那么维持原设备节点名不变  
# 但是为它创建一个叫sparedisk的符号连接(/dev/sparedisk->/dev/hdb)  
KERNEL=="hdb", DRIVER=="ide-disk", SYMLINK+="sparedisk" 
# 为hdc创建两个符号连接cdrom和cdrom0  
KERNEL=="hdc", SYMLINK+="cdrom cdrom0" 
# 如果从sysfs匹配到一个块设备且大小为234441648则为它的设备节点创建符号连接my_disk  
SUBSYSTEM=="block", ATTR{size}=="234441648", SYMLINK+="my_disk" 
# 为/dev/mice创建符号连接/dev/input/mice  
KERNEL=="mice", NAME="input/%k" 
# 为loop0创建设备节点/dev/loop/0,并为它创建符号连接/dev/loop0  
KERNEL=="loop0", NAME="loop/%n", SYMLINK+="%k" 
# 为fd0~fd9创建设备节点/dev/floppy/(0~9),并为它们创建符号连接/dev/fd(0~9)  
KERNEL=="fd[0-9]*", NAME="floppy/%n", SYMLINK+="%k" 
# 为hiddev字符串开头的设备创建设备节点/dev/usb/diddev*  
KERNEL=="hiddev*", NAME="usb/%k" 
# 设置设备节点的group、owner、mode  
KERNEL=="fb[0-9]*", NAME="fb/%n", SYMLINK+="%k", GROUP="video", OWNER="john", MODE="0666" 
# 使用外部程序device_namer(hda为程序参数)的输出作为符号连接名  
KERNEL=="hda", PROGRAM="/bin/device_namer %k", SYMLINK+="%c" 
# 外部程序输出必须以单个空格隔开每个单词; %c{n}表示第n个单词; %c{n+}表示从第n个到最后的所有单词;  
KERNEL=="hda", PROGRAM="/bin/device_namer %k", NAME="%c{1}", SYMLINK+="%c{2+}" 
# 运行外部程序  
KERNEL=="sdb", RUN+="/usr/bin/my_program" 
# 设置udev环境变量  
KERNEL=="fd0", SYMLINK+="floppy", ENV{some_var}="value" 
# 附加选项  
KERNEL=="sda", GROUP="disk", OPTIONS+="last_rule" 
# 如果有设备被内核命名为hdb,那么创建设备节点my_disk替代hdb(即用/dev/my_disk取代/dev/hdb)
KERNEL=="hdb", NAME="my_disk"
# 如果匹配到这样一个设备:内核命名为hdb且驱动为ide-disk;那么维持原设备节点名不变
# 但是为它创建一个叫sparedisk的符号连接(/dev/sparedisk->/dev/hdb)
KERNEL=="hdb", DRIVER=="ide-disk", SYMLINK+="sparedisk"
# 为hdc创建两个符号连接cdrom和cdrom0
KERNEL=="hdc", SYMLINK+="cdrom cdrom0"
# 如果从sysfs匹配到一个块设备且大小为234441648则为它的设备节点创建符号连接my_disk
SUBSYSTEM=="block", ATTR{size}=="234441648", SYMLINK+="my_disk"
# 为/dev/mice创建符号连接/dev/input/mice
KERNEL=="mice", NAME="input/%k"
# 为loop0创建设备节点/dev/loop/0,并为它创建符号连接/dev/loop0
KERNEL=="loop0", NAME="loop/%n", SYMLINK+="%k"
# 为fd0~fd9创建设备节点/dev/floppy/(0~9),并为它们创建符号连接/dev/fd(0~9)
KERNEL=="fd[0-9]*", NAME="floppy/%n", SYMLINK+="%k"
# 为hiddev字符串开头的设备创建设备节点/dev/usb/diddev*
KERNEL=="hiddev*", NAME="usb/%k"
# 设置设备节点的group、owner、mode
KERNEL=="fb[0-9]*", NAME="fb/%n", SYMLINK+="%k", GROUP="video", OWNER="john", MODE="0666"
# 使用外部程序device_namer(hda为程序参数)的输出作为符号连接名
KERNEL=="hda", PROGRAM="/bin/device_namer %k", SYMLINK+="%c"
# 外部程序输出必须以单个空格隔开每个单词; %c{n}表示第n个单词; %c{n+}表示从第n个到最后的所有单词;
KERNEL=="hda", PROGRAM="/bin/device_namer %k", NAME="%c{1}", SYMLINK+="%c{2+}"
# 运行外部程序
KERNEL=="sdb", RUN+="/usr/bin/my_program"
# 设置udev环境变量
KERNEL=="fd0", SYMLINK+="floppy", ENV{some_var}="value"
# 附加选项
KERNEL=="sda", GROUP="disk", OPTIONS+="last_rule"


常用匹配键:
    * KERNEL     - 匹配设备在内核中的命名
    * SUBSYSTEM  - 匹配设备(在sysfs中)的subsystem名
    * DRIVER     - 匹配设备对应的驱动名
    * ATTR       - 匹配设备在sysfs中属性
    * KERNELS    - 匹配设备及其父亲在内核中的命名
    * SUBSYSTEMS - 匹配设备及其父亲(在sysfs中)的subsystem名
    * DRIVERS    - 匹配设备及其父亲对应的驱动名
    * ATTRS      - 匹配设备及其父亲在sysfs中属性
      注:父亲表示直到最上层的所有祖先

常用赋值键:
    * NAME - 设备节点名
    * SYMLINK - 指向设备节点的符号连接列表

附加选项(Additional options):
    * all_partitions    - 为块设备创建所有可能的分区(设备节点)
    * ignore_device     - 忽略
    * last_rule         - 不受后续规则的影响


udev工具使用:
# 查看设备在sysfs中的属性 $(查看设备的在sysfs中的路径)
udevadm info -a -p $(udevadm info -q path -n /dev/sda)

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/ericzhong83/archive/2009/10/29/4739987.aspx

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值