使用 udev 高效、动态地管理 Linux 设备文件(转载)--3
2013-10-22 15:28
549 查看
udev 的简单规则:
清单 10. 产生网卡设备文件的规则[/b]
该规则表示:如果存在设备的子系统为 net,并且地址 (MAC address) 为“AA:BB:CC:DD:EE:FF”,为该设备产生一个名为 public_NIC 的设备文件。
清单 11. 为指定大小的磁盘产生符号链接的规则[/b]
该规则表示:如果存在设备的子系统为 block,并且大小为 71096640(block),则为该设备的设备文件名产生一个名为 my_disk 的符号链接。
清单 12. 通过外部命令为指定序列号的磁盘产生设备文件的规则[/b]
该规则表示:如果存在设备的内核设备名称是以 sd 开头 ( 磁盘设备 ),以数字结尾 ( 磁盘分区 ),并且通过外部命令查询该设备的 SCSI_ID 号为“35000c50000a7ef67”,则产生一个以 root_disk 开头,内核号码结尾的设备文件,并替换原来的设备文件(如果存在的话)。例如:产生设备名
运用这条规则,可以在
其他常用的 udev 命令:
udevtest:
清单 13. 为 udevtest 保留的规则[/b]
清单 14. udevtest 的执行过程[/b]
可以看出,
start_udev:
清单 15. start_udev 的执行过程[/b]
回页首
小结:
udev 是高效的设备管理工具,其最大的优势是动态管理设备和自定义设备的命名规则,因此替代 devfs 成为 Linux 默认的设备管理工具。通过阅读本文,Linux 用户能够了解到 udev 的工作原理和流程,灵活地运用 udev 规则文件,从而方便地管理 Linux 设备文件。
参考资料
有关 Udev 更多信息,请参考:http://www.kernel.org/pub/linux/utils/kernel/hotplug/udev.html。
在 developerWorks Linux 专区 寻找为 Linux 开发人员(包括 Linux 新手入门)准备的更多参考资料,查阅我们 最受欢迎的文章和教程。
在 developerWorks 上查阅所有 Linux 技巧 和 Linux 教程。
关于作者
黃懋,IBM 中国系统和技术实验室,Open Systems Interoperability Validation Lab 存储测试团队的成员。3-4 年 Linux/Unix 平台和 SAN/NAS 存储产品的测试经验。
清单 10. 产生网卡设备文件的规则[/b]
SUBSYSTEM=="net", SYSFS{address}=="AA:BB:CC:DD:EE:FF", NAME="public_NIC" |
清单 11. 为指定大小的磁盘产生符号链接的规则[/b]
SUBSYSTEM=="block", SYSFS{size}=="71096640", SYMLINK ="my_disk" |
清单 12. 通过外部命令为指定序列号的磁盘产生设备文件的规则[/b]
KERNEL=="sd*[0-9]", PROGRAM=="/lib/udev/scsi_id -g -s %p", \ RESULT=="35000c50000a7ef67", NAME +="root_disk%n" |
/dev/root_disk2,替换原来的设备名
/dev/sda2。
运用这条规则,可以在
/etc/fstab里保持系统分区名称的一致性,而不会受驱动加载顺序或者磁盘标签被破坏的影响,导致操作系统启动时找不到系统分区。
其他常用的 udev 命令:
udevtest:
udevtest会针对一个设备,在不需要 uevent 触发的情况下模拟一次
udev的运行,并输出查询规则文件的过程、所执行的行为、规则文件的执行结果。通常使用
udevtest来调试规则文件。以下是一个针对设备 sda 的
udevtest例子。由于
udevtest是扫描所有的规则文件 ( 包括系统自带的规则文件 ),所以会产生冗长的输出。为了让读者清楚地了解
udevtest,本例只在规则目录里保留一条规则:
清单 13. 为 udevtest 保留的规则[/b]
KERNEL=="sd*", PROGRAM="/lib/udev/scsi_id -g -s %p", RESULT=="35000c50000a7ef67", \ NAME="root_disk%n", SYMLINK="symlink_root_disk%n" |
[root@HOST_RHEL5 rules.d]# udevtest /block/sda main: looking at device '/block/sda' from subsystem 'block' run_program: '/lib/udev/scsi_id -g -s /block/sda' run_program: '/lib/udev/scsi_id' (stdout) '35000c50000a7ef67' run_program: '/lib/udev/scsi_id' returned with status 0 udev_rules_get_name: reset symlink list udev_rules_get_name: add symlink 'symlink_root_disk' udev_rules_get_name: rule applied, 'sda' becomes 'root_disk' udev_device_event: device '/block/sda' already in database, \ validate currently present symlinks udev_node_add: creating device node '/dev/root_disk', major = '8', \ minor = '0', mode = '0660', uid = '0', gid = '0' udev_node_add: creating symlink '/dev/symlink_root_disk' to 'root_disk' |
udevtest对 sda 执行了外部命令
scsi_id, 得到的 stdout 和规则文件里的 RESULT 匹配,所以该规则匹配。然后 ( 模拟 ) 产生设备文件
/dev/root_disk和符号链接
/dev/symlink_root_disk,并为其设定权限。
start_udev:
start_
dev命令重启
udev守护进程,并对所有的设备重新查询规则目录下所有的规则文件,然后执行所匹配的规则里的行为。通常使用该命令让新的规则文件立即生效:
清单 15. start_udev 的执行过程[/b]
[root@HOST_RHEL5 rules.d]# start_udev Starting udev: [ OK ] |
start
_udev
一般没有标准输出,所有的 udev 相关信息都按照配置文件 (
udev.conf)的参数设置,由 syslog记录。
回页首
小结:
udev 是高效的设备管理工具,其最大的优势是动态管理设备和自定义设备的命名规则,因此替代 devfs 成为 Linux 默认的设备管理工具。通过阅读本文,Linux 用户能够了解到 udev 的工作原理和流程,灵活地运用 udev 规则文件,从而方便地管理 Linux 设备文件。
参考资料
有关 Udev 更多信息,请参考:http://www.kernel.org/pub/linux/utils/kernel/hotplug/udev.html。
在 developerWorks Linux 专区 寻找为 Linux 开发人员(包括 Linux 新手入门)准备的更多参考资料,查阅我们 最受欢迎的文章和教程。
在 developerWorks 上查阅所有 Linux 技巧 和 Linux 教程。
关于作者
黃懋,IBM 中国系统和技术实验室,Open Systems Interoperability Validation Lab 存储测试团队的成员。3-4 年 Linux/Unix 平台和 SAN/NAS 存储产品的测试经验。
相关文章推荐
- 使用 udev 高效、动态地管理 Linux 设备文件(转载)--2
- Linux挂载U盘:mount: unknown filesystem type 'ntfs'
- 使用 udev 高效、动态地管理 Linux 设备文件(转载)--1
- 添加Udev规则,让Linux自动挂载U盘(转载)
- linux 自动挂载U盘(1)
- linux-gcc 编译时头文件和库文件搜索路径-转载
- 转:uImage,zimage,bzimage,vmlinux,vmlinuz
- linux软件汉化的一些标准(转自-Ubuntu 简体中文小组工作指南)
- linux虚拟机clone之后,eth0处理问题
- 转贴:浅析 Linux 的国际化与本地化机制
- 转贴:linux软件国际化
- 在Linux下开发多语言软件: Hello GetText!(转载)
- CentOS忘记密码
- linux配置路由
- linux中装置档案管理
- linux sqlplus查询数据中文乱码解决方法记录
- 快速设置linux主机与PC之间共享目录--sudo mount -t cifs //192.168.0.41/share_ share_pc/ -o user=lms
- linux内核奇遇记之md源代码解读之十一raid5d
- Linux Core Dump
- Linux Core Dump