Inter-process communications - Dbus
- A channel for inter-process communication and Remote Procedure Calls.
- It provides for low-level communications between system processes and hardware as well as userspace application-to-application communications.
- A central server (called the bus) must be running before any communication can take place, it also manages the communications.
- Applications can query the bus to determine what is running and can have a service started on demand.
HAL is obsolete - 2013 - replaced, superceded by udev
Hardware Abstraction Layer - HAL
- As of 2009 HAL has been replaced by 'DeviceKit'
- A Hardware Abstraction Layer that is implemented in software and sits between the hardware and the software.
- Its job is to hide differences in hardware from the kernel code. So, within reason, kernel code does not need to be changed to run on systems that have different hardware installed.
- HALs are written in a low level language. They allow code written in higher level languages, such as the kernel, to communicate directly with hardware.
- Hal uses dbus/D_BUS.
/etc/hal `-- fdi |-- information |-- policy | `-- preferences.fdi `-- preprobe
- Device info package - hal-info (obsolete)
A package containing .fdi (device information files) for HAL.
- Application - hal-device-manager (obsolete)
GUI that provides a user interface which shows the information HAL knows about the devices on the system. On Ubuntu desktop this could have been found at Applications->System Tools->Device Manager.
- Centralised policy management - PolicyKit
An application used by HAL to that allows unprivileged processes to speak to privileged processes, in order to grant some user the right to perform some tasks in some situations.
Relies heavily on /proc entries. Mounting will not work if 'procfs' is not mounted on /proc.
- Let the user Hibernate and shutdown the computer.
- Let the user manage (Wireless) connections.
- Let the user mount/eject a removable media (CD/DVD, USB keys...)
- Let the user access devices, like audio, scanner, etc.
By default, PolicyKit allows
- root to do everything
- all users in the 'wheel' group to authenticate for admin tasks using their password