Difference between revisions of "HAL"

From CBLFS
Jump to navigationJump to search
(Dependencies)
Line 7: Line 7:
 
----
 
----
  
{{Package-Introduction|HAL is a hardware abstraction layer and aims to provide a live list of
+
{{Package-Introduction|HAL is a hardware abstraction layer and aims to provide a live list of devices present in the system at any point in time. HAL tries to understand both physical devices (such as PCI, USB) and the device classes (such as input, net and block) physical devices have, and it allows merging of information from so called device info files specific to a device.
devices present in the system at any point in time. HAL tries to understand
 
both physical devices (such as PCI, USB) and the device classes (such as  
 
input, net and block) physical devices have, and it allows merging of
 
information from so called device info files specific to a device.
 
  
HAL provides a network API through D-BUS for querying devices and notifying
+
HAL provides a network API through D-BUS for querying devices and notifying when things change. Finally, HAL provides some monitoring (in an unintrusive way) of devices, presently ethernet link detection and volume mounts are monitored.|http://www.freedesktop.org/Software/hal/}}
when things change. Finally, HAL provides some monitoring (in an unintrusive
 
way) of devices, presently ethernet link detection and volume mounts are
 
monitored.|http://www.freedesktop.org/Software/hal/}}
 
  
 
== Dependencies ==
 
== Dependencies ==
Line 26: Line 19:
 
== Getting the latest source ==
 
== Getting the latest source ==
  
{{Note|This section is optional but recommended. You need this command only if you want to build the latest development version.}}
+
{{Note|This section is optional but recommended. You need this command only if you want to build the latest development version.  Be advised that the latest development version is looking for a newer libvolume_id than you may have on your system.  Refer to the Udev warning above before upgrading.}}
  
 
Check out the source from freedesktop.org:
 
Check out the source from freedesktop.org:
Line 76: Line 69:
 
== Configuration Information ==
 
== Configuration Information ==
  
If you have [[Parted]] installed and you would like to link HAL against libparted pass the following to configure:
+
The following are some options you may wish to pass to HAL:
  
--enable-parted
+
{|
 +
|<i>--enable-parted</i> use [[Parted]]
 +
|-
 +
|<i>--enable-policy-kit</i> use [[PolicyKit]]
 +
|-
 +
|<i>--enable-console-kit</i> use [[ConsoleKit]]
 +
|-
 +
|<i>--enable-acl-management</i> use ACL management
 +
|-
 +
|<i>--enable-umount-helper</i> provide umount.hal helper
 +
|}
  
 
== Non-Multilib ==
 
== Non-Multilib ==
Line 150: Line 153:
  
 
  make install-haldaemon
 
  make install-haldaemon
 
== InitNG Bootscript ==
 
 
Todo
 
  
 
= Contents =
 
= Contents =

Revision as of 03:59, 7 August 2007

Download Source: http://people.freedesktop.org/~david/dist/hal-0.5.14.tar.gz

Introduction to HAL

HAL is a hardware abstraction layer and aims to provide a live list of devices present in the system at any point in time. HAL tries to understand both physical devices (such as PCI, USB) and the device classes (such as input, net and block) physical devices have, and it allows merging of information from so called device info files specific to a device.

HAL provides a network API through D-BUS for querying devices and notifying when things change. Finally, HAL provides some monitoring (in an unintrusive way) of devices, presently ethernet link detection and volume mounts are monitored.

Project Homepage: http://www.freedesktop.org/Software/hal/

Dependencies

As of hal-0.5.8 libvolume_id.so (From Udev) is a required dependency. On multilib systems you must have more then one copy of this library, (32bit,64bit,N32). Please refer to the clfs-svn book for information on configuring a multilib udev. WARNING: Installing a newer or older version of udev then what is currently installed on your system can cause problems booting because of the frequent changes in the rules format. Please use the same version you currently have, or make the appropriate changes/upgrades to your rule set.

Caution.png

Note

HAL-0.5.9.1 incompatible with PolicyKit-0.3 by some API changes. You must explicitly enable PolicyKit support for HAL-0.5.9.1. Either use the development version of HAL from freedesktop's GIT to build against PolicyKit-0.3 or do not pass the --enable-policykit flag to the configure script.

Getting the latest source

Caution.png

Note

This section is optional but recommended. You need this command only if you want to build the latest development version. Be advised that the latest development version is looking for a newer libvolume_id than you may have on your system. Refer to the Udev warning above before upgrading.

Check out the source from freedesktop.org:

git clone git://anongit.freedesktop.org/git/hal &&
cd hal &&
git-checkout -b 4141c63d453885204a45bdd4b968d19e2007b779 &&
cd ..

It couldn't hurt to make a tarball so you have an unmodified source around for the future:

tar cvjf hal{-$(date +%Y%m%d).tar.bz2,}
Caution.png

Note

Replace "./configure" with "./autogen.sh" to build the latest development version.

Dependencies

Required

Recommended

Optional

HalDaemon User/Group

groupadd -g 19 haldaemon &&
useradd -c "HAL Daemon User" -d /dev/null \
        -u 19 -g haldaemon -s /bin/false haldaemon

Configuration Information

The following are some options you may wish to pass to HAL:

--enable-parted use Parted
--enable-policy-kit use PolicyKit
--enable-console-kit use ConsoleKit
--enable-acl-management use ACL management
--enable-umount-helper provide umount.hal helper

Non-Multilib

Compile the package:

./configure --prefix=/usr --sysconfdir=/etc \
    --libexecdir=/usr/lib/hal --localstatedir=/var &&
make

Install the package

make install &&
install -v -m755 -d /var/run/hald

Command Explanations

--libexecdir=/usr/lib/hal: This parameter forces the installation of libexec files to /usr/lib/hal instead of /usr/libexec.

--localstatedir=/var: This parameter forces the creation of the pid file to /var/run/hald instead of /usr/var/run/hald.

Multilib

32Bit

Compile the package:

export USE_ARCH=32 &&
CC="gcc ${BUILD32}" PKG_CONFIG_PATH="${PKG_CONFIG_PATH32}" \
./configure --prefix=/usr --sysconfdir=/etc \
    --libexecdir=/usr/lib/hal --localstatedir=/var &&
make

Install the package

make install &&
unset USE_ARCH

N32

export USE_ARCH=n32 &&
CC="gcc ${BUILDN32}" PKG_CONFIG_PATH="${PKG_CONFIG_PATHN32}" \
./configure --prefix=/usr --sysconfdir=/etc --libdir=/usr/lib32 \
    --libexecdir=/usr/lib/hal --localstatedir=/var &&
make

Install the package

make install &&
unset USE_ARCH

64Bit

export USE_ARCH=64 &&
CC="gcc ${BUILD64}" PKG_CONFIG_PATH="${PKG_CONFIG_PATH64}" \
./configure --prefix=/usr --sysconfdir=/etc --libdir=/usr/lib64 \
    --libexecdir=/usr/lib/hal --localstatedir=/var &&
make

Install the package

make install &&
unset USE_ARCH &&
install -v -m755 -d /var/run/hald

Configuration

Bootscript

Install the bootscript from the blfs-bootscripts package with the following command:

make install-haldaemon

Contents

Installed Programs: hal-device, hal-device-manager, hal-find-by-capability, hal-find-by-property, hal-get-property, hal-set-property, hald and lshal
Installed Libraries: libhal.{so,a} and libhal-storage,{so,a}
Installed Directories: /etc/hal, /usr/include/hal, /usr/lib/hal, /usr/share/doc/hal-0.5.14, /usr/share/hal and /var/run/hald

Short Descriptions

hal-device is used to create, remove or show a HAL device.
hal-device-manager shows a graphical representation of all the devices HAL is aware of. This program requires GNOME-Python. Here is a screenshot of hal-device-manager communicating with the HAL daemon and displaying a tree of device objects. The shown properties in the screenshot are for a device object representing a hard disk.
hal-find-by-capability prints the Unique Device Identifiers for HAL device objects of a given capability.
hal-find-by-property prints the Unique Device Identifiers for HAL device objects where a given property assumes a given value.
hal-get-property retrieves a property from a device.
hal-set-property attempts to set property for a device. Note that, due to security considerations, it may not be possible to set a property.
hald is the HAL daemon program.
lshal shows all devices and their properties. If the --monitor option is given then the device list and all devices are monitored for changes.
libhal.{so,a} contains the API functions required by the HAL programs.
libhal-storage.{so,a} contains the API functions required by the HAL storage and volume utility programs.