LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 4196|回复: 11

[Linux][译]Linux 2.6 内核下自动挂载可移动设备的原理及涉及到的系统组件

[复制链接]
发表于 2005-6-24 10:23:44 | 显示全部楼层 |阅读模式
原文见 Mandriva Community Wiki

将可移动设备连入系统时,系统的后台中会依次发生如下事件:
  • 内核检测到新硬件插入,然后分别通知hotplug和udev。前者用来装入相应的内核模块(如usb-storage),而后者用来在/dev中创建相应的设备节点(如/dev/sda1)
  • udev创建了相应的设备节点之后,会将这一消息通知hal的守护程序(hald)。当然udev还得保证新创建的设备节点可以被普通用户访问。
  • hotplug装入了相应的内核模块之后,会把这一消息通知给hald。
  • hald在受到hotplug和udev发出的消息之后,认为新硬件已经正式被系统认可了。此时它会把发现新硬件的消息通过dbus发送出去,同时还会调用update-fstab或fstab-sync来更新/etc/fstab,为相应的设备节点创建适合的挂载点。
  • 卷管理器会监听dbus中发现新硬件的消息。根据所插入的硬件(区分U盘和数码相机等)不同,卷管理器会先将相应的设备节点挂载到hald创建的挂载点上,然后再打开不同的应用程序。

当然,如果是在CDROM中插入光盘,过程可能比较简单。因为CDROM本身就是一个固定的硬件,无需hotplug和udev的协助:
  • hald会自己监视CDROM,并且将光盘托架开合的消息通过dbus发出去。
  • 卷管理器负责检查CDROM中的盘片内容,进行挂载,并调用合适的应用程序。


附件是与此相关的原理图。

译注:
  • 我们将udev称为设备管理器是正确的,因为它负责来管理/dev中的各个设备
  • hald的工作是从上游得到硬件就绪的消息,然后将这个消息转发到dbus中。尽管它会调用程序来更新fstab,但实际上它自己并不执行挂载的工作。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
发表于 2005-6-24 11:23:37 | 显示全部楼层
以前linux的/dev/目录,不管是否挂了优盘都有sda, sda1, ..., sda?的设备符号。现在当挂优盘后,相应设备才出现在/dev/中,难道以前linux不是用的hotplug和udev?
更新fstab?更新mtab吧?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-6-24 11:32:52 | 显示全部楼层
这个取决于你以前所用的是什么设备管理器,以前设备管理器大多是采用devfs的。devfs就是你说的那个样子。

为什么一定要更新mtab呢? 你看看图,用户端可以手动挂载,这个时候就不需要fstab-sync来更新mtab。
回复 支持 反对

使用道具 举报

发表于 2005-6-26 22:41:42 | 显示全部楼层
如果插入了USB没有反应,USB电源的也没有供应,那是什么问题。
硬件应该是没有什么问题,因为在另一个系统下正常。内核也加入了USB支持
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-6-26 23:03:52 | 显示全部楼层
抱歉,这里是讨论理论的地方。至于你的硬件是否可以识别,请到基础版或硬件版询问。
回复 支持 反对

使用道具 举报

发表于 2005-6-26 23:37:27 | 显示全部楼层
很高深的“理论”哈。。。。。如果这个就是所谓的理论,这个版应该叫“Linux操作系统的设计与实现”,何必叫的那么响亮地冠以"计算机科学"与"基础理论"的名号。。。。个人认为这样的帖子放在“Linux 内核研究小组”里面去更适合。
期待面向理论的帖的出现,而不是"Linux的设计与实现"。  
:sleep  :sleep  :sleep
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-6-26 23:52:02 | 显示全部楼层
hotplug、udev、hal、dbus都不是内核的模块,而是独立的软件,放在内核研究小组十分不妥。

我认为,所谓的理论,就是抛开具体的实现。所以谈论一些系统设计方面的东西也未尝不可。
回复 支持 反对

使用道具 举报

发表于 2005-6-27 00:25:28 | 显示全部楼层
You are right. So it many be named "Linux Operation system design and implementation" rather than "Basic theories on computer science". OK, if, it is a theory, I wonder how does windows or BSD do that so? As in my mind that theories should be the abstract ones that discard all realization and concrete things, and abstract the concepts, principles. So, I can understand what is Virtual Memory just abstracted from the implementation of Unix, *BSD, Windows, Linux respectively, NOT how does any one maked it.

I think any ideas is for Linuxsir to grow up fast and healthy. You will not blamed me, will you?     
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-6-27 00:37:14 | 显示全部楼层
所以这个版的名字叫“Linux及计算机学科基础理论”,你可以讨论Linux的基础理论,也可以谈论计算机学科的基础理论
回复 支持 反对

使用道具 举报

发表于 2005-6-29 01:35:32 | 显示全部楼层
比如挂载了一个u盘,当卸载时是手动卸载了它上面的文件系统和在fstab里面的记录,但是如何软件操作到hal来关闭电源呢?可以这么做么?看这个图应该是不行了。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表