X の設定は、/etc/XF86Config という設定ファイルで行っています。 実は、これの書き方さえ知っていれば XF86Setup や xf86config は 使わなくても大丈夫です。 XF86Config の見方と、X のテストの仕方を述べます。 なお、ここの記述は XFree86 3.3.6 を前提に書かれています。
XF86Setup もしくは xf86config で作られた XF86Config はごちゃごちゃといろいろ書いてありますが、 主に次の7つの Section に分かれています。これらについて、サンプルの XF86Config を見ながら説明します。 なお、# で始まる行はコメント行です。
Section "Files" フォントへのパスの指定 Section "ServerFlags" X サーバの特殊な動作を設定 Section "Keyboard" キーボードに関する設定 Section "Pointer" マウスに関する設定 Section "Monitor" モニターに関する設定 Section "Device" グラフィックカード(ビデオカード)に関する設定 Section "Screen" まとめ
Section "Files"
最初の行は、RGB(Red,Green,Blue)、つまり色設定ファイルの指定です。 2行目以降は、フォントへのパスです。 FontPath はもっといっぱいあるかも知れません。
Section "Files" RgbPath "/usr/X11R6/lib/X11/rgb" FontPath "/usr/X11R6/lib/X11/fonts/misc/" FontPath "/usr/X11R6/lib/X11/fonts/75dpi/:unscaled" FontPath "/usr/X11R6/lib/X11/fonts/75dpi/" EndSectionSection "ServerFlags"
ここは空でもよいでしょう。
Section "ServerFlags" EndSectionSection "Keyboard"
上2行はこんなもんです。最後の行は、キーマップの決定で、 この例では us 101 キーボードを使うことを想定しています。 日本語キーボードでは、最後の行を削除して、代わりに
Section "Keyboard" Protocol "Standard" AutoRepeat 500 30 XkbKeymap "xfree86(us)" EndSectionを足しておくとよいでしょう。 Ctl キーが左下にあって使いにくく、 Ctl キーと CapLock キーを交換したい場合は、 Section "Keyboard" と EndSection の間に さらに次の1行を足しておきます。
XkbModel "jp106" XdbLayout "jp"
XkbOptions "ctrl:swapcaps"Section "Pointer"
PS/2 マウスの例です。デバイスは、/dev/psm0 を使います。
Section "Pointer" Protocol "PS/2" Device "/dev/psm0" EndSectionSection "Monitor"
最後のModeline の1行を分割して、 次のように書いてもOKです。
Section "Monitor" Identifier "flexscan" VendorName "EIZO" ModelName "Flex Scan L360" HorizSync 24-61 VertRefresh 50-85 Modeline "1024x768" 65.0 1024 1048 1184 1344 768 771 777 806 EndSection
Section "Monitor" Identifier "flexscan" VendorName "EIZO" ModelName "Flex Scan L360" HorizSync 24-61 VertRefresh 50-85 Mode "1024x768" DotClock 65.0 HTimings 1024 1048 1184 1344 VTimings 768 771 777 806 EndMode EndSectionこれは、EIZO 社の Flex Scan L360 の例です。 最初の Identifier, VendorName, ModelName はいいかげんでいいです。 大事なのは、 HorizSync, VertRefresh, Modeline の3行で、 お使いのモニターに合わせて設定します。 これらのうち、HorizSync と VertRefresh はモニターの 取扱説明書の仕様欄に書いてあると思います (それぞれ、水平走査周波数、垂直走査周波数となってるでしょう)。 Modeline は直接には書いてないと思いますが、 「プリセットタイミング」という表があればそれを使って 計算することができます。 詳しくは、高解像度ディスプレイの 設定をご覧下さい。(高解像度でなくても応用できます)
Section "Device"
これは、nVIDIA 社の RIVA TNT2 の例です。 Identifier,VendorName,BoardName すべていいかげんでOKです。 VideoRam も X が勝手に取得してくれますので、 書かなくても大丈夫です。
Section "Device" Identifier "nVIDIA" VendorName "nVIDIA" BoardName "RIVA TNT2" #VideoRam 32768 EndSectionSection "Screen"
これらをまとめたものが、 XF86Config-sample になります。最後に、まとめです。
Section "Screen" Driver "svga" Device "nVIDIA" Monitor "flexscan" DefaultColorDepth 16 Subsection "Display" Depth 16 Modes "1024x768" ViewPort 0 0 EndSubsection EndSection
- Driver : X サーバの種類を書きます。 ここでは、XF86_SVGA を使っています。
- Device : Section "Device" の Identifier で書いた名前を書きま す
- Monitor : Section "Monitor" の Identifier で書いた名前を書き ます
- DefaultColorDepth : 色の深さ(解像度)の Default 値を指定します。 この例では、2の16乗、つまり65536色が使えるようにしています
- Subsection "Display" : ディスプレイの設定を書きます
- Depth : 色の深さを指定します
- Modes : 画面の解像度を指定します。この例では、 1024 dots × 768 dots を指定しています。
- ViewPort : すみません。よくわかりません。
XF86Config を作ったら、X の起ち上げテストをしてみます。 root で、つぎのようにします。これは、X を起ち上げようとしてみて、その結果を /root/X.out に 出力しています。(*)で始まる行は、うまく行っている事を示しています。 Warning なり Error なりが出ている場合は、 言われていることに沿って修正すればうまくいくでしょう。
# /usr/X11R6/bin/X -probeonly >& /root/X.out トラブルシューティング
例えばうちでは、次のようなエラーが出てました。これは、システムを高いセキュリティーレベルで運用しているせいで 起こるエラーです。対処法は、次の2通りです。
xf86OpenConsole: KDENABIO failed (Operation not permitted)
- /etc/rc.conf の kern_securelevel を 0 にする
- 起動時に xdm を起ち上げる
- http://www.xmission.com/~howardm/Xwoes.html
Linux と大きくでてますが、X 関係なので共通です。 probeonly した結果の読み方や、XF86Config の読み方が書いてあります。 (英語)