Наши партнеры








Книги по Linux (с отзывами читателей)

Библиотека сайта rus-linux.net

На главную -> MyLDP -> Электронные книги по ОС Linux
Beyond Linux From Scratch. Version 2011-12-30
Назад 11. Системные утилиты Вперед

Пакет HAL-0.5.14

Знакомимся с пакетом HAL

HAL является слоем аппаратных абстракций, представляющим собой часть программного обеспечения, в котором реализуются представления различных устройств, подключаемых к системе. Кроме этого, в HAL хранятся подробные метаданные для каждой единицы оборудования, а также реализован механизм, позволяющий системе и программам рабочего стола реагировать на изменение конфигурации аппаратных средств и, тем самым реализовывать системную политику.

Самой важной задачей HAL является предоставление в UNIX-подобных настольных системах функций plug-and-play, предназначенных для получения подробного и расширяемого описания характеристик и возможностей устройств. Одним из примеров функциональных возможностей, предоставляемых HAL, является реакция на подключение вами устройства USB, предназначенного для хранения данных. HAL может автоматически создать в /media точку монтирования и смонтировать устройство.

Информация о пакете

  • Загрузка (HTTP): http://hal.freedesktop.org/releases/hal-0.5.14.tar.bz2
  • Контрольная сумма MD5: c627d8fb0f9afff94f3c687b5216bc06
  • Размер загружаемого пакета: 924 KB
  • Оценочный размер требуемого дискового пространства: 25 MB
  • Оценочное время сборки: 0,5 SBU

Дополнительные загрузкие

Зависимости пакета HAL

Обязательные

D-Bus GLib Bindings-0.98

Рекомендуемые

PCI Utilities-3.1.8 (с текущим файлом pci.ids) и usbutils-004 (с текущим файлом usb.ids)

Необязательные (для создания документации)

xmlto-0.0.23

Необязательные

GTK-Doc-1.18, acl-2.2.51, Gperf-3.0.4, PolicyKit-0.9, ConsoleKit-0.4.1, Intltool-0.50.01, Parted-3.0 и libsmbios

Замечания для пользователей: http://wiki.linuxfromscratch.org/blfs/wiki/hal

Установка пакета HAL

Вы должны перед установкой пакета создать специального пользователя и группу. Хотя по умолчанию в инструкциях BLFS демон HAL запускается пользователем в роли root, будет установлен конфигурационный файл, в котором жестко прописано имя специального пользователя. Из-за этого при запуске демона D-BUS будет выдаваться ошибочное сообщение. В роли пользователя root выполните следующие команды:

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

Установите пакет HAL с помощью следующих команд:

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

Чтобы проверить результаты, выполните команду make check.

Теперь в роли пользователя root выполните:

make install

Установите данные об устройствах HAL с помощью следующих команд:

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

Теперь в роли пользователя root выполните:

make install

Пояснение команд

--libexecdir=/usr/lib/hal: Этот параметр указывает, что файлы libexec будут установлены в директории /usr/lib/hal, а не в директории /usr/libexec.

--localstatedir=/var: Этот параметр указывает, что файл pid будет создан в директории /var/run/hald, а не в директории /usr/var/run/hald.

--enable-policy-kit=no: Этот параметр является обязательным, если не установлен пакет PolicyKi. Удалите его, если пакет PolicyKit установлен

--enable-docbook-docs --docdir=/usr/share/doc/hal-0.5.14: Если имеется пакет xmlto-0.0.23, то эти параметры включают сборку документации по спецификациям HAL.

Зависимости времени выполнения

Есть еще несколько пакетов, которые расширяют функциональные возможности HAL в процессе его работы. К ним относятся пакеты Eject-2.1.5 , dmidecode, device-mapper-1.02.67, Cryptsetup-LUKS и pm-utils.

Конфигурирование пакета HAL

Конфигурационные файлы

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

Подробнее о конфигурировании

Разрешение пользователям вызывать методы HAL

