Библиотека сайта rus-linux.net
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
Дополнительные загрузкие
- Загрузка (HTTP): http://hal.freedesktop.org/releases/hal-info-20091130.tar.bz2
- Загрузка (FTP):
- Контрольная сумма MD5: 995b8d2dbfb0646b07c92bb8d23cbcf1
- Размер загружаемого пакета: 108 KB
Зависимости пакета HAL
Обязательные
Рекомендуемые
PCI Utilities-3.1.8 (с текущим файлом pci.ids
) и usbutils-004 (с текущим файлом usb.ids
)
Необязательные (для создания документации)
Необязательные
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, то в списке устройств указываются все устройства, за изменением которых осуществляется мониторинг |
| содержит функции API, необходимые программам HAL |
| содержит функции API, необходимые программам HAL, работающими с устройствами хранения данных и с томами |
Перевод сделан с варианта оригинала, датированного 2011-11-08 16:57:34 +0000
Предыдущий раздел: | Оглавление | Следующий раздел: |
Группа пакетов D-Bus Bindings | Версия Udev, установленная в LFS |