概要
ここでは X.Org on PC-98 (1) に書ききれなかった雑多な話題を取り扱います.
概要
ここでは X.Org on PC-98 (1) に書ききれなかった雑多な話題を取り扱います.
対象は次のようなものです.
目次
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 で見た Xorg の SIZE も RES もたいして小さくなりません.
(RAM の少ない PC のためには X をスリム化したいのですが.)
[1] xaa のように default で Load されないものは /usr/local/lib/xorg/modules/ に置かれます.
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 の結果の方が正です.
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 がないと話にならない場合が多いです.
[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
描画の加速法は,従来は 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
以下に引用するように,xorg.conf に Modeline を記述する必要がなくなりました.
% 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.conf の Modeline に記述した "1280x1024" は,その名前が標準のそれと同じであるためか無視されています.
xorg.conf の Modeline の方を使いたければ,次のように標準のものとは重複しない名前を記述します. (この例では 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)
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.conf に FontPath の記述がなければ,"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.conf の Section "ServerFlags" にて以下のように設定すれば,ソースの修正は必要ありません.
Option "UseDefaultFontPath" "off"
上記の xf86Config.c の修正は,この Option の default を変えていたのでした. man xorg.conf の記述では off こそが default なので,修正の内容自体は正しいです. ともあれ,こちらの対策の方が手間がかからないという優位性があります.
X.Org 7.3 までは X Server の起動時に,何も指定しなければ黒地に白の斜めの網目模様が現われました. X.Org 7.4 以降はそれが現われずに真っ黒になります. 以前のような網目模様を表示させるには,次のように起動します.
% startx -- -retro
同じことは ~/.xinit を利用して xsetroot を動かしても実現できます.