HAL
Download Source: | http://hal.freedesktop.org/releases/hal-0.5.14.tar.gz |
---|
Contents
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.
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
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
This would be a good time to install the hal-info package.
Bootscript
Install the bootscript from the bootscripts package with the following command:
make install-haldaemon
HAL Rules
Download the example preferences.fdi file and install it in /etc/hal/fdi/policy.
wget http://cross-lfs.org/~arowland/wiki_files/preferences.fdi mv preferences.fdi /etc/hal/fdi/policy/
Edit this file to add rules. Use hal-device-manager to find key values for writing rules. For example, to prevent HAL from automounting every volume it finds, add lines similar to the following to your preferences.fdi. This example shows two methods of referencing a device, using the block.device key and using the info.udi key.
<device> <match key="block.device" string="/dev/hda1"> <merge key="volume.ignore" type="bool">true</merge> </match> </device> <device> <match key="info.udi" string="/org/freedesktop/Hal/devices/volume_uuid_c574fd03_c44f_4a97_85a5_06a112fb636a"> <merge key="volume.ignore" type="bool">true</merge> </match> </device>
If you installed hal-info, refer to the *.fdi files in /usr/share/hal/fdi/policy for rules that can be assigned to devices.
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. |