概要
ついにと言うか,やっとと言うか,わが家でも X.Org 7 系が採用された FreeBSD を install しました. X.Org 以外にも HAL 等,いろいろ勝手が変わっているので,それらを紹介いたします.
概要
ついにと言うか,やっとと言うか,わが家でも X.Org 7 系が採用された FreeBSD を install しました. X.Org 以外にも HAL 等,いろいろ勝手が変わっているので,それらを紹介いたします.
対象は次のようなものです.
目的は次のようなものです.
(補足) X.Org 7.6 では HAL は「推奨しない」扱いになります.
結局,PC-98 では HAL は使えず仕舞いでした.
Linux では X.Org 7.5 の段階から HAL に代わり udev が使われておりますが,FreeBSD もそうなるのか,PC-98 で動くのか,HAL 同様に使わないという選択肢が用意されているのか等々,気になるところです.
目次
先ず FreeBSD 6.2 + X.Org 6.9.0 から FreeBSD 7.2 + X.Org 7.4 への変更点について述べます. 概して X.Org 6 系と 7 系との差異と言えますが,X.Org そのものの変更だけでなく FreeBSD の側の変更も含みます. ユーザーにとって重要と思われる変更点は,機能でなく管理法や使用法でしょう.
管理に関連する部分ですが,以下のように変わりました.
PC-98 ユーザーにとって重要なのは,mga, trident, cirrus などの driver が標準では install されないことです. これらは必要に応じて,各々以下のところで make, make install して下さい.
/usr/ports/x11-drivers/xf86-video-cirrus/ /usr/ports/x11-drivers/xf86-video-mga/ /usr/ports/x11-drivers/xf86-video-trident/
ただし,cirrus は現在 PC-98 に対応しておりません. X on FreeBSD (3) にて配布している patch を用いて修正して下さい.
使用法の変更点ですが,HAL に関しては次節以降に述べます.
xorg.conf は,以下の箇所を修正する必要があります. (HAL の関連を除く)
Section "Files"
RgbPath "/usr/X11R6/lib/X11/rgb" ← これはもう存在しないので削除します.
EndSection
Section "Module"
Load "freetype" ← これももう存在しないので削除します.
EndSection
Section "InputDevice" Identifier "Keyboard1" Driver "kbd" ← "keyboard" でも可です. Option "XkbRules" "xorg" Option "XkbModel" "pc98" Option "XkbLayout" "nec_vndr/jp" ← nec から変更が必要です. EndSection
(注) PC-98 の場合には
# Xorg -configure
にて作成される /root/xorg.conf.new は随所に適切でない個所があり,修正する必要があります. 私はこのやり方ではなく,昔から使い続けてきた xorg.conf を修正することにしております.
FreeBSD/pc98 7.2 から,X Window System のキーボードとマウスは HAL (Hardware Abstruct Layer) を介して取り扱えるようになりました. X Window System と HAL との関連は次節で述べます.
HAL を使うためには (その daemon を起動するためには),/etc/rc.conf に以下の 2 行を加えます.
(この順序も重要らしいです.)
dbus_enable="YES" ← これは HAL ではなく,それに使われているものです.
hald_enable="YES"
ところが,そうすると console に以下のようなエラー・メッセージが延々と出続けます.
acd0: FAILURE - unknown CMD (0x03) ILLEGAL REQUEST asc=0x20 ascq=0x00
acd0 は CD-ROM drive です. (うちではこれは標準のものから換装していません.) PC-9821Rv20 は以下の通り.
acd0: CDROM <NEC PD-1 ODX652P/A104> at ata1-master PIO0
また PC-9821Ra20 は以下の通り.
acd0: CDROM <MATSHITA CR-583/1.06> at ata1-master PIO3
設定の工夫などでこのエラーを消せればうれしいのですが,現時点では試みておりません.
HAL に関しては,先ず以下の二つの選択をしなければなりません.
HAL を利用しない場合には,キーボードやマウスの設定は xorg.conf にて行なうしかないので,選択肢は三通りになります. bug がなければ,この三通りとも動作するはずです.
各々の場合の選択は,xorg.conf に次のように記して行ないます.
(# 以後はコメントなので,記述する必要はありません.
それと True, False は各々 on, off でもかまいません.
また,これらの Option は ServerLayout section に書いてもかまいません.)
(1) HAL の利用を試みる + キーボード,マウスの設定に xorg.conf を使わない (default)
Section "ServerFlags" # Option "AutoAddDevices" "True" ← default が True である. # Option "AutoEnableDevices" "True" ← default が True である. # Option "AllowEmptyInput" "True" ← 上の設定により,ここは自動的に True になる. EndSection
(2) HAL の利用を試みる + キーボード,マウスの設定に xorg.conf を使う
Section "ServerFlags" # Option "AutoAddDevices" "True" ← default が True である. # Option "AutoEnableDevices" "True" ← default が True である. Option "AllowEmptyInput" "False" EndSection
(3) HAL を利用しない
Section "ServerFlags" Option "AutoAddDevices" "False" Option "AutoEnableDevices" "False" # Option "AllowEmptyInput" "False" ← 上の設定により,ここは自動的に False になる. EndSection
以後,これらを「設定 (1), (2), (3)」と呼称することにします.
種々の参考資料に示された例はどの場合に相当するのかを判別し,また自分がどの場合に設定しようとしているのかを意識しておかないと,試行錯誤や質問の過程で無用の混乱に陥る可能性があります.
説明が多少重複しますが,以下に間違えやすいと思われる点を列挙します.
そもそも,HAL を使うか否かで,X Window System やそれ以外のところでどのような得失があるのか,まだ把握できておりません. 今後,もっと情報が充実してくると良いですね.
→ 少なくとも Hot Plug (活線挿抜) を担っているようです. それだけならば,キーボードやマウスを抜き挿ししない PC では HAL を使わないという選択 (PC-98 の場合は「余儀なくされる選択」) も正しいでしょう.
ここでは hald は起動しているものとします.
先ず,設定 (1) により HAL を利用する方法について述べます.
(これは,うちの PC-98 ではうまく行っておりません.)
この場合には,キーボードやマウスの設定 xorg.conf に記述しても無視されます.
キーボードは /usr/local/etc/hal/fdi/policy/x11-input.fdi を作成してそこに記述します.
<?xml version="1.0" encoding="ISO-8859-1"?> <deviceinfo version="0.2"> <device> <match key="info.capabilities" contains="input.keyboard"> <merge key="input.x11_options.XkbRules" type="string">xorg</merge> <merge key="input.x11_options.XkbModel" type="string">pc98</merge> <merge key="input.x11_options.XkbLayout" type="string">nec_vndr/jp</merge> </match> </device> </deviceinfo>
マウスは /usr/local/etc/hal/fdi/policy/mouse-sysmouse.fdi を作成してそこに記述します.
<?xml version="1.0" encoding="ISO-8859-1"?> <deviceinfo version="0.2"> <device> <match key="info.capabilities" contains="input.mouse"> <merge key="input.x11_options.Protocol" type="string">BusMouse</merge> <merge key="input.x11_options.Device" type="string">/dev/mse0</merge> <merge key="input.x11_options.Emulate3Buttons" type="string"></merge> </match> </device> </deviceinfo>
結局,これらの設定ではキーボードもマウスも効きません. AT 互換機ではうまく行っていることを考えると,これは PC-98 における HAL の動作の問題のように思います.
X Window System の log には,次のように出力されます.
(**) |-->Input Device "Mouse1" (**) |-->Input Device "Keyboard1" (==) Automatically adding devices (==) Automatically enabling devices (中略) (WW) AllowEmptyInput is on, devices using drivers 'kbd', 'mouse' or 'vmmouse' will be disabled. (WW) Disabling Mouse1 (WW) Disabling Keyboard1
HAL がうまく機能している場合にされるべき出力はされません.
設定 (2) ですが,問題なく動作しています. log は次節に提示するものと同一になります.
ここでは hald は起動していないものとします.
設定 (3) は当然として,対比のために設定 (2) も試しました.
どちらの場合でも,xorg.conf に記述したキーボードとマウスに関する以下の内容が反映されます.
Section "InputDevice" Identifier "Keyboard1" Driver "kbd" Option "XkbRules" "xorg" Option "XkbModel" "pc98" Option "XkbLayout" "nec_vndr/jp" EndSection Section "InputDevice" Identifier "Mouse1" Driver "mouse" Option "Protocol" "BusMouse" Option "Device" "/dev/mse0" Option "Emulate3Buttons" EndSection
X Window System の log には,次のように出力されます. 設定 (3) では,
(**) Not automatically adding devices (**) Not automatically enabling devices
一方,設定 (2) では,
(==) Automatically adding devices (==) Automatically enabling devices
また,その後は設定 (3), (2) 共に次のように出力されます. 引用はしませんが,xorg.conf にて設定した内容も出力されます.
(II) Loading /usr/local/lib/xorg/modules/input//mouse_drv.so (II) Module mouse: vendor="X.Org Foundation" compiled for 1.6.0, module version = 1.4.0 (II) Loading /usr/local/lib/xorg/modules/input//kbd_drv.so (II) Module kbd: vendor="X.Org Foundation" compiled for 1.6.0, module version = 1.3.2 (中略) (II) XINPUT: Adding extended input device "Mouse1" (type: MOUSE) (中略) (II) XINPUT: Adding extended input device "Keyboard1" (type: KEYBOARD)
基本は諸々の man page です.
% man xorg.conf % man Xserver
% man mga % man trident % man cirrus
% man kbd ← xf86-input-keyboard % man mousedrv ← xf86-input-mouse
HAL 関連の以下の資料はあまり参考になりませんでしたが,そのうち精読する必要が生じるかも.
% man hald % man dbus-daemon
以下のファイルの冒頭のコメント.
/usr/local/etc/rc.d/dbus および hald
以下のファイル.
/usr/local/share/doc/hal-0.5.11/README.freebsd /usr/local/share/hal/fdi/policy/10osvendor/*