Настройка HAL, используемая по умолчанию, позволяет вызывать методы, например, Mount(), только определенным пользователям. Это пользователь root и пользователь, который имеет доступ к активной консоли с помощью pam_console. Если у вас не установлены пакеты Linux-PAM-1.1.5 и pam_console, то с помощью следующих команд создайте группу, членам которой будет разрешено вызывать методы HAL:

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>

 <!-- Пользователям в группе halusers разрешается вызывать методы 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

Теперь в группу halusers добавьте пользователей, которым вы разрешите использовать HAL.

usermod -a -G halusers <имя пользователя>

Заметьте, что этим пользователям по-прежнему необходимо иметь соответствующие разрешения для доступа к устройствам, к которым HAL будет выполнять обращение с помощью имеющихся у него методов.

После того, как приведенная выше конфигурации будет задействована, авторизованные пользователи получат возможность размонтировать разделы диска, смонтированного в нестандартных местах, таких как /pub. Если вы хотите ограничить эту политику только съемными дисками и дисками, поддерживающими горячую замену, то в роли пользователя root добавьте следующий конфигурационный файл:

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

<!-- Не разрешается использовать методы HAL, которые не являются
     съемными и не допускают горячую замену -->

<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

Установка программ, помогающих выполнять монтирование

HAL предоставляет доступ только к тем методам, таким как, Mount(), которые взаимодействуют с аппаратным обеспечением. Чтобы воспользоваться этой возможностью, необходимо установить обработчик событий HAL, например, Ivman.

Изменение параметров монтирования, используемых по умолчанию

В некоторых случаях для файловых систем необходимо указать некоторые параметры монтирования, которые будут использоваться по умолчанию. Например, в неанглийских средах параметры iocharset и codepage необходимы для файловых систем, ведущих свое происхождение от Windows, для того, чтобы можно было правильно отображать национальные символы. Кроме того, в связи с ошибкой в версии ядра Linux в LFS (2.6.22.x), вам может потребоваться передать параметр usefree в файловую систему vfat с тем, чтобы сократить время, необходимое для определения в файловой системе объема имеющегося свободного места.

В результатах поиска Google по запросу "hal default mount options" ("Параметры монтирования hal, используемые по умолчанию") по-прежнему много рекомендаций о том, что нужно создать файлы *.fdi, в которых следует указать либо ключи volume.policy, либо ключи storage.policy. Такие рекомендации работали только с HAL-0.4.x, но теперь они неработоспособны. Предполагается, что для HAL-0.5.14 с параметрами монтирования нужно обращаться следующим образом:

  • Обработчик событий получает из среды рабочего стола описание события для только что подключенного устройства хранения данных
  • Если устройство хранения данных еще не упомянуто в /etc/fstab, параметры монтирования устройства выбираются из базы данных настроек пользователя, которая специально предназначена для среды рабочего стола, а затем эти параметры передаются обратно в HAL. Этот процесс может зависеть от типа файловой системы и, возможно, от других свойств устройства, хранящихся в HAL.
  • Если параметры попадают в список разрешенных параметров, то HAL монтирует том.

Важным моментом описания, приведенного выше, является то, что процедура конфигурирования фокусируется на особенностях, относящихся к рабочему столу. Однако, по состоянию на декабрь 2007 года, только в GNOME пользователю разрешается устанавливать используемые по умолчанию параметры монтирования файловой системы так, как это будет описано в следующем разделе. В KDE параметры монтирования можно устанавливать только для тома хранения данных, а не для файловой системы, что является ошибкой, поскольку, как отмечается в сообщении, "для каждого нового устройства (скажем, устройства USB вашего приятеля), вы не должны сразу его монтировать, сначала нужно изменить параметры, а затем — монтировать устройство". В Xfce, если он собран с поддержкой HAL, поддерживается работа с жестко заданными параметрами монтирования без какой-либо возможности их переопределения, что еще хуже. В KDE и в Xfce, если встроенные параметры монтирования, используемые по умолчанию, не подходят, в файле /etc/fstab нужно указывать каждое возможное съемное устройство хранения данных с указанием нужных параметров, отключив, таким образом, механизм установки, имеющийся в HAL

