XFree86の設定のしかた  DELL DIMENSION XPS D300(ビデオカード:STB Velocity 128 3D AGP)のXFree86の設 定のメモを記す。参考文献は「RedHat LINUX入門キット」p.136〜,Linux-users-ML過去 ログ,「Software Design 98年10月号」p.89〜など。  RedHat 4.2インストール時のXFree86ではバージョンが古くて(3.2.9や3.3.1)STB Velocity 128に対応していなかったので,まずはどんなカードにでも使える(がしかし解 像度は640x480と寂しい)VGA16サーバーを使うことにして(解像度が低くてもとりあえず Xが使えるといろんな作業が楽なので),その後バイナリ配布のXFree86-3.3.2(STB Velocity 128もサポートしている)をftpでとってきてインストールしてSVGAサーバーを 使えるようにした。  XFree86の設定には ●XF86Setup(これはGUI,最後にxvidtuneで画面の調整ができるのがよい) ●xf86config(テキストベースの会話形式) ●Xconfigurator(RedHatのインストーラーと同じカラー表示の対話形式) ●/usr/X11R6/lib/X11/XF86Configを直接手で編集 の4通りのやり方がある。いずれもsuになって使う(上3つはそのままコマンド名)。 XF86Setupだけですめばええんやけど結果的にダメで試行錯誤の結果STB Velocity 128に ついては次のような段取りをとるとよいということが分かった。 (1)まずXconfiguratorで設定する  これはRedHatのインストール時に出てくる(とばしたけど)ものと同じ。これでとりあ えずSVGAサーバーでXが起動するようになる。XF86Setupではなぜかアカンかった(行ける 時もあったが,どうしたか忘れた)。この時の選択は ●Choose A Card: XFree86のバージョンアップ前なら「Generic VGA compatible Generic VGA」 XFree86を3.3.2にバージョンアップした後なら「STB Velocity 128 RIVA128」 ●Pick A Server: XFree86のバージョンアップ前ならビデオカードを「Generic VGA compatible」にした時 点で自動的にXサーバーはVGA16になるのでこの画面は出てこない。 XFree86を3.3.2にバージョンアップした後なら「SVGA」 ●Monitor Setup: DELL UltraScan 1000HS SERIES Model: D1025HTなんてないので「Generic Multysync」を 選ぶ ●Video Memory:「4096」(KB)←これはPCのスペック表にもビデオカードのメモリは 4MBと書いてあるし ●Clockchip Configuration:「No Clochchip Setting (recommended)」 ●Select Video Modes: 使う解像度を,使う色数ごとに選ぶんやけど,リストに挙がっている解像度はモニターの マニュアルp.54を読むと全部使えるし全部選んでおこう ●Probe for Clocks:「OK」 「今テストをしますか(Probe now)?」−「はい」ということ「OK」を選ぶとしばらく してから「You're Done!」といってきて無事Xの設定が成功したよ,となる。 これでstartxなりxinitなりのXの起動コマンドをコマンドラインで入れてやると画面大き さやちらつきは調整できていないけど,とりあえずXが起動する。Xconfiguratorの操作は 「RedHat LINUX入門キット」p.151〜に図つきで詳しく書いてあるで。suになって   # Xconfigurator と入力して起動する。 ↓ (2)XF86Setupでさらなる調整を行う  XF86Setupで ●マウスの設定 ●モニターの設定 ●モードの設定(どの解像度(複数)を使うか) ●キーボードの設定 を行う。肝心なのは「カード」の設定はいじらないこと。「Other」というのもいじらな くてよい。  Xを出て,suになって   # XF86Setup と入力。まず「既存の設定をまず使うか?」と聞かれるのでもちろん「yes」を選ぶ。つ まりさっきXconfiguratorで設定したものをまず土台に使うということ。次にXFree86とい うでかいロゴマークのついた画面が出て(これはVGA16サーバを使って起ち上げているの だ)メッセージが出るので1度はよく読んでおいて(使い方が書いてある),「Enter」 キーをたたき,「Dismiss」と出るのをdismissすべくもういっぺん「Enter」キーをたた いてマウスの設定画面に入る。既存の設定のおかげできちんとマウスの設定が「mouse protocol」が「PS/2」に「mouse device」が「/dev/psaux」になっていてマウスは使える はず。なのでマウスの設定はしなくてよい。ちなみにXFree86-3.3.2ではよく文字化けを 起こすがこの対処の仕方が分からない。画面下左の「Abort」を選ぶ(「Abort」自体が見 えんけど)かCtrl+Alt+BSで一度終了させて(logoutまでして?)やり直すということを 試みていると戻ったこともあった気がするが定かでない。まあそれまでに何回もやって苦 労しとったんでどこが何なのかは体で覚えとったんで支障はなかったけど。困った場合は 「Software Design 98年10月号」p.92〜に図が出ているのでそれと照らし合わせれば大体 どこが何の項目なのかは見当がつく。「Unix User 98年5月号」p.58に「XFree86-3.3.2は XF86Setupが日本語対応になった」と書いてあるので,原因はそれかも知れない。ただ rootの.bash_profileをいじってLANGをja_JP.ujisにしてみたんやけどやっぱり文字化け (LANGはGUIの文字にゃあ関係ないんやろなあ)。どうすりゃええんやろ。  キーボードの設定を先にやってしまうとモニターの設定画面でなぜか入力できなくなる ので次にモニターの設定を行う。「Horizontal」(水平周波数範囲(kHz))と 「Vertical」(垂直周波数範囲(Hz))を手でそれぞれ「30-85」,「48-150」(値はモ ニターのマニュアルp.56より)と入力する。  次にモードの設定を行う(これはXFree86-3.3.2から初めて加わったみたい)。モニタ ーのマニュアルp.54の表によると解像度は720×400(これって変やな),640×480,800 ×600,1024×768,1280×1024がいけるし,p.56には1600×1280も入力可能と書いてある んで,選択肢に出てくる解像度のうち640×480,800×600,1024×768,1280×1024, 1600×1280を選んで置く。default color depthは選ばんでええんちゃうかなあ。結論と してdefaultは16ppになる。実はcolor depthは24pp(ppってのはビットと同じかな, per pixelやろか)はこのビデオカードについてはXFree86-3.3.2ではサポートされてへん みたいやし,32ppではビデオカードのメモリが足らんので解像度1024x768が限界やし, defaultが16ppというのは大正解なのであった。  最後にキーボードの設定を行う。「Model」は「Japanese 106-Key」,「Layout」は 「Japanese」を選んで「Apply」をクリックする。  全部設定が終われば画面下真ん中の「Done」を選ぶ。そうすると「Mode」で選択した一 番高解像度のグレーの画面がゆっくりと現れて,そのうちに「Run xvidtune」「Save the configuration and exit」「Abort - Don't save the configuration」という3つのボ タンが浮かび上がってくる。  そこで「Run xvidtune」を選ぶ。xvidtuneは画面の位置・大きさやちらつきを調整する 便利なソフト。位置・大きさを調整すればちらつきの方は勝手に調整してくれるみたい。 まずメッセージが出るがそれは「OK」を選んでやり過ごしておいて,次に忘れずに 「Auto」をクリックすること。これを忘れたら「Quit」でいったんxvidtuneを抜けて再度 「Run xvidtune」からやり直すとよい。さて画面の位置・大きさは水平方向については 「Left」「Right」「Wider」「Narrower」を,垂直方向については「Up」「Down」 「Shorter」「Taller」をクリックして調節する。画面が調整できたら「Apply」をクリッ クして「Quit」でxvidtuneを抜ける。そしてその設定を保存してよければ「Save the configuration and exit」をクリックしてXF86Setupを終了する。設定は /usr/X11R6/lib/X11/XF86Configというファイルに保存される。保存せずやめたいとかも う一度xvidtuneを使いたいという場合は他のそういうボタンをクリックすればよい。 XF86Setupやxvidtuneの操作は「Software Design 98年10月号」p.94〜,p.98〜が詳し い。ぜひ目を通しておこう。  画面の移動・拡大・縮小には限界があるみたいで,xvidtuneがダメという位置・大きさ は本当にダメみたいで,いくらXF86ConfigのModelineの行を手で編集してやってもXは起 動せず,「画面がサポート外の位置・大きさになっている」みたいな文句を言われる。こ こでxvidtuneの画面中の数字の意味を説明しておく。 HDisplay:水平解像度(kHz) HSyncStart, HSyncEnd:画面を左右に移動させるとこの2つが差を一定に保ちながら変動 する。「Left」やと値が大きく,「Right」やと値が小さくなる。値は4刻み? HTotal:画面を「Wider」にするとこの値が小さく,「Narrower」にすると値が大きくな る。値は4刻み? VDisplay:垂直解像度(Hz) VSyncStart, VSyncEnd:画面を上下に移動させるとこの2つが差を一定に保ちながら変動 する。「Up」やと値が大きく,「Down」やと値が小さくなる。値は4刻み? VTotal:画面を「Shoter」にするとこの値が大きく,「Taller」にすると値が小さくな る。値は4刻み? Pixel Clock (MHz):? Horizontal Sync (kHz):? Vertical Sync (Hz):?  万が一XF86Setupが途中で死んだ場合や途中で何としてもやめたい時はCtrl+Alt+BSで 抜けれるよ。これはXをキー操作で終わらせる方法。  なお,いきなりXF86Setupから始める場合,まず最初のメッセージをよーく読んで, Enterを2回たたいてマウス設定の画面に行って,絶対にマウスには触らずに「p」キーで mouse protocolの「PS/2」を選んで「a」キーでそれを有効にする(apply)。そうすると Logitech MouseManが3つボタンマウスとしてちゃんと機能するようになるのでこの段階 からマウスを使おう。Logitech MouseManでもPS/2対応(丸いコネクタ)なら「PS/2」を 選ぶこと。「Logitech MouseMan」という選択肢はシリアルポート対応(横長の四角のコ ネクタ)の古い製品のためのもの。そうそう,XFree86-3.3.2ではデフォルトが「PS/2」 になっているので最初のメッセージをやりすごせばいきなりマウスが使えるで。それに Xconfiguratorで既に大まかな設定がしてあれば既に「PS/2」が選ばれている。使うのは 3つボタンマウスなので「Emulate 3 Buttons」は選ばない。 ↓ (3)/usr/X11R6/lib/X11/XF86Configを直接手で編集する  この段階でstartxとかxinitでXを起動させるときちんと気持ちよい画面になると思う が,「Ctrl」+「Alt」+「+」や「Ctrl」+「Alt」+「-」(「+」「-」はテンキー)で他の (低い)解像度の画面にすると画面がずれていると思う。ただし,Window全体がモニター 画面に収まらんのはしゃーないんやで。一番解像度の大きい画面がきれいに収まるように なっているので(これはXF86Configの「Virtual」という行に一番の高解像度が書いてあ るのでそうなる)。ずれていては困るのでこれを直そう。まず今ある /usr/X11R6/lib/X11/XF86Configのコピーを念のためどこかにとっておく(失敗したらす ぐに元のに戻せるように)。修正するのはXF86Configの「Modeline」の行。この行は解像 度(=mode)の数だけあって,例えば 1280x1024の場合 Modeline "1280x1024" 135.00 1280 1300 1404 1644 1024 1027 1030 1052 -hsync -vsync と書いてあったりするが,ここに書いてある数字は実はxvidtuneの画面で出てくるものば かりで, Modeline "HDisplayxVDisplay" Pixel Clock HDisplay HSyncStart HSyncEnd HTotal VDisplay VSyncStart VSyncEnd VTotal -hsync -vsync という順で書いてあるのだ。従ってやるべきことは次の通り。  XF86Setupを起動して「既存の設定を使う」を選んで,「Mode」で調整したい解像度を 1つだけ選んで,「Done」として次にxvidtuneを起動してその解像度の画面の位置・大き さ調整をして調整後のHSyncStart,HSyncEnd,HTotal,VDisplay,VSyncStart, VSyncEnd,VTotalの値をメモっておいて「Apply」を選ばずに(どうでもええけど) 「Quit」で出て,「Abort - Don't save the configuration」を選んでXF86Configをいじ らないようにして終わる。これを使う解像度全てについて行う。そしてXF86Configファイ ルの「Modeline」の行をメモった値に手で修正するわけ。こういう面倒くさいことをせず にxvidtuneで「Next」や「Prev」で解像度を変えれることを利用して1回のxvidtuneで全 てのモードの画面調整をしようとしたがうまくいかんかった。頑張りゃできるんかも知ら んけど。とにかくこのようにして作ったのが最後に添付するXF86Configファイルである。  元々は Driver(=Xサーバー)が"Accel"とか"VGA2"の"Screen"というSectionもあっ たんやけど,どうせDriverは"SVGA"を使うんやし消した。一応"VGA16"のは何となく残し といたんやけど。  あとコメントとして書いてあるけど,Color Depth 24pp(色数が24bit=16777216色) はこのチップセットではサポートされていない。またColor Depth 32pp(色数が32bit=4 億色)を使う場合,ビデオカードのメモリの大きさ上解像度は1024x768が限界である。こ れらは DefaultColorDepth 16 の行の16を24とか32に変えてXを起動させようとしたら文句をいわれて判明。従ってデ フォルトのColor Depthは16pp(色数が16bit=65536色)としてある。32ppも色数があっ ても無意味やけど24ppなら使えればうれしいかもしれない。これはXFree86のバージョン アップを待つしかないか。  Modesという行に書いてある解像度が使えて,「Ctrl」+「Alt」+「+」や「Ctrl」+ 「Alt」+「-」で書いてある順にモードを順送り,逆送りに切り替えられる。先頭が "1280x1024"になっているのでXを起動すれば1280x1024の画面になる。それからVirtualと いう行で指定してある解像度(1280×1024)以上の解像度は表示できない。従って解像度 1600x1200はModesという行でエントリーはしてあるけど「Ctrl」+「Alt」+「+」や 「Ctrl」+「Alt」+「-」で切り替えても登場しない。Virtual行を Virtual 1600 1200 としてやれば使えるようになる。また,Virtual行で指定してある解像度についてモニタ ーの枠にXの画面が過不足なくすっぽりきれいに収まるようになっている(もちろん xvidtuneで調整済みであることは前提)。従ってそれより低い解像度のXの画面はモニタ ーの枠からはみ出すことになる。まあ,低い解像度の画面もモニター枠にすっぽり収まっ ていたほうが気持ちいいかもしれないが,おおきなウィンドウを開けたい時のことを考え るとはみ出してくれた方がいいので,ここはこれ以上努力していない。努力のしようがあ るのかどうかも分からない。Modeline行をいじればなんとかなるんかも知れんけど。とい うことで1600x1200を使おうとしてVirtual 1600 1200としてしまうと,使い心地の いい1280x1024の画面がモニター枠からはみ出すことになるし,まあ使わんほうがええや ろな。 ↓ (4)モニターのボタンで最後の調整をする  ここまでしても画面の下側に結構な余裕がまだあったり左右にも少しだけやけど余裕が あって修正したいんやけど,これ以上はXF86Configをいじってもどうしようもない。そこ であとはモニターの画面調整ボタンで画面の位置・大きさを調整する。これでバンバンザ イ。なお,モニターの画面調整ボタンをいじるとWindows95の画面がずれてしまわんかと 心配やったけど問題なかった。まあWindows95の方は「コントロールパネル」の「ディス プレイの詳細」でなんぼでも調整できるし心配せんでもええんやけど。 付録:/usr/X11R6/lib/X11/XF86Configの中味 # XF86Config auto-generated by XF86Setup # # Copyright (c) 1996 by The XFree86 Project, Inc. # # Permission is hereby granted, free of charge, to any person obtaining a # copy of this software and associated documentation files (the "Software"), # to deal in the Software without restriction, including without limitation # the rights to use, copy, modify, merge, publish, distribute, sublicense, # and/or sell copies of the Software, and to permit persons to whom the # Software is furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL # THE XFREE86 PROJECT BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF # OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # SOFTWARE. # # Except as contained in this notice, the name of the XFree86 Project shall # not be used in advertising or otherwise to promote the sale, use or other # dealings in this Software without prior written authorization from the # XFree86 Project. # # See 'man XF86Config' for info on the format of this file Section "Files" RgbPath "/usr/X11R6/lib/X11/rgb" FontPath "/usr/X11R6/lib/X11/fonts/misc/,/usr/X11R6/lib/X11/fonts/Type1/,/usr/X11R6/lib/X11/fonts/Speedo/,/usr/X11R6/lib/X11/fonts/75dpi/,/usr/X11R6/lib/X11/fonts/100dpi/" EndSection Section "ServerFlags" EndSection Section "Keyboard" Protocol "Standard" AutoRepeat 500 5 LeftAlt Meta RightAlt Meta ScrollLock Compose RightCtl Control XkbKeycodes "xfree86" XkbTypes "default" XkbCompat "default" XkbSymbols "us(pc101)" XkbGeometry "pc" XkbRules "xfree86" XkbModel "jp106" XkbLayout "jp" EndSection Section "Pointer" Protocol "PS/2" Device "/dev/mouse" BaudRate 1200 Emulate3Timeout 50 EndSection Section "Monitor" Identifier "Generic Multisync" VendorName "Unknown" ModelName "Unknown" HorizSync 30-85 VertRefresh 48-150 # Values in the following Modelines were determined using xvidtune for each resolution. # (This comment was written by Y. Kakehi.) Modeline "1600x1200" 162.00 1600 1636 1828 2056 1200 1201 1204 1222 -hsync -vsync Modeline "1280x1024" 135.00 1280 1300 1404 1644 1024 1027 1030 1052 -hsync -vsync Modeline "1024x768" 115.50 1024 1060 1252 1360 768 771 781 790 -hsync -vsync Modeline "800x600" 69.65 800 816 880 992 600 604 610 620 -hsync -vsync Modeline "640x480" 45.80 640 668 764 788 480 484 490 498 -hsync -vsync EndSection Section "Device" Identifier "Generic VGA" VendorName "Unknown" BoardName "Unknown" Chipset "generic" EndSection Section "Device" Identifier "My Video Card" VendorName "Unknown" BoardName "Unknown" EndSection Section "Screen" Driver "SVGA" Device "My Video Card" Monitor "Generic Multisync" DefaultColorDepth 16 BlankTime 0 SuspendTime 0 OffTime 0 SubSection "Display" Depth 8 Modes "1280x1024" "1024x768" "800x600" "640x480" "1600x1200" Virtual 1600 1280 ViewPort 0 0 EndSubSection SubSection "Display" Depth 15 Modes "1280x1024" "1024x768" "800x600" "640x480" "1600x1200" EndSubSection SubSection "Display" # Only Modes less than Virtual are available. # You must use "Virtual 1600 1200" if you want to use "mode 1600x1200", for example. # Mode equal to Virtual completely fits the monitor area. # (This comment was written by Y. Kakehi.) Depth 16 Modes "1280x1024" "1024x768" "800x600" "640x480" "1600x1200" # Virtual 1600 1200 Virtual 1280 1024 # Virtual 1024 768 ViewPort 0 0 EndSubSection # SubSection "Display" # Depth 24pp is not supported for this chipset # (This comment was written by Y. Kakehi, taken from the warning message.) # Depth 24 # Modes "1280x1024" "1024x768" "800x600" "640x480" "1600x1200" # Virtual 1280 1024 # Virtual 1024 768 ViewPort 0 0 # EndSubSection SubSection "Display" # Virtual resolution 1280 x 1024 is too large for memory for depth 32pp # (This comment was written by Y. Kakehi, taken from the warning message.) Depth 32 Modes "1024x768" "800x600" "640x480" Virtual 1024 768 ViewPort 0 0 EndSubSection EndSection Section "Screen" Driver "VGA16" Device "Generic VGA" Monitor "Generic Multisync" BlankTime 0 SuspendTime 0 OffTime 0 SubSection "Display" Depth 4 Modes "1280x1024" "1024x768" "800x600" "640x480" EndSubSection SubSection "Display" Depth 8 Modes "1280x1024" "1024x768" "800x600" "640x480" Virtual 800 600 ViewPort 0 0 EndSubSection EndSection