1,2.6内核以后,建立设备文件名就通过udev了,udev有什么好处呢,有比较才有好坏,是吗? 2.6内核之前,建立设备文件名是通过mknod或makedev命令来建立的。为什么说这对“难兄难弟就不好呢”?它们错了吗,没错,错就错在时代在进步,这对哥俩跟不上步划了。看看下面这哥俩有多落伍!!
1.1 先说难兄mknod吧:
1.1.1, 他的套路是:mknod-m 赋予权限 建立的设备文件名称 类型 设备的主要号码 设备的次要码
麻烦吧 .建立设备文件名,你要知道它的类型, 块或字符;设备的表示号码,因为内核只认设备识别号码,才不管你的文件名有多么美,它只认数字,"死板的家伙".要记住那么多东东,才能建立设备文件名,如果万一哪天有上百个或上千个设备文件名丢失,那你不被烦死才怪哦。
1.1.2, 举个事列:设备文件名/dev/sda 丢失,内核无法读取硬盘.找吧,兄弟,类型,这个好说,是块 设备,用b来表示类型.那设备的识别码,什么?什么叫设备识别码?去复习一下硬件的知识吧.
这个可不好找哦。不过也不是没有办法,安装一个包就可以了。kernel-doc软件包,先挂载光驱, 然后载安装即可。安装之后,会生成下列路径:/usr/share/doc/kernel-doc-版本号/Docmentaion/
找到里面的文件: devices.txt .然后使用vi 读取:
8 block SCSI disk devices (0-15)
0 = /dev/sda First SCSI disk whole disk
16 = /dev/sdb Second SCSI disk whole disk
32 = /dev/sdc Third SCSI disk whole disk
...
8是主要设备号码,0是次要设备号码,block 表示是块文件,第一块SCSI磁盘。
既然知道了,那就动手建立吧。我的乖乖,搞了半天,文件名的影都没有.
1.1.3, 执行命令:mknod /dev/sda b 8 0
这样就成功恢复了设备文件名/dev/sda.
汗,麻烦。
1.2 该到难弟MAKEDEV了.(命令是大写形式),如果系统没有安装,还是挂载光驱,然后安装就可以了.软件包是:MAKEDEV-3.23-1.2.i386.rpm
他好说一些,直接 MAKEDEV 设备文件名(不要路径).如:MAKEDEV sda 即可.
说了半天,你还没有切入正题啊。废话少说,言归正传。
2: udev 隆重登堂。
一句话,udev是自动建立设备文件名的。其实知道这一句话就可以了。既然是自动,不需要人为的干预。极好极好。我的题目是“浅谈对udev的理解”,谈谈udev的组成,原理.其他的请高手支招。
2.1 udev的组成
2.1.1 udev 获取/dev/设备文件
2.1.2 namedev 获取 /dev/设备文件的名称,权限,类型等
2.1.3 libsysfs 获取/dev/设备文件的硬件属性信息,如:主要设备码,次要识别码等。
2.2 udev原理
2.2.1 原理理论很简单:
当内核发现安装了一个新设备的时候,内核就触发hotplug进程,由hotplug去安装该设备的驱动程序.
hotplug的事情完成之后,接着触发udev事件,由它来生成该硬件的设备文件名.接着udev就通过它自 己的组件,来获取了该设备文件名的相关信息。至此,设备文件已经建立。完全不需要人为干预.
2.2.2 可以看看自己的机器,当你插入ubs盘的时候,就会生成设备文件名/dev/hdc /dev/hdc1 专门为U盘生成设备文件名,好让该设备文件名去读取U盘设备.当然内核是根据设备识别码来读取硬件设备的. 这个要清楚.也就是说 , /dev/下面的所 有设备文件名都是即时生成的.重启就生成,关机就卸载.
后记:udev的详细资源网上有很多的,关键是自己要理解udev是怎么回事.
阅读(1940) | 评论(0) | 转发(0) |