top page > X Window System > here

PC-98 における X.Org 7 系 (補記)


概要

ここでは X.Org on PC-98 (1) に書ききれなかった雑多な話題を取り扱います.

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

  1. PC-98 および AT 互換機
  2. X.Org 7.4, 7.5, 7.7  (X.Org 6 系と共通する内容もあります.)

目次

1. Module の Load
2. backing store
3. log の残し方
4. Server Terminate
5. EXA
6. Modeline
7. FontPath
8. その他の tips

1. Module の Load

Module は,/usr/local/lib/xorg/modules/extensions/ にあるものすべてが default で Load されるようになりました.[1] 逆に Load するものを抑制したいところです. それは

   Disable  "dbe"
   Disable  "glx"
   Disable  "record"
   Disable  "dri"
   Disable  "dri2"

と指定すればできるので,機会があれば試したいところです.

→ 試してみたところ,log はこうなりました. dbe の部分だけ引用しますが,他も同様です.

(WW) "dbe" will not be loaded unless you've specified it to be loaded elsewhere.
(II) "dbe" will be loaded even though the default is to disable it.

Load されているか否かに関して,これらは矛盾していて悩ましいのですが,Load はされておりません.
とはいえ,top で見た XorgSIZERES もたいして小さくなりません. (RAM の少ない PC のためには X をスリム化したいのですが.)

[1] xaa のように default で Load されないものは /usr/local/lib/xorg/modules/ に置かれます.

2. backing store

backing store ですが,いつの間にか man Xserver+bs がなくなり,-bs だけになりました. しかし,default が off であることは変わっていません. on にするには,次のように起動します.

% startx -- +bs

または,/usr/X11R6/bin/startx を書き換え,次の箇所を追加します.

serverargs="+bs"    ← defaultserverargs ではダメ.

現在の backing store の状況を確認するには,次のようにします.

% xdpyinfo | grep backing
  options:    backing-store YES, save-unders NO

注意すべきは,上記のように設定しても log には次のように出力がされることです.

(==) TRIDENT(0): Backing store disabled
(==) MGA(0): Backing store disabled

行頭の (==) は "default setting" ですが,これが出力される時点では未だ上記の設定が効いていません. xdpyinfo の結果の方が正です.

3. log の残し方

X Window System は,次のようにして詳しい log をファイルに残すことができます.

% startx -- -verbose 1 >& file

また,同様の内容はファイル

/var/log/Xorg.0.log

にも残されています.

PC の reset や電源 off を余儀なくされる場合,log の内容の一部またはすべてが失われることもあります. そのような場合,xorg.conf に以下の一行を加えて下さい. /var/log/Xorg.0.log の内容が残る可能性が増します.

Section "ServerFlags"
   Option "Log" "sync"
EndSection

動作に問題がある場合には先ず log を点検して下さい. 試行錯誤する場合には,これらを残しておいて比較検討して下さい.

人に質問する場合には,xorg.conf と log がないと話にならない場合が多いです.

4. Server Terminate

[Ctrl] + [Grph] + [BS] により X server を終了させたい場合,xorg.conf に以下の一行を追加する必要があります.
(Section "ServerFlags" がなければ,三行すべてを追加する.)

Section "ServerFlags"
   Option   "DontZap"  "off"
EndSection

さらに,/usr/local/share/X11/xkb/compat/pc98 を以下のように変更する必要があります.
(AT 互換機では,このような変更は不要です.)

--- pc98.org    2009-04-15 00:57:44.000000000 +0900
+++ pc98        2010-06-22 22:08:54.000000000 +0900
@@ -11,7 +11,7 @@
 // automatic updating of common keyboard LEDs.

 default xkb_compatibility "basic"  {
-    virtual_modifiers NumLock,AltGr;
+    virtual_modifiers NumLock,AltGr,Alt;

     interpret.repeat= False;
     setMods.clearLocks= True;
@@ -41,6 +41,20 @@
        action= SetMods(modifiers=modMapMods);
     };

+    interpret Alt_L+Any     {
+        //useModMapMods= level1;
+        virtualModifier= Alt;
+        action = SetMods(modifiers=modMapMods);
+    };
+
+    interpret Alt_L     {
+        action = SetMods(modifiers=Alt);
+    };
+
+    interpret Terminate_Server {
+        action = Terminate();
+    };
+
     group 2 = AltGr;
     group 3 = AltGr;
     group 4 = AltGr;

