LinuxSir.cn,穿越时空的Linuxsir!

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

Ubuntu中插上U盘后自动*出nautilus文件浏览器是如何实现的?

[复制链接]
发表于 2009-11-6 21:35:00 | 显示全部楼层 |阅读模式
相信用Ubuntu的人都注意到,每当插上U盘后,系统自动把挂载到/media/disk-1后会再*出一个nautilus文件浏览器显示当前U盘中的文件。这个过程实际包含了两个步骤:
1. 自动挂载
2. *出nautilus文件浏览器显示U盘的内容

对于步骤1,是由系统中udevd和hald两个daemon进程协助完成的,udevd根据90-hal.rules规则负责将kernel的uevent事件发送到指定的socket上去,与此同时hald监听这个socket,
一旦收到一个uevent的事件,从中提取相应的信息,包括热插拔动作(Add, remove, change), 设备类型,如果是add操作,那么hald会进一步从sysfs中抽取设备的描述信息,比如
U盘的卷标,然后挂载到指定的位置,Ubuntu下一般是/media/disk-1

但对于步骤2,又是如何实现的呢?在hald的代码、callouts脚本中没有查找到调用nautilus的命令,非常不解。

有哪位仁兄研究过这个问题?欢迎大家讨论。
发表于 2009-11-6 22:45:49 | 显示全部楼层
兄弟是高手,没研究过这么深的问题。

我想请教一下兄弟,对于步骤1的过程,你是如何跟踪分析或者是从哪些资料书籍上得来的?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-11-7 15:40:26 | 显示全部楼层
To beyes
第一,先从网上找了些有关udev的资料,看看udev是干什么用的,
第二,再后做实验。比如关闭udevd进程,开启hald进程,U盘能否自动挂载,结论是不能。开启udevd进程,关闭hald进程,U盘不能自动挂载,说明hald需要udevd的支持来完成U盘的挂载
第三,进一步做实验。以debug选项重新运行hald进程,插上U盘后,打印出来的debug信息对你理解问题很有启发
第四,阅读相关的源代码理解hald所做的工作。

我没有仔细阅读hald的源代码,有些问题理解不透彻
回复 支持 反对

使用道具 举报

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

本版积分规则

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