Linux编程:Linux udev设备办理器仓酷云
网络操作命令:ifconfig、ip、ping、netstat、telnet、ftp、route、rloginrcp、finger、mail、nslookup甚么是udev?
udev是Linuxkernel2.6系列的设备办理器。它次要的功效是办理/dev目次底下的设备节点。它同时也是用来代替devfs及hotplug的功效,这意味着它要在增加/删除硬件时处置/dev目次和一切用户空间的举动,包含加载firmware时。
udev的最新版本依附于晋级后的Linuxkernel2.6.13的uevent接口的最新版本。利用新版本udev的体系不克不及在2.6.13以下版本启动,除非利用noudev参数来禁用udev并利用传统的/dev来举行设备读取。
<br>
利用udev的优点
1、当设备增加或删除时,udev的保卫历程侦听来自内核的uevent,以此增加大概删除/dev下的设备文件,以是udev只为已毗连的设备发生设备文件,而不会在/dev下发生大批虚无的设备文件。
2、Linux用户能够经由过程自界说的划定规矩文件,天真地发生标识性强的设备文件名,而其实不依附于设备拔出体系的按次。
3、udev能够按必定的前提来设置设备文件的权限和设备文件一切者和组。
udev的设置文件
#cat/etc/udev/udev.conf
#Theinitialsyslog(3)priority:"err","info","debug"orits
#numericalequivalent.Forruntimedebugging,thedaemonsinternal
#statecanbechangedwith:"udevcontrollog_priority=".
udev_log="err"udev_log:syslog纪录日记的级别,默许值是err。假如改成info大概debug的话,会有冗杂的udev日记被纪录上去。
udev_root:udev发生的设备所寄存的目次,默许值是/dev/。倡议不要修正该参数,也因而默许没有显现此选项。
udev的划定规矩和划定规矩文件
划定规矩文件是udev里最主要的部分,默许是寄存在/etc/udev/rules.d/下。一切的划定规矩文件必需以“.rules”为后缀名,划定规矩文件按第一个字母或数字的按次实行。
在划定规矩文件里,除以“#”开首的行(正文),一切的非空行都被视为一条划定规矩,可是一条划定规矩不克不及扩大到多行。划定规矩都是由多个键值对(key-valuepairs)构成,并由逗号离隔,键值对能够分为前提婚配键值对(以下简称“婚配键”)和赋值键值对(以下简称“赋值键”),一条划定规矩能够有多条婚配键和多条赋值键。婚配键是婚配一个设备属性的一切前提,当一个设备的属性婚配了该划定规矩里一切的婚配键,就以为这条划定规矩失效,然后依照赋值键的内容,实行该划定规矩的赋值。上面是一个复杂的划定规矩:
KERNEL==”sdb”,NAME=”root_disk”,MODE=”0660″
KERNEL是婚配键,NAME和MODE是赋值键。这条划定规矩的意义是:假如有一个设备的内核设备称号为sdb,则该前提失效,实行前面的赋值:在/dev下发生一个名为root_disk的设备文件,并把设备文件的权限设为0660。
udev划定规矩的一切操纵符==对照键、值,若即是,则该前提满意。!=对照键、值,若不即是,则该前提满意。=对一个键赋值。+=为一个暗示多个条目标键赋值。:=对一个键赋值,并回绝以后一切对该键的修改。udev划定规矩的婚配键ACTION事务的举动:add(增加设备)、remove(删除设备)。KERNEL内核设备称号,比方:sda,cdrom。DEVPATH设备的devpath路径。SUBSYSTEM设备的子体系称号,比方:sda的子体系为block。BUS设备在devpath里的总线称号,比方:usb。DRIVER设备在devpath里的设备驱动称号,比方:ide-cdrom。ID设备在devpath里的辨认号。SYSFS{filename}设备的devpath路径下,设备的属性文件“filename”里的内容。
比方:SYSFS{model}==“ST936701SS”暗示:假如设备的型号为ST936701SS,则该设备婚配该婚配键。在一条划定规矩中,能够设定最多五条SYSFS的婚配键。ENV{key}情况变量。在一条划定规矩中,能够设定最多五条情况变量的婚配键。PROGRAM挪用内部命令RESULT内部命令PROGRAM的前往了局。
例:PROGRAM==”/lib/udev/scsi_id-g-s$devpath”,RESULT==”35000c50000a7ef67″udev划定规矩的赋值键NAME在/dev下发生的设备文件名。只要第一次对某个设备的NAME的赋值举动失效,以后婚配的划定规矩再对该设备的NAME赋值举动将被疏忽。假如没有任何划定规矩对设备的NAME赋值,udev将利用内核设备称号来发生设备文件。SYMLINK为/dev/下的设备文件发生标记链接。因为udev只能为某个设备发生一个设备文件,以是为了不掩盖体系默许的udev划定规矩所发生的文件,保举利用标记链接。OWNER默许用户GROUP默许用户组MODE设备权限ENV{key}导进一个情况变量。udev可挪用的交换操纵符$kernel,%k设备的内核设备称号,比方:sda、cdrom。$number,%n设备的内核号码,比方:sda3的内核号码是3。$devpath,%p设备的devpath路径。$id,%b设备在devpath里的ID号。$sysfs{file},%s{file}设备的sysfs里file的内容。实在就是设备的属性值。
比方:$sysfs{size}暗示该设备(磁盘)的巨细。$env{key},%E{key}一个情况变量的值。$major,%M设备的major号。$minor%m设备的minor号。$result,%cPROGRAM前往的了局。$parent,%P父设备的设备文件名。$root,%rudev_root的值,默许是/dev/。$tempnode,%N一时设备名。%%标记%自己。$$标记$自己。
NOTE:
devpath:是指一个设备在sysfs文件体系(/sys)下的绝对路径,该路径包括了设备的属性文件。udev里的多半命令都是针对devpath操纵的。比方:sda的devpath是/block/sda,sda2的devpath是/block/sda/sda2。
udev划定规矩文件实例
KERNEL==”sd*”,PROGRAM=”/lib/udev/scsi_id-g-s%p”,RESULT==”35000c50000a7ef67″,SYMLINK=”%k_%c”
该划定规矩的实行:假如有一个内核设备称号以sd开首,且SCSIID为35000c50000a7ef67,则为设备文件发生一个标记链接“sda_35000c50000a7ef67”。
SUBSYSTEM==”net”,SYSFS{address}==”00:1E;6E:00:36:F1″,NAME=”public_NIC”
假如存在设备的子体系为net,而且地点(MACaddress)为“00:1E;6E:00:36:F1”,为该设备发生一个名为public_NIC的设备文件。
SUBSYSTEM==”block”,SYSFS{size}==”71096640″,SYMLINK=”my_disk”
假如存在设备的子体系为block,而且巨细为71096640(block),则为该设备的设备文件名发生一个名为my_disk的标记链接。
查询设备信息
查询sysfs文件体系
设备sda的SYSFS{size}能够经由过程cat/sys/block/sda/size失掉;
SYSFS{model}信息能够经由过程cat/sys/block/sda/device/model失掉。
查询磁盘的SCSI_ID
scsi_id-g-s/block/sda
参考文献
维基百科:http://zh.wikipedia.org/wiki/Udev
udev官方文档:http://www.ckuyun.com/pub/linux/utils/kernel/hotplug/udev.html。
IBMdeveloperWorks中国:https://www.ckuyun.com/developerworks/cn/
如果你想在以后的生涯中在软件行业工作的话,学习linux是一项基本技能,所以打从你打算学习linux那天起,放弃windows吧!因为它除了能给你带来片刻的娱乐,别无其他; 上课传授的不仅仅是知识,更重要的是一些道理,包括一些做人的道理,讲课时也抓住重点,循序渐进,让同学理解很快;更可贵的是不以你过去的成绩看问题. Linux?最大的优点在于其作为服务器的强大功能,同时支持多种应用程序及开发工具,所以Linux操作系统有着广泛的应用空间。 为什么要学Linux呢?每个人都有不同的看法,下面我说说自己的感想吧。? 其实老师让写心得我也没怎么找资料应付,自己想到什么就写些什么,所以不免有些凌乱;很少提到编程,因为那些在实验报告里已经说了,这里再写就多余了。 随着Linux应用的扩展,出现了不少Linux社区。有一些非常优秀的社区往往是Linux高手的舞台,如果在探讨高级技巧的论坛张贴非常初级的问题经常会没有结果。 直到学习Linux这门课以后,我才知道,原来我错了。? 请问谁有Linux的学习心得的吗?简单的说说? 以前觉得Linux就跟dos一样,全是用命令窗口,相对于窗口界面来说多麻烦呀。 用户下达的命令解释给系统去执行,并将系统传回的信息再次解释给用户,估shell也称为命令解释器,有关命令的学习可参考论坛相关文章,精通英文也是学习Linux的关键。 Linux简单,占内存少,特别是对于程序开发人员来说很方便,如果说windows的成功在于其方便用户的窗口管理界面。 不同于Windows?系统需要花钱购买,因为Linux的核心是免费的,自由使用的,核心源代码是开放的。 熟悉并掌握安装Linux,安装是学习的前提。目前较常见的安装方法有二种: 这也正是有别的OS得以存在的原因,每个系统都有其自身的优点。?
页:
[1]