また,X.Org 7.4 の場合には /usr/local/share/X11/xkb/symbols/nec_vndr/jp に以下の変更が必要です.
(AT 互換機では,このような変更は不要です.)

--- jp.org      2009-04-15 00:57:55.000000000 +0900
+++ jp          2010-06-22 22:50:58.000000000 +0900
@@ -45,7 +45,10 @@
     key <AE11> { [ minus, equal                ], [ kana_HO            ]      };
     key <AE12> { [ asciicircum,        quoteleft ], [ kana_HE          ]      };
     key <BKSL> { [ backslash, bar      ], [ prolongedsound     ]       };
-    key <BKSP> { [ BackSpace           ]       };
+    key <BKSP> {
+        type="CTRL+ALT",
+        symbols[Group1]= [ BackSpace,   Terminate_Server ]
+    };

     key  <TAB> { [ Tab,        ISO_Left_Tab    ]       };
     key <AD01> { [ q, Q                ], [ kana_TA            ]       };

一方,X.Org 7.5 の場合にはその代りに xorg.conf に次の一行を追加します. (これは AT 互換機でも必要です.)

Section "InputDevice"
   Identifier "Keyboard1"     ← 数字はこれに合わせる必要はない.
   Option   "XkbOptions"  "terminate:ctrl_alt_bksp"
EndSection

5. EXA

描画の加速法は,従来は XAA (XFree86 Acceleration Architecture) だけでしたが EXA (EXcellent Architecture) が加わりました. 後者を選ぶには xorg.conf にて次のように記述します.

Section "Device"
   Option   "AccelMethod"  "EXA"
EndSection

ただし,うちの PC-98 + mga2064w および AT 互換機 + mgag200 では動作しませんでした.
また,trident, cirrus の driver の man page にはこの Option の記述がありません.

ソースを見ると,*_exa.c は mga は当然として trident にもありますが,cirrus にはありません.

[1] man page は,各々の driver のそれ以外にも以下の項目を参照して下さい.

% man exa
% man xorg.conf

[2] 以下の文書は X.Org 6 系に添付されています.

/usr/X11R6/lib/X11/doc/exa-driver.txt

6. Modeline

以下に引用するように,xorg.confModeline を記述する必要がなくなりました.

% man xorg.conf
(中略)
       ModeLine  "name" mode-description
(中略)
              In  most  cases
              this  isn't  necessary because the built-in set of VESA standard
              modes will be sufficient.

ここで,xorg.conf に次のように記述したとします. (以下の引用は,あちこち省いています.)

Section "Monitor"
   Identifier  ""EIZO FlexScan S1721"
   HorizSync    24.8-80.0
   VertRefresh  50.0-75.0

# fH=80.0,fV=75.0
   ModeLine "1280x1024" 135.0  1280 1296 1440 1688 1024 1025 1028 1066
EndSection

Section "Screen"
   Identifier "Screen 1"

   DefaultDepth 16

   SubSection "Display"
      Depth       16
      Modes       "1280x1024"
      ViewPort    0 0
   EndSubsection
EndSection

この場合,log は次のようになります. このモニターに適合する VESA standard modes は "1280x1024" については二つあり,これらから自動的に選択されます. (* が付いている方が選ばれたもの.)

(II) MGA(0): Supported VESA Video Modes:
(中略)
(**) MGA(0): *Driver mode "1280x1024": 108.0 MHz, 64.0 kHz, 60.0 Hz
(II) MGA(0): Modeline "1280x1024"x60.0  108.00  1280 1328 1440 1688  1024 1025 1028 1066 +hsync +vsync (64.0 kHz)

(**) MGA(0):  Driver mode "1280x1024": 135.0 MHz, 80.0 kHz, 75.0 Hz
(II) MGA(0): Modeline "1280x1024"x75.0  135.00  1280 1296 1440 1688  1024 1025 1028 1066 +hsync +vsync (80.0 kHz)

xorg.confModeline に記述した "1280x1024" は,その名前が標準のそれと同じであるためか無視されています.

xorg.confModeline の方を使いたければ,次のように標準のものとは重複しない名前を記述します. (この例では VESA standard modes の後者の方を選択したいので,パラメーターはそれと同一です. 自動的に行なわれる選択を制御する方法も備わっているような気がしますが.)

Section "Monitor"
   ModeLine "1280x1024H" 135.0  1280 1296 1440 1688 1024 1025 1028 1066
