Linux系统中即插即用功能的实现


  它主要由 hotplug, udev, D-BUS, HAL, gamin 几个组件组成。

  hotplug 是Linux系统内核的一部分,在设备插入或拔出时,自动进行配置内核状态。

  udev 是 hotplug 的一部分,负责维护动态的 /dev 目录,使 /dev 目录的内容与当前系统状态一致。

  D-BUS 可以在应用程序之间传送消息,例如可以把“连接上一台打印机”的消息发送给 HAL。

  HAL 可以集成多种来源的信息,包括内核消息,配置文件等等,然后根据 D-BUS 的消息进行操 作。

  gamin 是改进的文件状态监视程序。例如插 入优盘。hotplug 自动加载需要的模块,udev 创建相应的 /dev/sda1 等等节点,hotplug 向 HAL 发消息,HAL 收到消息后,根据配置文件,它运行 fstab-sync 来修改 fstab,创建 /media 的子目录作为挂载点。gamin 检测到 fstab 发生变化之后,通知桌面系统。桌面系统在 “计算机” 项目中建立驱动器图标。在拔出优盘时,与上面的过程类似,模块被卸载,设备文件被删除,fstab 中相应条目被删除,/media 目录下的挂载点也被删除了。

  这个过程非常有用,不同的设备都可以用这个过程,例如音乐 CD 放入光驱后,HAL 可以启动播放程序或者抓轨程序等等。另一个最重要的用途,在 RedHat magazine 第三期中提到了,是 NetworkManager。因为使用移动无线通讯的用户可能会频繁更换网络的连接方式,只有用 hotplug 和 hal 等协作,才可能快速地作出反应,动态切换网络配置。

相关内容