




全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Linux设备文件新策略UDEV (一)2011-01-21 19:34:04|分类: udev |标签:udevlinux策略 |字号大中小订阅 /dirac/blog/item/2ad453f051b551ada50f52e5.html如果你使用Linux比较长时间了,那你就知道,在对待设备文件这块,Linux改变了几次策略。在Linux早期,设备文件仅仅是是一些带有适当的属性集的普通文件,它由mknod命令创建,文件存放在/dev目录下。后来,采用了devfs,一个基于内核的动态设备文件系统,他首次出现在2.3.46内核中。Mandrake,Gentoo等Linux分发版本采用了这种方式。devfs创建的设备文件是动态的。但是devfs有一些严重的限制,从2.6.13版本后移走了。目前取代他的便是文本要提到的udev一个用户空间程序。目前很多的Linux分发版本采纳了udev的方式,因为它在Linux设备访问,特别是那些对设备有极端需求的站点(比如需要控制上千个硬盘)和热插拔设备(比如USB摄像头和MP3播放器)上解决了几个问题。为什么使用udev在此之前的设备文件管理方法(静态文件和devfs)有几个缺点:*不确定的设备映射。*没有足够的主/辅设备号。*/dev目录下文件太多。*命名不够灵活。*devfs需要消耗大量的内存,特别当系统上有大量的设备时udev的目标是想解决上面提到的这些问题,他通采用用户空间(user-space)工具来管理/dev/目录树,他和文件系统分开。知道如何改变缺省配置能让你之大如何定制自己的系统,比如创建设备字符连接,改变设备文件属组,权限等。udev配置文件主要的udev配置文件是/etc/udev/udev.conf。这个文件通常很短,他可能只是包含几行#开头的注释,然后有几行选项:udev_root=/dev/udev_rules=/etc/udev/rules.d/udev_log=err上面的第二行非常重要,因为他表示udev规则存储的目录,这个目录存储的是以.rules结束的文件。每一个文件处理一系列规则来帮助udev分配名字给设备文件以保证能被内核识别。 你的/etc/udev/rules.d下面可能有好几个udev规则文件,这些文件一部分是udev包安装的,另外一部分则是可能是别的硬件或者软件包生成的。比如在Fedora Core 5系统上,sane-backends包就会安装60-libsane.rules文件,另外initscripts包会安装60-net.rules文件。这些规则文件的文件名通常是两个数字开头,它表示系统应用该规则的顺序。规则文件里的规则有一系列的键/值对组成,键/值对之间用逗号(,)分割。每一个键或者是用户匹配键,或者是一个赋值键。匹配键确定规则是否被应用,而赋值键表示分配某值给该键。这些值将影响udev创建的设备文件。赋值键可以处理一个多值列表。匹配键和赋值键操作符解释见下表: udev 键/值对操作符操作符 匹配或赋值 解释= 匹配相等比较!= 匹配 不等比较= 赋值分配一个特定的值给该键,他可以覆盖之前的赋值。+= 赋值 追加特定的值给已经存在的键:= 赋值分配一个特定的值给该键,后面的规则不可能覆盖它。 这有点类似我们常见的编程语言,比如C语言。只是这里的键一次可以处理多个值。有一些键在udev规则文件里经常出现,这些键的值可以使用通配符(*,?,甚至范围,比如0-9),这些常用键列举如下: 常用udev键含意键含义ACTION 一个时间活动的名字,比如add,当设备增加的时候KERNEL 在内核里看到的设备名字,比如sd*表示任意SCSI磁盘设备DEVPATH 内核设备录进,比如/devices/*SUBSYSTEM 子系统名字,比如sound,netBUS总线的名字,比如IDE,USBDRIVER 设备驱动的名字,比如ide-cdromID 独立于内核名字的设备名字SYSFS value sysfs属性值,他可以表示任意ENV key 环境变量,可以表示任意PROGRAM 可执行的外部程序,如果程序返回0值,该键则认为为真(true)RESULT 上一个PROGRAM调用返回的标准输出。NAME 根据这个规则创建的设备文件的文件名。注意:仅仅第一行的NAME描述是有效的,后面的均忽略。如果你想使用使用两个以上的名字来访问一个设备的话,可以考虑SYMLINK键。SYMLINK 根据规则创建的字符连接名OWNER 设备文件的属组GROUP 设备文件所在的组。MODE 设备文件的权限,采用8进制RUN 为设备而执行的程序列表LABEL 在配置文件里为内部控制而采用的名字标签(下下面的GOTO服务)GOTO 跳到匹配的规则(通过LABEL来标识),有点类似程序语言中的GOTOIMPORT type 导入一个文件或者一个程序执行后而生成的规则集到当前文件WAIT_FOR_SYSFS 等待一个特定的设备文件的创建。主要是用作时序和依赖问题。PTIONS 特定的选项: last_rule 对这类设备终端规则执行; ignore_device 忽略当前规则; ignore_remove 忽略接下来的并移走请求。all_partitions 为所有的磁盘分区创建设备文件。我们给出一个列子来解释如何使用这些键。下面的例子来自Fedora Core 5系统的标准配置文件。KERNEL=*, OWNER=root GROUP=root, MODE=0600KERNEL=tty, NAME=%k, GROUP=tty, MODE=0666, OPTIONS=last_ruleKERNEL=scd0-9*, SYMLINK+=cdrom cdrom-%kKERNEL=hda-z, BUS=ide, SYSFSremovable=1, SYSFSdevice/media=cdrom, SYMLINK+=cdrom cdrom-%kACTION=add, SUBSYSTEM=scsi_device, RUN+=/sbin/modprobe sg上面的例子给出了5个规则,每一个都是KERNEL或者ACTION键开头:*第一个规则是缺省的,他匹配任意被内核识别到的设备,然后设定这些设备的属组是root,组是root,访问权限模式是0600(-rw-)。这也是一个安全的缺省设置保证所有的设备在默认情况下只有root可以读写。*第二个规则也是比较典型的规则了。它匹配终端设备(tty),然后设置新的权限为0600,所在的组是tty。它也设置了一个特别的设备文件名:%K。在这里例子里,%k代表设备的内核名字。那也就意味着内核识别出这些设备是什么名字,就创建什么样的设备文件名。*第三行开始的KERNEL=scd0-9*,表示 SCSI CD-ROM 驱动. 它创建一对设备符号连接:cdrom和cdrom-%k。*第四行,开始的 KERNEL=hda-z, 表示ATA CDROM驱动器。这个规则创建和上面的规则相同的符号连接。ATA CDROM驱动器需要sysfs值以来区别别的ATA设备,因为SCSI CDROM可以被内核唯一识别。. *第五行以 ACTION=add开始,它告诉udev增加 /sbin/modprobe sg 到命令列表,当任意SCSI设备增加到系统后,这些命令将执行。其效果就是计算机应该会增加sg内核模块来侦测新的SCSI设备。当然,上面仅仅是一小部分例子,如果你的系统采用了udev方式,那你应该可以看到更多的规则。如果你想修改设备的权限或者创建信的符号连接,那么你需要熟读这些规则,特别是要仔细注意你修改的那些与之相关的设备。修改你的udev配置在修改udev配置之前,我们一定要仔细,通常的考虑是:你最好不要修改系统预置的那些规则,特别不要指定影响非常广泛的配置,比如上面例子中的第一行。不正确的配置可能会导致严重的系统问题或者系统根本就无法这个正确的访问设备。而我们正确的做法应该是在/etc/udev/rules.d/下创建一个信的规则文件。确定你给出的文件的后缀是rules文件名给出的数字序列应该比标准配置文件高。比如,你可以创建一个名为99-my-udev.rules的规则文件。在你的规则文件中,你可以指定任何你想修改的配置,比如,假设你修改修改floppy设备的所在组,还准备创建一个信的符号连接/dev/floppy,那你可以这么写:KERNEL=fd0-9*, GROUP=users, SYMLINK+=floppy有些发行版本,比如Fedora,采用了外部脚本来修改某些特定设备的属组,组关系和权限。因此上面的改动可能并不见得生效。如果你遇到了这个问题,你就需要跟踪和修改这个脚本来达到你的目的。或者你可以修改PROGRAM或RUN键的值来做到这点。某些规则的修改可能需要更深的挖掘。比如,你可能想在一个设备上使用sysfs信息来唯一标识一个设备。这些信息最好通过udevinfo命令来获取。$ udevinfo a p $(udevinfo q path n /dev/hda)上面的命令两次使用udevinfo:一次是返回sysfs设备路径(他通常和我们看到的Linux设备文件名所在路径/dev/hda不同);第二次才是查询这个设备路径,结果将是非常常的syfs信息汇总。你可以找到最够的信息来唯一标志你的设备,你可以采用适当的替换udev配置文件中的SYSFS选项。下面的结果就是上面的命令输出rootlocalhost rules.d# udevinfo -a -p $(udevinfo -q path -n /dev/hda1)Udevinfo starts with the device specified by the devpath and thenwalks up the chain of parent devices. It prints for every devicefound, all possible attributes in the udev rules key format.A rule to match, can be composed by the attributes of the deviceand the attributes from one single parent device.looking at device /block/hda/hda1: KERNEL=hda1 SUBSYSTEM=block DRIVER= ATTRstat= 1133 2268 2 4 ATTRsize=208782 ATTRstart=63 ATTRdev=3:1looking at parent device /block/hda: KERNELS=hda SUBSYSTEMS=block DRIVERS= ATTRSstat= 28905 18814 1234781 302540 34087 133247 849708 981336 0 218340 1283968 ATTRSsize=117210240 ATTRSremovable=0 ATTRSrange=64 ATTRSdev=3:0looking at parent device /devices/pci0000:00/0000:00:1f.1/ide0/0.0: KERNELS=0.0 SUBSYSTEMS=ide DRIVERS=ide-disk ATTRSmodalias=ide:m-disk ATTRSdrivename=hda ATTRSmedia=disklooking at parent device /devices/pci0000:00/0000:00:1f.1/ide0: KERNELS=ide0 SUBSYSTEMS= DRIVERS=looking at parent device /devices/pci0000:00/0000:00:1f.1: KERNELS=0000:00:1f.1 SUBSYSTEMS=pci DRIVERS=PIIX_IDE ATTRSbroken_parity_status=0 ATTRSenable=1 ATTRSmodalias=pci:v00008086d000024CAsv0000144Dsd0000C009bc01sc01i8a ATTRSlocal_cpus=1 ATTRSirq=11 ATTRSclass=0x01018a ATTRSsubsystem_device=0xc009 ATTRSsubsystem_vendor=0x144d ATTRSdevice=0x24ca ATTRSvendor=0x8086looking at parent device /devices/pci0000
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025重庆市綦江区教育事业单位面向应届毕业公费师范生考核招聘60人笔试备考试题及答案解析
- 2025中级软考通关题库及答案详解
- 心理危机干预报告
- 2025浙江温州瑞安市司法局编外人员招聘1人笔试备考试题及答案解析
- 企业人文内涵塑造策略
- 大学化学教学方法与实践
- 绿化工程的推广及意义
- 纺织品包装设计手册
- 2025西安雁塔区长延堡社区卫生服务中心招聘笔试含答案
- 2025年口腔颌面外科颌骨骨折固定术后并发症处理技巧模拟考试试卷答案及解析
- 捉弄人的大脑
- 热能动力工程专业英语课件
- 船舶概论课件
- 篮球训练营规章制度范本
- 园林给排水工程
- 肛裂健康宣教
- Rexroth (博世力士乐)VFC 3610系列变频器使用说明书
- ×××学校“学校学生资助管理机构成立文件”
- 动词过去式和过去分词的变化规则练习及答案
- XX资产评估有限公司内部管理制度
- 第四章 土壤污染调查与风险评价
评论
0/150
提交评论