EndSection

Section "Screen"
      Modes       "1280x1024H"
EndSection

こうした場合,log は次のようになります.

(**) MGA(0): *Mode "1280x1024H": 135.0 MHz, 80.0 kHz, 75.0 Hz
(II) MGA(0): Modeline "1280x1024H"x75.0  135.00  1280 1296 1440 1688  1024 1025 1028 1066 (80.0 kHz)

(注 1) この Modeline に記述する数値には,ある決まりがあります. (XFree86 3 系の頃まではそれを記した文書が添付されていたのですが,今はそれに相当するものが見当たりません.) ですから,ここの数値は log の候補の中から引用するのが無難でしょう.
  これらはまた gtf を用いて求めることもできます. log の候補に不満ならばお試し下さい.

% gtf 1280 1024 75

  # 1280x1024 @ 75.00 Hz (GTF) hsync: 80.17 kHz; pclk: 138.54 MHz
  Modeline "1280x1024_75.00"  138.54  1280 1368 1504 1728  1024 1025 1028 1069  -HSync +Vsync

(注 2) AT 互換機にて vesa driver を使う場合,上記の技巧は以下のように拒絶され,Modeline は必ず候補の中から選択されます.

(II) VESA(0): Not using mode "1280x1024H" (no mode of this name)

7. FontPath

log の FontPath の部分を見ると,以下のように xorg.conf で設定していないものが勝手に追加されています.

(**) FontPath set to:
        /usr/X11R6/lib/X11/fonts/misc/,       ← ここから 5 行が xorg.conf で設定したもの.
        /usr/X11R6/lib/X11/fonts/75dpi/:unscaled,
        /usr/X11R6/lib/X11/fonts/100dpi/:unscaled,
        /usr/X11R6/lib/X11/fonts/75dpi/,
        /usr/X11R6/lib/X11/fonts/100dpi/,
        /usr/local/lib/X11/fonts/misc/,       ← 以後は自動的に設定されたもの.
        /usr/local/lib/X11/fonts/TTF/,
        /usr/local/lib/X11/fonts/OTF,
        /usr/local/lib/X11/fonts/Type1/,
        /usr/local/lib/X11/fonts/100dpi/,
        /usr/local/lib/X11/fonts/75dpi/,
        built-ins

man xorg.conf によれば,「xorg.confFontPath の記述がなければ,"compiled-in defalt font path" を使う」とのことですが,上に示したようにそのような動作にはなっておりません.

ports/x11-servers/xorg-server にて以下のように修正して X server を make すればマニュアル通りの動作になります.

--- hw/xfree86/common/xf86Config.c.orig 2010-05-04 09:47:58.000000000 +0900
+++ hw/xfree86/common/xf86Config.c      2011-05-05 21:23:01.000000000 +0900
@@ -976,7 +976,7 @@
 #endif
     XkbSetRulesDflts(&set);

-    xf86Info.useDefaultFontPath = TRUE;
+    xf86Info.useDefaultFontPath = FALSE;
     xf86Info.useDefaultFontPathFrom = X_DEFAULT;
     if (xf86GetOptValBool(FlagOptions, FLAG_USE_DEFAULT_FONT_PATH, &value)) {
        xf86Info.useDefaultFontPath = value;

ともあれ,X server の使う資源は 1, 2 MB 程度しか減らず,この修正は気分の問題に過ぎないようです.

ただし,TTF や OTF のフォントを X を通じない形で直接使い,その (symbolic link も含む) 置き場として /usr/X11R6/lib/X11/fonts/ を使っている困ったプログラムがあるので,この部分はユーザーの意図通りに設定できるようにしておくべきと考えます.

xorg.confSection "ServerFlags" にて以下のように設定すれば,ソースの修正は必要ありません.

   Option   "UseDefaultFontPath"  "off"

上記の xf86Config.c の修正は,この Option の default を変えていたのでした. man xorg.conf の記述では off こそが default なので,修正の内容自体は正しいです. ともあれ,こちらの対策の方が手間がかからないという優位性があります.

8. その他の tips

X.Org 7.3 までは X Server の起動時に,何も指定しなければ黒地に白の斜めの網目模様が現われました. X.Org 7.4 以降はそれが現われずに真っ黒になります. 以前のような網目模様を表示させるには,次のように起動します.

% startx -- -retro

同じことは ~/.xinit を利用して xsetroot を動かしても実現できます.