现在Linux系统对桌面的支持在突飞猛进着,特别是Gnome桌面环境在广大厂商的支持下,正迅速地崛起,向最好用的桌面环境发起冲击。KDE的势头也 是不错的,虽然和Gnome相比似乎少了大公司的青睐(都是依赖qt惹的祸),但依靠其坚实的基础和庞大的用户群和研发者,也在不断地发展着。并且 Gnome和KDE也一改以前的势不两立的局势,开始逐渐走到一起,商讨如何让用户更好的在各自的系统中更好地支持原本在对方系统上运行的软件, freedesktop组织就是为了这个目的而创建的。现在这个组织也逐渐的提出了一些被双方支持的标准,Dbus就是个很好的例子。
步入正题吧!
缘起于"超越无限"问我有关的是不是只要装上udev,USB等移动存储设备就能实现自动挂载,我不是太清楚,所以就自己着手分析了一下。
在网上搜了一些资料后发,现网络上的资料比较陈旧了(没办法,开源作者都是比较激进的,一般都不怎么考虑向前兼容,文档一般都滞后于代码,但是,这样也能 促进技术的革新,不至于被向前兼容的条条框框所羁绊),所以就自己边看文档边对代码。后来获知内核对PNP设备的支持在Linux-2.6.15的时侯就 不再采用陈旧的调用/sbin/hotplug的方式来实现了,后来也去除了udev对hotplug的依赖,截止到写这篇blog为止,整体的结构如下 所示:

以KDE环境为例,现在对U盘的自动挂载主要是通过udev,hal和ivman三个守护进程实现的,dbusd在其中起到了消息路由器的功能。
USB盘自动挂载的流程如下:
另外更有一个问题,以前内核通过调用用户空间的程式来发布硬件添加和删除的公告,现在改成了用netlink广播消息的方式,为此我们不得不付出一个守护 进程的代价,这样真的值得么?我想内核采用如此的策略可能是因为内核直接调用用户空间程式多少显得有些粗鲁的原因,出于安全面的考量么?
最后,本文并非介绍以上的软件如何配置,如有需要,go to google for help,需要提醒大家的是文档并不是总有效,一切都再不断的运动和变化中,包括此篇文章!