Chinaunix首页 | 论坛 | 博客
  • 博客访问: 101935804
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类: LINUX

2008-05-04 22:46:03

 

freedesktop.org是一个开源项目,他主要针对X-Window系统进行一些技术开发.它们旨在
为Linux/Unix平台的桌面软件建立一个基础平台.使桌面软件在其上层运行.HAL就是这个
项目中的一个软件,HAL的全称是”硬件抽象层(Hardware Abstraction Layer)".它位于操作
系统和桌面软件之间,负责将硬件信息传递给上层的桌面软件.

现在可以连接到Linux上的设备种类繁多,为了可以正常使用这些设备,用户需要有一定的技
术水平才可以.HAL就是为了简化这种操作,将硬件信息分析汇总后,提交给上层桌面软件.桌面
软件根据这些信息,可以判断这个硬件设备的类别和属性,进行相应的操作.从而简化用户自己
去操作的过程.

例如,你在桌面状态下,插入一个U盘后,你会发现,U盘被自动挂载到了/media/usbdisk下,桌面
上还会打开一个窗口,显示U盘中的内容.这个自动挂载功能的实现,就依赖于HAL.

并且,用户可以编制自己的HAL规则,为不同的设备指定不同的实现方法.

Turbolinux 10,10.5和11版本,默认会安装HAL软件包.你也可以手动安装:

# rpm -ivh hal-<版本号>.rpm

你也可以从官方网站下载源码包进行安装.
需要下载2个包,hal和hal-info.hal-info中保存有硬件信息库,hal要使用它来识别
硬件设备.


我们下载了hal-0.5.9.rc3.tar.gz和hal-info-20070618.tar.gz包.

# tar zxf hal-0.5.9.rc3.tar.gz
# cd hal-0.5.9
# ./configure
# make
# make install

# tar zxf hal-info-20070618.tar.gz
# cd hal-info-20070618
# ./configure
# make
# make install

HAL规则保存在/etc/hal/fdi/policy和/usr/share/hal/fdi/policy下.下面是一个策略文件的例子.

  
    
      
        
          true
          true
        
       
      
  

作为一个设备策略的范围.里面填写针对某个设备的处理策略.
指定与这个策略相匹配的设备的各个属性值.
指定针对这个设备,所设置的特殊属性值.

上面的例子的主要目的是:
,如果设备是一个分区.

,容量小于3G.

true true 1g


策略说明:

block.is_volume      如果这个设备是一个可以被mount的块设备.
volume.fsusage        并且块设备包含有一个文件系统.
volume.size                文件系统的容量为1047115264字节.

volume.policy.mount_option.sync
添加mount选项sync.

volume.policy.mount_option.noatime
添加mount选项noatime.

volume.policy.desired_mount_point
指定设备mount点是"/media/1g"

在/media下建立1g目录.

# mkdir /media/1g

在桌面环境下,将U盘插入计算机.桌面系统会根据HAL策略将设备挂载到/media/1g下,并打开
一个窗口.

当系统中有新设备连接时,sysfs会通过D-BUS系统信息总线来广播这个消息,并在/sys下建立
该设备的硬件信息.udev会在/dev下建立该设备的设备文件.HAL也会接收到这个信息,它会检查/sys
下的文件,获得硬件信息.然后根据HAL策略,通过D-BUS向上层桌面应用程序提交该硬件的信息.
桌面应用程序会根据这些属性值,做出相应的操作.如:设备若为块设备,则进行挂载等.
工作原理入下图:

新设备               sysfs在/sys下,       udev建立设备             HAL根据策略,向            桌面程序
接入系统   ->   建立相应信息    -> 文件,并进行广播   ->  上层桌面软件提交  ->    进行相应
                                                                                            该硬件的信息.               的操作

参考资料:


阅读(492) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~