Description
The Linux Hardware Abstraction Layer (HAL) implements a coherent description of all the hardware on a system, including hot-plugged devices such as on USB (Universal Serial Bus). It works by merging information presented by the operating system, the physical hardware, device drivers, subsystems such as CUPS (Common Unix Printing System), and even from system administrators. This information is collated and made available to application programs via a HAL programming interface.
The haldaemon service invokes the HAL daemon process hald to obtain the kernel-level data via the kernel D-BUS communication channel to collect and to distribute this information. Device data are presented in key+value attribute pairs.
One client of the HAL service is the fstab-sync(8) facility that automatically updates/etc/fstab in response to disk drives coming online. This just applies to CentOS/RHEL 4. fatab-sync facility has been disabled and new mount support on CentOS/RHEL 5 is introduced.
Configuration
To manage the haldaemon service for future shutdowns and reboots, use the chkconfig tool:
# /sbin/chkconfig haldaemon on # /sbin/chkconfig --list haldaemon haldaemon 0:off 1:off 2:on 3:on 4:on 5:on 6:off
To control the haldaemon service immediately, use the service tool:
# /sbin/servie haldaemon Uage: /etc/init.d/haldaemon {start|stop|status|restart|condrestart}
Start or stop the daemon:
# /sbin/service haldaemon start Starting HAL daemon: [ OK ] # /sbin/service haldaemon stop Stopping HAL daemon: [ OK ]
RPM Package name: hal
e.g. hal-0.5.8.1-38.el5.i386
Once this daemon service(haldaemon) is running, it is available to list devices and their properties with utility “lshal“. For example:
# lshal Dumping 49 device(s) from the Global Device List: ------------------------------------------------- udi = '/org/freedesktop/Hal/devices/pci_8086_2770' info.parent = '/org/freedesktop/Hal/devices/computer' (string) info.udi = '/org/freedesktop/Hal/devices/pci_8086_2770' (string) pci.device_protocol = 0 (0x0) (int) pci.device_subclass = 0 (0x0) (int) pci.device_class = 6 (0x6) (int) info.vendor = 'Intel Corporation' (string) info.product = '82945G/GZ/P/PL Memory Controller Hub' (string) pci.subsys_vendor = 'Dell' (string) pci.product = '82945G/GZ/P/PL Memory Controller Hub' (string) pci.vendor = 'Intel Corporation' (string) pci.subsys_product_id = 429 (0x1ad) (int) pci.subsys_vendor_id = 4136 (0x1028) (int) pci.product_id = 10096 (0x2770) (int) pci.vendor_id = 32902 (0x8086) (int) pci.linux.sysfs_path = '/sys/devices/pci0000:00/0000:00:00.0' (string) linux.sysfs_path_device = '/sys/devices/pci0000:00/0000:00:00.0' (string) linux.sysfs_path = '/sys/devices/pci0000:00/0000:00:00.0' (string) info.bus = 'pci' (string) ... ...
The haldaemon is minimally-configurable using the file:
/etc/hal/hald.conf
It is an XML file. For example:
<?xml version="1.0" encoding="ISO-8859-1"?> <!-- -*- SGML -*- --> <!-- This configuration file controls the Hardware Abstraction Layer daemon - it is meant that OS vendors customize this file to reflect their desired policy. --> <haldconfig> <!-- If true, then the device list is saved to disk such that properties are kept between invocations of hald. --> <persistent_device_list>false</persistent_device_list> <!-- Default value for storage.media_check_enabled for devices of capability storage - this can be overridden by .fdi files. Setting this to false results a whitelist policy, e.g. media check is only enabled for storage devices with a .fdi file saying so. Conversely, setting it to true results in a blacklist policy where media check is enabled by default but may be overridden by a .fdi for devices causing trouble. --> <storage_media_check_enabled>true</storage_media_check_enabled> <!-- Default value for storage.automount_enabled_hint for devices of capability storage - this can be overridden by .fdi files. Setting this to false results a whitelist policy, e.g. policy agents should only automount storage devices with a .fdi file saying so. Conversely, setting it to true results in a blacklist policy where policy agents should always automount unless this is explicitly overridden by .fdi for devices causing trouble. --> <storage_automount_enabled_hint>true</storage_automount_enabled_hint> </haldconfig>