HAL-0.5.14

Introduction à HAL

HAL est une couche d'abstraction matérielle qui est un bout de logiciel offrant une visualisation de divers matériels attachés à un système. En outre, HAL contient des métadonnées détaillées pour chaque bout de matériel et il fournit des prises sur lesquelles peuvent s'appuyer des logiciels systèmes et de bureau pour réagir aux changements de la configuration matériellelle afin de maintenir l'ordre du système.

L'objectif le plus important de HAL est de fournir des possibilités de plug-and-play pour les bureaux de type UNIX, en cherchant surtout à offrir une description riche et extensible des caractéristiques et de fonctionnalités de périphériques. Un exemple de la fonctionnalité offerte par HAL est quand vous branchez un périphérique de stockage USB. HAL peut créer automatiquement un point de montage dans /media et monter le périphérique.

Informations sur le paquet

  • Téléchargement (HTTP) : http://hal.freedesktop.org/releases/hal-0.5.14.tar.bz2

  • Somme de contrôle MD5 du téléchargement : c627d8fb0f9afff94f3c687b5216bc06

  • Taille du téléchargement : 924 Kio

  • Estimation de l'espace disque requis : 25 Mio

  • Estimation du temps de construction : 0.5 SBU

Téléchargement d'un paquet supplémentaire

Requises Hardware Data

Dépendances de HAL

Requises

D-Bus GLib Bindings-0.98

Recommandées

Facultatives (to Create Documentation)

xmlto-0.0.23

Facultatives

GTK-Doc-1.18, acl-2.2.51, Gperf-3.0.4, PolicyKit-0.9, ConsoleKit-0.4.1, intltool-0.50.0, Parted-3.0, et libsmbios

Notes utilisateur : http://wiki.linuxfromscratch.org/blfs/wiki/hal

Installation de HAL

Vous devez créer un utilisateur et un groupe dédiés avant d'installer le paquet. Bien que les instructions de BLFS exécutent par défaut le démon HAL en tant qu'utilisateur root, un fichier de configuration est installé avec en dur le nom de l'utilisateur dédié. Cela provoque un messagecurieux lors du démarrage du démon D-BUS. Exécutez les commandes suivantes en tant qu'utilisateur root :

groupadd -fg 19 haldaemon &&
useradd -c "HAL Daemon User" -d /dev/null -u 19 \
        -g haldaemon -s /bin/false haldaemon || [ $? == 9 ]

Installez HAL en lançant les commandes suivantes :

./configure --prefix=/usr \
            --sysconfdir=/etc \
            --libexecdir=/usr/lib/hal \
            --localstatedir=/var \
            --docdir=/usr/share/doc/hal-0.5.14 \
            --enable-policy-kit=no &&
make

Pour tester les résultats, exécutez : make check.

Maintenant, en tant qu'utilisateur root :

make install

Installez les données de matériel HAL avec les commandes suivantes :

tar -xf ../hal-info-20091130.tar.bz2 &&
cd hal-info-20091130 &&
./configure --prefix=/usr --sysconfdir=/etc

Maintenant, en tant qu'utilisateur the root :

make install

Explication des commandes

--libexecdir=/usr/lib/hal : Ce paramètre oblige les fichiers libexec à s'installer dans /usr/lib/hal au lieu de /usr/libexec.

--localstatedir=/var : Ce paramètre oblige le fichier pid à se créer dans /var/run/hald au lieu de /usr/var/run/hald.

--enable-policy-kit=no : Ce paramètre est requis si PolicyKit n'est pas installé.Supprimez-le si PolicyKit est installé.

--enable-docbook-docs --docdir=/usr/share/doc/hal-0.5.14 : Si xmlto-0.0.23 est disponible, ces paramètres permettent la construction de la documentation de la spécification HAL.

Dépendances de Run-Time

Quelques paquets supplémentaires activent plus de fonctionnalités dans HAL pendant l'exécution. Ils incluent Eject-2.1.5, dmidecode, lvm-1.02.67 (device-mapper), Cryptsetup-LUKS, et pm-utils.

Configuration de HAL

Fichiers de configuration

