top page > X Window System > here

PC-98 における X.Org 7 系 (導入)


概要

ついにと言うか,やっとと言うか,わが家でも X.Org 7 系が採用された FreeBSD を install しました. X.Org 以外にも HAL 等,いろいろ勝手が変わっているので,それらを紹介いたします.

対象は次のようなものです.

  1. PC-98
  2. FreeBSD/pc98 7.2
  3. X.Org 7.4

目的は次のようなものです.

  1. X.Org 7.4 や HAL に関する情報を提示する.(ただし簡単に.)
  2. PC-98 における X.Org 7.4 の動作状況を提示する.
    (現在,私は PC-98 にて HAL を使って X を動作させることに成功していません.)

(補足) X.Org 7.6 では HAL は「推奨しない」扱いになります. 結局,PC-98 では HAL は使えず仕舞いでした.
Linux では X.Org 7.5 の段階から HAL に代わり udev が使われておりますが,FreeBSD もそうなるのか,PC-98 で動くのか,HAL 同様に使わないという選択肢が用意されているのか等々,気になるところです.


目次

1. X.Org 7 系の変更点
2. FreeBSD/pc98 7.2 と HAL
3. HAL に関する選択肢
4. HAL を利用する方法
5. HAL を利用しない方法
6. 参考資料

1. X.Org 7 系の変更点

先ず FreeBSD 6.2 + X.Org 6.9.0 から FreeBSD 7.2 + X.Org 7.4 への変更点について述べます. 概して X.Org 6 系と 7 系との差異と言えますが,X.Org そのものの変更だけでなく FreeBSD の側の変更も含みます. ユーザーにとって重要と思われる変更点は,機能でなく管理法や使用法でしょう.

管理に関連する部分ですが,以下のように変わりました.

  1. ソース・ファイルの管理法が大きく変更され,プログラムやライブラリーは (ほぼ) 一つごとに一つの tar ball が対応するようになった. それに対応して FreeBSD 側の ports/packages の数が激増した. (変更の反映は容易になりましたが,依存関係の管理は大変でしょう.)
  2. 置き場が /usr/X11R6/ から /usr/local/ に変わった.
    (install の際に /usr/X11R6/ が symbolic link として作られましたが,現在ではそれもなくなりました.)
  3. 文書類 /usr/X11R6/lib/X11/doc/ がなくなった. (VideoBoard98, Japanese/README98 など.)
    (なお,/usr/local/share/X11/doc/ にある文書類はこれらとは別物です.)
  4. キーボード用のデータが /usr/X11R6/lib/X11/xkb/ から /usr/local/share/X11/xkb/ に移った.
  5. xclock, xkbprint, xfd, xlsfonts など,いくつかのプログラムが標準では,すなわち X の導入と同時には install されなくなった. これらは,/usr/ports/x11* にある.

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 を修正することにしております.

2. FreeBSD/pc98 7.2 と HAL

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

設定の工夫などでこのエラーを消せればうれしいのですが,現時点では試みておりません.

3. HAL に関する選択肢

HAL に関しては,先ず以下の二つの選択をしなければなりません.

  1. HAL を利用するか否か.(X.Org の default は「利用を試みる」)
  2. xorg.conf に記述されたキーボードやマウスの設定も使うか否か.(X.Org の default は「使わない」)

HAL を利用しない場合には,キーボードやマウスの設定は xorg.conf にて行なうしかないので,選択肢は三通りになります. bug がなければ,この三通りとも動作するはずです.

各々の場合の選択は,xorg.conf に次のように記して行ないます.
(# 以後はコメントなので,記述する必要はありません. それと True, False は各々 on, off でもかまいません. また,これらの OptionServerLayout 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 の場合は「余儀なくされる選択」) も正しいでしょう.

4. HAL を利用する方法

ここでは 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 は次節に提示するものと同一になります.

5. HAL を利用しない方法

ここでは 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)

6. 参考資料

基本は諸々の 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/*