|
|
udev 和 devfs 到底应该用哪个好?
一 , udev 和 devfs 到底是什么?
在传统的Unix系统上,一般把所有的硬件设备都映射到/dev目录下的设备驱动,就好IDE第一槽,住硬盘就是/dev/hda,然后第一个分区就是/dev/hda1,第二分区就是/dev/hda2
这里方式好处是方便了外部设备的管理,但是,在传统的Unix上/dev/目录下的设备文件都是静态存在的,也就是说预先用mknod创建好存在硬盘上(占用的空间忽略不计)
但是有人觉得这种方式不好,因为假如你硬盘只有2个分区,hda1和hda2,那么静态的/dev/下面hda1,hda2,hda3.hda4----,hda23都是存在,应该设计一种动态加载的/dev/,存在的设备,/dev/下面有对应的文件,如果没有该设备,那么/dev/下面应该没有这个设备文件,这样udev就诞生了
使用udev系统上,开机以前/dev/目录只有几个tty1,tty2这样的基础的设备,在linux启动过程中,udev根据linux sysfs中的描述,知道linux驱动了哪些硬件,于是就在/dev/下面创建这些硬件的对应设备文件
后来又有人觉得udev不爽,因为象usb-storage这种东西是热拔插的,可以在系统启动以后再连接上,这样udev就不能创建对应的设备文件,还有一些在sysfs中不存在的设备,udev也无法创建它的.这样'devfs'就诞生了
devfs是一个内核级的动态/dev/系统,在内核启动的时候由内核创建,/dev/目录下的设备文件,由内核在维护devfs,在硬件上增加一个设备,内核就在/dev下增加一个对应的设备文件,但是devfs设计有个缺点,就是和传统的dev不兼容,比如硬盘对应的文件在传统的dev中应该是 hda,hdb,hdc,hdb,而devfs里面则是/bus/bus0/target0/....(后面不记得了),造成了一些依赖传统设备的程序错误.
现在udev发展出了,udevd一个deamon,监视硬件,动态创建设备文件,但是sysfs问题还没有觉得
而devfs也发展出了devfsd ,也是一个deamon,不过他不监视硬件,他监视/dev/目录,对下面的文件做符号连接,连接成传统的设备文件名 |
|