自分のマウス、キーボード、モニタ、ビデオカードが使えるよう
XFree86 を正確に設定する -
かつてこれは、複雑な設定ファイルの大量の手ハックを必要とする、
まるで黒魔術のたぐいだったのです。もうこんなことはたくさん。
最近のリリースでは設定作業は取るに足らないものになっています。
カードの種類ごとに別々のサーバを用意する必要もなくなって共通のサーバか
らモジュールをロードするだけになり、作業は簡単になりました。
設定するためにやることは、
XF86Setup
プログラムを立ち上げる、これだけです。
いまどきの新品の PC は、
少なくとも EGA/VGA 以上の解像度を扱えるモニタと一緒に出荷されていますが、
XF86Setup
プログラムはこれを前提とした作りになっています。
まず VGA16 サーバを起動し、(ちまたの PC のビデオ仕様の)
最大公倍数である 640x480 モードで X を立ち上げ、
それから 5 つの設定パネル - マウス、キーボード、ビデオカード、モニタ、
その他いろんなサーバのオプション設定 -
に入ってゆける対話的なプログラムを走らせます。
このへんの段取り全体、とても楽ちんにできています。
(Red Hat Linux の場合は、Xconfigurator
というまた別のプログラムで、
より簡単便利な設定が可能です。
XF86Setup
そっくりの働きをしますが、XF86Setup と違って、
X のインターフェースや VGA16 サーバなしでも動きます)
(訳注: TurboLinux にも独自の X 設定ユーティリティがあります。 これらについては、 それぞれのディストリビューションに附属のマニュアルをお読みください)
(訳注: また、xf86config
という設定プログラムもあります。
これは古くからあるテキスト画面主体のもので、
今となっては操作性は劣りますが、かえって便利に使える状況もありますので、
XF86Setup
の利用が困難なマシンのユーザや、
パワーユーザを目する人は、頭の隅に入れておくとよいでしょう。)
細かい注意すべき点ですが、いまどきの PC を使っている大多数の人 にとっては、そのキーボードはデフォルトの `Generic 101-key PC' ではなく、 XF86Setup が `Generic 102-key PC (intl)' と呼んでいるところのものなのです。 デフォルト (101) を選んだ場合、キーボードの右端の一群のキー (テンキーなど)は働かなくなります。
(訳注: 日本で購入した PC の場合は、 「いまどき」は日本語 109 キーボードが付いてくるでしょう。 日本語 106 キーボードを選んでやれば大丈夫です。
XF86Setup
をお使いの場合は、メニューから選択するだけです。
XF86Config
を直接エディタで編集するなら、
Section "Keyboard"
Protocol "Standard"
XkbRules "xfree86"
XkbModel "jp106"
XkbLayout "jp"
XkbVariant "jp106"
XkbKeymap "xfree86(jp106)"
EndSection
で良いはずです。XkbOptions
は
引数を空白にしておいてもエラーになるようなので、
コメントアウトまたは削除します)
モニタの機種がよくわからない場合は、リストアップされているものを 順々に試してみましょう。上のものから下に向かってやっていきましょう (上にある選択肢ほど低いドット・クロック・スピードなので、 ハードウェアの違いに依存しにくいのです)。 どんどん下へと選んでいって、画面がぐちゃぐちゃとか、 ひどく歪んだ画になってしまったら、そこで戻りましょう。 些細な歪み(画がちょっとだけ大きすぎるとか、ちょっと小さいとか、 すこし中央からずれているなど)なら問題ありません; このへんは、後でモードを微調整すればすぐに直せます。
そして、プログラムは xvidtune
を起動してくれます。
あなたがビデオモードを自由にひねくりまわせるように。
最初に警告画面が出ます。でも、そんなに神経質にならないでください。
いまどきのマルチシンク・モニタは、この手のことをしても、
(昔の固定周波数のやつとは違って)そう簡単には壊れません。
XF86Config は、お使いのマウスのデバイスファイルが
/dev/mouse であると仮定します。これで動かない場合は、
/dev/mouse を、/dev/ca[01] など、実際にマウ
スがつながっているデバイスファイルにリンクしなければいけません。
gpm
が走っているときに XFree86 が"mouse busy" というエラーを
返してきたら、代わりに/dev/ttyS[01] にリンクしてください。
(訳注: /dev/ttyS[01] とは、/dev/ttyS0 か /dev/ttyS1 のいずれか、という意味です。)
(訳注: Linux Kernel 2.2 以降を使っている場合は、 /dev/cua[01] のかわりに /dev/ttyS[01] を使いましょう)
(訳注: マウス種別を(キーボードで)設定するときは、 設定が完了するまでなるべくマウスに触れないほうがいいかもしれません。 XFree86 の過去のバージョンでは、 不用意にマウスを動かすと設定に失敗する例がありました)
設定作業の流れは、まずお使いのビデオカードの一般的な種別に対応するサーバ
モジュールを選び、
次に、あなたのマシン特有の設定パラメータを得るために
X サーバが起動時に読みこむファイル、
XF86Config
を設定/生成するという段取りになります。
XF86Config
の位置はお使いの OS によって違うことがありますが、
少なくとも /etc/X11
は定位置の一つです。
XFree86 の昔のバージョンでは、XF86Setup
は `X' というコマンドを
選択されたサーバに直接リンクしていました。
最近のバージョンでは、Xwrapper という set-user-id された
ラッパー・プログラムを用いて X サーバを起動する仕組みが提供されています。
setuid root でなければならない要素を最初に
Xwrapper プログラムの中だけで処理してしまうため、サーバ自身を
setuid root で走らせる必要がなくなる、これが Xwrapper のアイデアです。
(訳注: 上記の Xwrapper の仕組みは、LASER5 Linux など、 red hat 系のディストリビューションで用いられているようです。 `X' というプログラム /usr/X11R6/bin/X は /usr/X11R6/bin/Xwrapper へのシンボリックリンクになっており、 Xwrapper は /etc/X を exec するようになっているようです。
もともとの XFree86 では、 xinit やそのフロント・エンドである startx が、 特に指定がない場合まず Xwrapper の実行属性をチェックし、 正常であればそれを実行、さもなくば X サーバそのものを起動します。
また、Debian GNU/Linux の場合は Xwrapper という名前ではなく、 `X' という名前で存在するバイナリが wrapper になっています。 これは Debian 独自の仕掛けであり、GPL ライセンスのもとに公開されています)
ときたま、初回の X サーバ立ち上げが完璧にはいかないことがあります。
たいていは設定ファイルに起因する問題です。
よくあるのが、モニタのタイミング値が抜けている、
ビデオカードのドット・クロックが誤って設定されている、ということ。
細かい修正なら xvidtune
で直せますが、
画面がかなりぐちゃぐちゃになってしまったような場合は、XF86Setup
まで戻って、より性能の低いモニタ・タイプを選ばなければなりません。
表示がうねっているとか、縁がぼやけているように見えるのは、
モニタのタイミング値ないしはドット・クロックが間違っていることの
明らかな兆候です。XF86Config
の Device
セクションにある他の設定オプション同様、
ビデオカードのチップセットを正しく指定したかどうかも確かめてください。
特に、正しい X サーバを使っているかどうか、/usr/X11R6/bin/X
がそのサーバへのシンボリック・リンクになっているかを
しっかり確認してください。
いろいろやってもだめだったら、
X > /tmp/x.out 2>&1
のようにして、X を ``生で'' 起動してみてください。
そして X サーバを殺し
(ctrl-alt-backspace
のキー組み合わせをどうぞ)、
/tmp/x.out
の内容を調べます。X サーバは、
全ての警告とエラー - 例えば、モニタがサポートしているモードに対応した
ドット・クロックをビデオカードが持っていないなど -
をそのファイルに報告しています。
ctrl - alt - テンキーのプラス記号
ないしは
ctrl - alt - テンキーのマイナス記号
を押せば、
XF86Config
のScreen
セクションの Modes
行に列記されたビデオ・モードを順々に切り替えられることも
覚えておいて損はありません。
そのなかで一番解像度が高いモードできちんと見えないようなら、 ひとつ低い解像度に切り替えてみます。そうすれば、 少なくともその(解像度の低い)設定については、 ちゃんと動くのだということがわかるのです。
また、 モニタの垂直/水平のサイズ/ホールドのツマミをチェックしてみてください。 X を立ちあげるのに、そのへんの設定が必要なことも多いのです。 ディスプレイの表示が片側にえらくずれているとかいった場合、 大概はモニタのコントロールで直せます。
comp.windows.x.i386unix
(訳注: いまでは comp.os.linux.x
)
は、XFree86 に関する議論のための USENET ニュースグループです。
(訳注: 日本語のニュースグループとしては fj.os.linux.setup
,
fj.os.linux
, japan.comp.linux
あたりがいいでしょう)
このニュースグループで、自分のビデオ関係の設定に関連した投稿をウォッチ
するのもいい案です。あなたが抱えているのと同じ問題を持ったひとに
出会えるかもしれません。
お持ちのモニタが 1600x1200 の解像度をサポートしているものなら、 その性能を存分に引き出すためには、 X の設定を手でいじらないといけません。 XF86Setup にもともと入っている解像度の上限は 1280x1024 だからです。
こんな場合のようにビデオ設定を手でいじりたい場合は、 LDP の XFree86 Video Timings HOWTO http://metalab.unc.edu/LDP/HOWTO/XFree86-Video-Timings-HOWTO.html を見てください。(これは XFree86 の `Videomodes.doc' の最新版を HTML に しているものです。)
(訳注: XFree86 Video Timings HOWTO 日本語版は http://www.linux.or.jp/JF/JFdocs/XFree86-Video-Timings-HOWTO.html)
デフォルトでは、X は 256 色を出せる 8 ビットの色深度を使います。 この色数の制限を回避するため、独自のカラーマップを自分で割り当てている アプリケーションも多いのですが、この手の、自分専用のカラーマップを持つ ウインドウにまたがってカーソル(マウスポインタ)を動かすと、 急激な色の「すっ飛び」が起こってしまいます。 WWW ブラウザの Arena が、まさにこうです。
先進的なグラフィック・アプリケーションを使いたいなら 256 色では足りないでしょう。 16 ビット色深度 (65,536色) が欲しくなるはずです。 でも注意。すべてのアプリケーションが 16 ビットカラーで動くとは限らないのです。
6 万 5 千もの色を表現できる 16 ビット色深度を使うには、 単に以下のように X を起動すればいいのです。
startx -- -bpp 16
あるいは、以下の行
exec X :0 -bpp 16
を .xserverrc ファイルに入れてください。
また別のやりかたとして、XF86Config ファイルの screen
セクションに
下の記述を入れておく手もあります。
DefaultColorDepth 16
xdm を使っている場合は、おそらく /etc/X11/xdm に置かれている Xservers ファイルを変更しないとならないでしょう。 以下に示すような行 (コメントアウトされておらず、「活きて」いるもの) に対して
:0 local /usr/X11R6/bin/X
起動時オプションとして
-bpp 16
:0 local /usr/X11R6/bin/X -bpp 16
同様に、X 設定ファイルの `screen' セクションに、 Depth の値を 16 とした Display パートを追加してやらないといけません。 一般的には、8 ビットの Display セクションを複製して、 Depth フィールドを変えればいいだけです。
より多くの色数を使えば使うほど、 ビデオカードはより多くのデータを転送することになります。 あなたのビデオカードがついていけないようなら、 解像度かリフレッシュ・レートを落とすことになります。 XFree86 はデフォルトでは解像度のほうを落とします。 もし解像度をキープしたままリフレッシュ・レートのほうを落としたいなら、 その解像度をより低いリフレッシュ・レートで定義した、新しい適切な Modeline を XF86Config ファイルに入れてやらないといけません。 たとえば、古い値
Modeline "1024x768" 75 1024 1048 1184 1328 768 771 777 806 -hsync - vsync
を、新しい値
Modeline "1024x768" 65 1024 1032 1176 1344 768 771 777 806 -hsync - vsync
で置き替えるとか。