/etc/dbus-1/system.d/hal.conf, /etc/dbus-1/system.d/halusers.conf et /etc/hal/*

Informations de configuration

Allowing users to invoke HAL methods

Le paramétrage par défaut de HAL consiste à n'autoriser que certains utilisateurs à appeler des méthodes telles que Mount(). Il s'agit de l'utilisateur root et de l'utilisateur défini comme étant la console active en utilisant pam_console. Si vous n'êtes pas paramétré pour utiliser Linux-PAM-1.1.5 et pam_console, créez un groupe qui est autorisé à appeler des méthodes HAL avec les commandes suivantes :

groupadd -fg 61 halusers &&
cat > /etc/dbus-1/system.d/halusers.conf << "EOF"
<!DOCTYPE busconfig PUBLIC
 "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
 "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
<busconfig>

 <!-- Permet aux utilisateurs du groupe halusers d'appeler des méthodes HAL -->
 <policy group="halusers">
  <allow send_interface="org.freedesktop.Hal.Device.SystemPowerManagement"/>
  <allow send_interface="org.freedesktop.Hal.Device.LaptopPanel"/>
  <allow send_interface="org.freedesktop.Hal.Device.Volume"/>
  <allow send_interface="org.freedesktop.Hal.Device.Volume.Crypto"/>
 </policy>

</busconfig>
EOF

Maintenant ajoutez au groupe halusers les utilisateurs dont vous aimeriez qu'ils puissent utiliser HAL.

usermod -a -G halusers <username>

Remarquez que ces utilisateurs doivent aussi avoir les droits adéquats pour accéder aux périphériques qu'appellera HAL par ses méthodes.

Quand la configuration ci-dessus est opérationnelle, les utilisateurs autorisés ont la possibilité de démonter des partitions de disque montées à des endroits non standards tels que /pub. Si restreindre cette autorisation aux seuls lecteurs considérés comme amovibles oubranchables à chaud, ajoutez le fichier de configuration suivant en tant qu'utilisateur root :

cat > /etc/hal/fdi/policy/no-fixed-drives.fdi << "EOF"
<?xml version="1.0" encoding="UTF-8"?> <!-- -*- SGML -*- -->

<!-- N'autorise pas de méthodes HAL sur les disques non amovibles ou
     branchables à chaud -->

<deviceinfo version="0.2">
<device>
  <match key="@block.storage_device:storage.hotpluggable" bool="false">
    <match key="@block.storage_device:storage.removable" bool="false">
      <merge key="volume.ignore" type="bool">true</merge>
    </match>
  </match>
</device>
</deviceinfo>
EOF
Installer les assistants de montage

HAL n'offre que des méthodes telles que Mount() pour agir sur le matériel. Pour en tirer bénéfice, vous devriez installer un gestionnaire d'événements HAL tel que Ivman.

Modifier les options de montage par défaut

Dans certains cas, il est nécessaire de spécifier quelques options de montage pour des systèmes de fichiers. Ainsi dans des environnements non anglais, les options iocharset et codepage sont nécessaires pour les systèmes de fichiers d'origine Windows pour afficher correctement les caractères nationaux. De même, du fait d'un bogue dans la version du noyau Linux de LFS (2.6.22.x), il se peut que vous vouliez passer l'option usefree aux systèmes de fichiers vfat afin de réduire le temps nécessaire pour déterminer l'espace disponible sur le système de fichiers.

Une recherche Google de « hal default mount options » donne pleins de recommendations utiles pour créer des fichiers *.fdi mentionnant soit les clés volume.policy soit storage.policy. Ces recommendations ne fonctionnaient que pour HAL-0.4.x et elles sont à présent invalides. Pour For HAL-0.5.14, il est attendu que les options de montage soient gérées comme suit :

  • Un gestionnaire d'événements d'un environnement de bureau reçoit un événement décrivant le périphérique de stockage nouvellement ajouté.

  • Si le périphérique de stockage n'est pas déjà mentionné dans /etc/fstab, les options de montage sont récupérées à partir d'une base de données des préférences de l'utilisateur spécifique à l'environnement de bureau et transmise à HAL. Ce processus peut être modifié par le type de système de fichiers et et éventuellement par d'autres propriétés de volume disponibles sur HAL.

  • Si les options font partie de celles autorisées, HAL monte le volume.

L'élément important ci-dessus est que la procédure de configuration ci-dessus est spécifique au bureau. Cependant, depuis décembre 2007, seul GNOME permet à l'utilisateur de paramétrer des options de montage par défaut sur une base par fichiers, comme décrit au prochain paragraphe. KDE ne permet des options de montage que psur la base des volumes et non des systèmes de fichiers, ce qui est un bogue, car, comme indiqué dans le rapport, « pour tout nouveau périphérique, (disons la clé USB de votre ami), vous devez d'abord ne pas le monter puis modifier les options et ensuite le monter ». Xfce, est compilé avec le support de HAL, hard-codes les options de montage non significatives pour les écraser, ce qui est même pire. Dans KDE et Xfce, si les options de montage intégrées par défaut ne conviennent pas, il faut indiquer tout périphérique de stockage amovible dans /etc/fstab avec les bonnes options, ce qui en général contourne ainsi le problème de HAL.

Pour ajuster les options de montage par défaut, les utilisateurs de GNOME devraient modifier la clé GConf /system/storage/default_options/[fs_type]/mount_options en utilisant soit GConf Editor-2.30.0, soit à partir de la ligne de commande, comme indiqué dans l'exemple suivant :

gconftool-2 --type list --list-type=string \
    --set /system/storage/default_options/vfat/mount_options \
    "[shortname=mixed,uid=,usefree,iocharset=koi8-r,codepage=866]"

Voir plus de détails dans la page de manuel gnome-mount(1).

Ajouter des options de montage autorisées

La liste des options de montage autorisçes dans la configuration de HAP par défaut se trouve dans fichier /usr/share/hal/fdi/policy/10osvendor/20-storage-methods.fdi. Il se peut que les utilisateurs de GNOME et de KDE veuillent utiliser des options hors de cette liste (cela vaut dans l'exemple ci-dessus pour l'option usefree). Dans ce cas, en tant qu'utilisateur root, créez un fichier de règles personnalisé indiquant des options de montage inconnues :

cat > /etc/hal/fdi/policy/user-options.fdi << "EOF"
<?xml version="1.0" encoding="UTF-8"?> <!-- -*- SGML -*- -->

<!--
Ce fichier est utilisé pour paramétrer des options personnalisées pour
les paramètres des règles de HAL
Les règles par défaut sont définies dans les fichiers contenus dans les 
sous-répertoires /usr/share/hal/fdi/policy. Les personnalisations
définies par l'utilisateur devraient se trouver dans les fichiers contenus dans
le répertoire /etc/hal/fdi/policy.
-->

<deviceinfo version="0.2">
  <device>

    <!-- ceci pour pouvoir monter des médias dans des lecteurs fixes, comme
         des lecteurs ZIP IDE et des lecteurs de disquettes de PCs -->
    <match key="storage.media_check_enabled" bool="false">
      <match key="storage.no_partitions_hint" bool="true">
        <append key="volume.mount.valid_options" type="strlist">usefree</append>
        <!-- Insert other options here -->
      </match>
    </match>

    <match key="volume.fsusage" string="filesystem">

      <!-- permettre ces options de montage pour vfat -->
      <match key="volume.fstype" string="vfat">
        <append key="volume.mount.valid_options" type="strlist">usefree</append>
        <!-- Insérez ici d'autres options -->
      </match>
    </match>

  </device>
</deviceinfo>
EOF

Script de démarrage

Pour démarrer automatiquement le démon hald lors du redémarrage du système, installez le script de démarrage /etc/rc.d/init.d/haldaemon à partir du paquet blfs-bootscripts-20111226.

[Important]

Important

Si le démon D-BUS de tout le szstème était en fonction pendant l'installation de HAL, assurez-vous d'arrêter et de redémarrer le démon D-BUS avant d'essayer de démarrer le démon hald.

make install-haldaemon

Contenu

Programmes installés: hal-device, hal-disable-polling, hal-find-by-capability, hal-find-by-property, hal-get-property, hal-is-caller-locked-out, hal-lock, hal-set-property, hald et lshal
Bibliothèques installées: libhal.{so,a} et libhal-storage,{so,a}
Répertoires installés: /etc/hal, /usr/include/hal, /usr/lib/hal, /usr/share/doc/hal-0.5.14, /usr/share/hal, /var/cache/hald, /var/lib/hal, et /var/run/hald

Descriptions courtes

hal-device

est utilisé pour créer, supprimer ou afficher un périphérique HAL.

hal-disable-polling

peut être utilisé pour désactiver et activer la détection de médias sur des lecteurs ayant un stockage amovible.

hal-find-by-capability

affiche les identifieurs de périphérique uniques des objets de périphérique HAL d'une capacité donnée.

hal-find-by-property

affiche les identifieurs de périphérique uniques des objets de périphérique HAL où une propriété donnée suppose une valeur donnée.

hal-get-property

récupère une propriété à partir d'un périphérique.

hal-set-property

essaie de paramétrer les propriétés d'un périphérique. Remarquez que, pour des questions de sécurité, il peut ne pas être possible de réhler une propriété.

hal-is-caller-locked-out

détermine si un appelant spécifique est verrouillé au-delà d'une interface D-Bus spécifique sur un périphérique spécifique.

hald

est le démon HAL.

lshal

affiche tous les périphériques et leurs propriétés. Si vous donnez l'option --monitor, tout changement dans la liste des périphériques et de périphériques est alors surveillé.

libhal.{so,a}

contient les fonctions de l'API exigées par les programmes HAL.

libhal-storage.{so,a}

contient les fonctions de l'API exigées par l'outil de stockage et de volume HAL.

Last updated on 2012-01-20 20:25:30 +0100