Чтобы настроить параметры монтирования, используемые по умолчанию, пользователи GNOME должны изменить ключ GConf /system/storage/default_options/[fs_type]/mount_options либо с помощью редактора GConf Editor-2.30.0, либо из командной строки так, как это показано в следующем примере:

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

Подробную информацию смотрите на странице руководства gnome-mount(1).

Добавление разрешенных параметров монтирования

Список параметров монтирования, разрешенных в конфигурации HAL, заданной по умолчанию, находится в файле /usr/share/hal/fdi/policy/10osvendor/20-storage-methods.fdi. Пользователи GNOME и KDE, возможно, захотят использовать параметры, которых нет в этом списке (в примере, приведенном выше, таким параметром является параметр usefree). В этом случае в роли пользователя root создайте файл специальной политики, в котором укажите необходимые параметры монтирования:

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

<!--
Этот файл используется для задания специальных параметров настройки
политики  HAL. По умолчанию настройка политики определяется в файлах,
находящихся в поддиректориях /usr/share/hal/fdi/policy. Настройки,
определяемые пользователем, должны находится в файлах, расположенных
в директории /etc/hal/fdi/policy.
-->

<deviceinfo version="0.2">
  <device>

    <!-- добавлено разрешение монтировать носители, которые мы не можем зарегистрировать,
         например, IDE устройства Zip и устройства работы с гибкими дисками в стиле PC -->
    <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>
        <!-- Сюда вставьте другие параметры -->
      </match>
   </match>

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

      <!-- эти параметры монтирования разрешены для vfat -->
      <match key="volume.fstype" string="vfat">
        <append key="volume.mount.valid_options" type="strlist">usefree</append>
        <!-- Сюда вставьте другие параметры -->
      </match>
    </match>

  </device>
</deviceinfo>
EOF

Загрузочный скрипт

Чтобы при перезагрузке системы автоматически запускать демон hald, установите загрузочный скрипт /etc/rc.d/init.d/haldaemon, который находится в пакете blfs-bootscripts-20111226.

Важно

Если во время установки HAL работает общесистемный демон D-BUS, то перед тем, как делать попытку запуска демона hald, убедитесь, что вы остановили и перезапустили демон D-BUS.

make install-haldaemon

Описание пакета

Установленные программы: 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 и lshal

Установленные библиотеки: libhal.{so,a} и libhal-storage,{so,a}

Установленные директории: /etc/hal, /usr/include/hal, /usr/lib/hal, /usr/share/doc/hal-0.5.14, /usr/share/hal, /var/cache/hald, /var/lib/hal и /var/run/hald

Краткое описание

hal-device

используется для создания, удаления или отображения устройства HAL

hal-disable-polling

можно использовать для отключения и включения режима обнаружения носителей в устройствах, предназначенных для работы со съемными носителями

hal-find-by-capability

выдает уникальные идентификаторы устройств для объектов устройств HAL, имеющих указанные возможности

hal-find-by-property

выдает уникальные идентификаторы устройств для объектов устройств HAL, на котором указанное свойство имеет заданное значение

hal-get-property

поиск на устройстве некоторого свойства

hal-set-property

попытки задать для устройства некоторое свойство. Отметим, что по соображениям безопасности, свойство, возможно, задать не удастся

hal-is-caller-locked-out

определяет, будет ли заблокировано конкретное обращение через конкретный интерфейс D-Bus к конкретному устройству

hald

является программой-демоном HAL

lshal

показывает все устройства и их свойства. Если задан параметр --monitor, то в списке устройств указываются все устройства, за изменением которых осуществляется мониторинг

libhal.{so,a}

содержит функции API, необходимые программам HAL

libhal-storage.{so,a}

содержит функции API, необходимые программам HAL, работающими с устройствами хранения данных и с томами

Перевод сделан с варианта оригинала, датированного 2011-11-08 16:57:34 +0000


Предыдущий раздел: Оглавление Следующий раздел:
Группа пакетов D-Bus Bindings   Версия Udev, установленная в LFS