FreeBSD Daily Topics

2009年4月15日HAL/DBusを動作させてユーザからシャットダウンやUSBメモリマウントを実現する方法(Gnome / KDE両対応)

tips

How to use HAL/DBus

最近のGUIアプリケーションはハードウェアの扱いにHAL/Dbusを経由するようにかわってきています。統合ウィンドウ環境からGUI操作でPCのシャットダウン、リブート、USBデバイスのマウスなどの各種操作を実施するには、HALとDBusがシステムで正しく動作している必要があります。本稿ではこれらデーモンを適切に動作させる方法を紹介します。

まず、HALやDBusなどのサービスを起動するための設定を/etc/rc.confに追加します。次の設定を参考にしてください。

HALやDBusを有効にする設定 /etc/rc.conf - Gnome用(GDMも起動)
gnome_enable="YES"
HALやDBusを有効にする設定 /etc/rc.conf - 個別にすべて指定した場合
dbus_enable="YES"
hald_enable="YES"
avahi_daemon_enable="YES"
avahi_dnsconfd_enable="YES"
gdm_enable="YES"
HALやDBusを有効にする設定 /etc/rc.conf - KDE用
dbus_enable="YES"
hald_enable="YES"

Gnomeを使っている場合には、最初の設定を追加しておけば大丈夫です。関連のサービス(hald, dbus, gdm, avahi)がすべて起動します。KDEを使っている場合は最後の設定を追加します。Gnomeを使いつつ、GDMは使いたくないとか個別に設定する場合には2つめの設定を使います。どの設定をするにせよ、haldとdbusは確実に起動させるようにしてください。

HALではユーザのオーサライズにPolicyKitを使いますが、PolicyKitは動作にプロセスファイルシステムを要求します。このため、次の行を/etc/fstabに追加してプロセスファイルシステムをマウントするようにしておく必要があります。プロセスファイルシステムがマウントされていないと、halやdbusは機能しているにもかかわらず、USBデバイスの検出やマウント、シャットダウンやリブートといった操作ができない状態になります。

プロセスファイルシステムをマウントするように/etc/fstabに追加する設定
proc			/proc		procfs	rw		0	
0

GDM経由でログインしている場合には必要がありませんが、KDEを使っている場合や、Gnomeを使っている場合でもGDMを経由せずにログインして使っている場合には、HAL経由でボリュームのマウントができるように/usr/local/etc/PolicyKit/PolicyKit.confファイルに次の設定を追加しておく必要があります。設定はconfig要素の内部に含めるようにしてください。⁠ここに自分のユーザ名」は適宜許可するユーザ名に置き換えてください。GDM経由で使っている場合はこの設定を同じ処理をGDMが実施してくれます。

GDM経由でログインしていない場合には/usr/local/etc/PolicyKit/PolicyKit.confにこの設定を追加する必要がある
<match action="org.freedesktop.hal.storage.mount-removable">
  <match user="ここに自分のユーザ名">
    <return result="yes"/>
  </match>
</match>

デフォルトの設定では、rootユーザにはすべての操作が許可されており、wheelグループに所属しているユーザには自身のパスワードのもとで管理タスクが許可されています。一般ユーザで各種管理操作を実施したい場合はwheelグループに所属させるか、PolicyKitの設定を変更することになります。

このあたりの設定や、ユーザにどの権限が許可されているのかの確認、/etc/fstabに記載されシステム起動時から固定されているデバイスのマウントやアンマウントの許可などのについてはFreeBSD GNOME Project: Hardware Abstraction Layer (HAL) FAQに詳しい説明がまとまっています。

おすすめ記事

記事・ニュース一覧