Chinaunix首页 | 论坛 | 博客
  • 博客访问: 719077
  • 博文数量: 191
  • 博客积分: 10987
  • 博客等级: 上将
  • 技术积分: 1925
  • 用 户 组: 普通用户
  • 注册时间: 2009-04-22 09:52
文章分类

全部博文(191)

文章存档

2014年(10)

2011年(11)

2010年(38)

2009年(132)

分类: LINUX

2009-06-01 18:41:29

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) |
给主人留下些什么吧!~~