私にかまってくださってる皆様
相変わらずの亀レスで申し訳ありません。
現時点での進行状況と、
自分なりに調べても理解できていない点をまとめます。
自分なりの理解の内容と、理解できていない部分を、
xorg.conf を上から書きながら、ひとつひとつあげていこうと思います。
暇人さんのアドバイスを受けて、
xorg_xorg_full_dri-7.3.pet を投げ込み、xorgwizard を実行しました。
暇人さん、本当にありがとうございます。
当然ながら、
みのむしさんのアドバイスを受け、
lshw-B.02.14-i486.pet も投げ込み、lshw を実行しています。
以下の文中には、ここの部分に対する質問も入っています。
みのむしさん、ありがとうございます。
以下の xorg.conf はその結果に対し、
なんちゃさんの xorg.conf も参考にし、悩みながら書いた試作です。
なんちゃさん。ありがとうございます。何度も、何度も、この xorg.conf と睨めっこしました。
では以下、ちょっと長くなりますが、お付き合いください。
よろしくお願いします。
===========
#Special base config file used in Puppy Linux.
#Puppy Linuxで使用される特別なコンフィグファイル(構成ファイル)
# **********************************************************************
# Module section -- this  section  is used to specify which dynamically
# loadable modules to load.
# モジュールセクション -- このセクションは、どのダイナミックローダブルモジュール
# を読み込むかを明示するために使用されます。
# **********************************************************************
Section "Module"
# This loads the DBE extension module.
# ここでは DBE拡張モジュール を読み込みます。
    Load        "dbe"  # Double buffer extension
コード: 全て選択
<個人メモ/無視していいです> ダブルバッファ機能拡張とは、画面の表面と裏面を常にレンダリングしておくためのもの。概念的には、日常の仕事で使用しているイラストレーターやフォトショップのレイヤーみたいなものを、常に裏側で動的に下準備してるみたいなもんだろうと理解しました。
# This loads the miscellaneous extensions module, and disables initialisation
# of the XFree86-DGA extension within that module.
# ここでは様々な機能拡張モジュールをロードし、その中の XFree86-DGA 機能拡張の
# 初期化処理を無効にします。
    SubSection  "extmod"
      Option    "omit xfree86-dga"   # don't initialise the DGA extension
          
# DGA機能拡張 を初期化させない
    EndSubSection
コード: 全て選択
<疑問> XFree86-DGA機能拡張とは、クライアントプログラムが直接ビデオカードのメモリにアクセスできるようにするもの。。。らしい。ということは、ここではそれを初期化させないようにするわけなのでしょうが。。。ここのとこの<初期化させない理由>が、なんでかわからなくて悩んでます。。。本筋から外れる部分の疑問なんでしょうが。。。
# This loads the font modules
# ここではフォントモジュールを読み込みます。
    Load        "type1"
    Load        "freetype"
# This loads xtrap extension, used by xrandr
# ここでは xrandr で使用される xtrap機能拡張 を読み込みます。
    Load       "xtrap"
コード: 全て選択
<疑問> xtrap とは、イベント中の出来事の通知(trap)をする機能拡張みたい。xrandr とは、X Window System Resize and Rotate Extension の略で、要するに、X Window System を再起動しなくても、解像度の変更、画面の回転、表示モニターの切替え、マルチモニターの設定ができるようにするもの。新しい設定 (xrandr) をするときに、その内容をいちど書き出し (trap) て確認し、その書き出したものを参考にして、設定 (xrandr) する仕組みになっていると理解すればいいんでしょうか ? 
# This loads the GLX module (if present)
# ここでは GLXモジュール をロードします。(もし、あるんだったら)。
    Load       "glx"
コード: 全て選択
<個人メモ/無視していいです> GLX とは、OpenGL Extension to the X Window System のかなり強引な略。つまり、X Window System 上のウィンドウで OpenGL を使えるようにするもの。OpenGL とは、3Dグラフィック のためのオープンなプログラムで、よく一緒に出てくる DirectX なんかは、ゲーム開発での利用が主な用途なんで、グラフィックだけじゃなくサウンドや入力関連も含んでいる点で性質が違う。DirectX は Windows や Xbox で多く使われてるのに対して OpenGL はプラットフォームを選ばない。だから OpenGL に最適化されたデバイスが多く発売されてるとのこと。
# This loads dri module (if present)
# ここでは driモジュールをロードします。(もし、あるんだったら)。
コード: 全て選択
<疑問> DRIとは Direct Rendering Infrastructure の略。これを組み込むと OpenGL を使った 3D の描画処理を高速化することができるようになるとのこと。つまり OpenGL とセットで必要なもの。Xプロトコル というものにいちいち変換せずに、ビデオメモリー に直接アクセスしちゃうことで高速描画を実現しているのだと理解。(ただし対応ビデオチップが限られていて使えない場合もあるとらしい。) で、ここからなんですが。。。さらにDRIを利用するには、Linuxカーネル の中にある DRM も有効にしないと駄目だとネットで読みました。DRM とは、Direct Rendering Managerの略で、データを転送する時に無駄なコピーをしなくする機能で、その結果として高速化を実現しているとありました。で、、、下記では dri だけを読みこませてるようなんですが、drm を有効にする? ような記述が、どこにも出てきません。このままで、何も追加記述しなくてもいいのでしょうか?
    Load       "dri"
EndSection
# **********************************************************************
# Files section.  This allows default font and rgb paths to be set
# ファイルセクション。デフォルトのフォントと rgbパスを指定します。
# **********************************************************************
Section "Files"
# The location of the RGB database.  Note, this is the name of the file
# minus the extension (like ".txt" or ".db").  There is normally no need to
# change the default.
# RGBデータベース の場所です。注意、拡張子(例えば ".txt"や ".db")を使わないファイ
# ルネームです。一般的にはデフォルトのままでかまいません。
コード: 全て選択
<個人メモ/無視していいです> RGBとは単純に、画面の色指定 (RGB) のことだと理解しました。印刷色のCMYKの様に。
    RgbPath "/usr/X11R7/lib/X11/rgb"
# Multiple FontPath entries are allowed (which are concatenated together),
# as well as specifying multiple comma-separated entries in one FontPath
# command (or a combination of both methods)
# 複数のフォントパスを(連結させて)エントリーすることができます。1つのフォントパス
# コマンドでコンマ区切りを使用することもできます。あるいは、この2つの方法を組み
# 合わせることもできます。
    FontPath   "/usr/X11R7/lib/X11/fonts/misc/"
    FontPath   "/usr/X11R7/lib/X11/fonts/Type1/"
    FontPath   "/usr/X11R7/lib/X11/fonts/TTF/"
EndSection
# **********************************************************************
# Server flags section.
# サーバーフラッグセクション
# **********************************************************************
Section "ServerFlags"
# Uncomment this to disable the <Crtl><Alt><Fn> VT switch sequence
# (where n is 1 through 12).  This allows clients to receive these key events.
# ここにコメントを入れないと <Crtl><Alt><Fn>などの VTスイッチ (nは1〜12)が使
# 用できなくなります。ここではクライアントがこれらのキーイベントを受け取れるよう
# にします。
#    Option "DontVTSwitch"
# Enables mode switching with xrandr
# There is a report that this can cause Xorg not to work on some video
# hardware, so default is commented-out...
# but i want to use it in xorgwizard so leave on...
# xrandrを有効にします。
# いくつかのビデオハードウェア上では Xorg が動かないというレポートがあるので、デ
# フォルトでは無効になっていますが、私は Xorgウィザード でこれを使用したいので変
# 更します。
    Option "RandR" "on"
    
Option "Xinerama" "0"
    Option "Xinerama" "1"
コード: 全て選択
<解決するべき疑問/たぶんポイントの部分> Option "Xinerama" "0" と Option "Xinerama" "1" は、なんちゃさんの xorgconf を参考に追加しました。なんちゃさんの xorgconf には以下のような # で始まる2ラインがあります。つまり < "Xinerama" を外すオプション > を、< ## で外している > わけですから、結果的には <外さない> ということになるわけですよね???
## Removed Option "Xinerama" "0"
## Removed Option "Xinerama" "1"
が、、、私のにはこの2行が入っていませんでした。ということは、、、Xinerama がもともとインストールされていないのだろうか?? もしかしたら、どっかで探してこなければいけないのだろうか?? などとと首を傾げつつ、上記の2行を追加しました。
EndSection
# everything past here is auto-generated by Puppy's Xorg Wizard...
# ここに出てくる内容は、Puppy's Xorg Wizard によって出力されたものです。
Section "ServerLayout"
Identifier     "X.org Configured"
Screen "Screen0" RightOf "Screen1"
Screen "Screen1"
コード: 全て選択
<解決すべき疑問/たぶんポイント> なんちゃさんの xorg.conf では、↑の赤い行は、
Screen      0  "Screen0" 0 0 としか出てきていません。実は <私のも全く同じ> でした。ただ、なんちゃさんの Section "screen" (ここは Section "ServerLayout" なんですが) には、多くのオプションがあって、"TwinView" "TwinViewXineramaInfiOrder" "metamodes" などなどの項目があります。"TwinView" は以前にもレポートしましたが、nVidia で提供されているユーティリティみたいで、同様の Option は、私の Section "screen" にはありませんでした。いろいろ考えた結果、Matrox の場合は、前回にアップした Matrox公式 のページの説明にしたがって、Section "ServerLayout" のほうを書き直すべきなのでは?? という判断に傾きました。これで良いのでしょうか??
コード: 全て選択
<解決すべき疑問/たぶんポイント> ↑の1行は、悩み倒している部分です。Option "Xinerama" は、Matrox公式ページの サンプルにあるクローンモードの中の Section "ServerLayout"  を参考に追加しました。同じ場所のデュアルヘッドのサンプルでは、これは出てきません。ただしこのファイルの全体の文脈では、この Option は必要なように見受けられます。しかしこのファイルをさらによく読むと Xinerama機能拡張 を使用すると、DRI は有効にされないという記述が出てきます。つまり、この行を追加するということは、Section "Module" で最初に DRI を読み込ませていることと矛盾するのです。せっかく Section "Module" で DRI を有効にしたのに、Option "Xinerama" を使用することで、DRI が有効にされなくなることになります。ということは、、OpenGL のために読み込ませた GLX も有効にならないのではないか?? という疑念も出て来ます。七転八倒で悩み倒している部分です。
コード: 全て選択
<解決すべき疑問/たぶんポイント> Matrox公式ページ内の、同じファイル内の説明によると「Xinerama機能拡張 は、"XF86Config"ファイル の "ServerLayout"セクション に自動的に、Option "Xinerama" ラインを追加します」と出てきます。やっぱりもともと Xinerama機能拡張 が読み込まれていないのか?? という疑問がわいてきます。じゃあどうしたらいいのか??? がさっぱりわかりません。
InputDevice    "Mouse0" "CorePointer"
InputDevice    "Keyboard0" "CoreKeyboard"
EndSection
Section "InputDevice"
Identifier  "Keyboard0"
Driver      "kbd"
Option      "XkbRules" "xorg"
Option      "XkbModel" "jp106"
コード: 全て選択
ここは、相変わらず "jp106" のままです。シノバーさんがバグだと言っておられたんで、あきらめて放ったらかしです。
Option      "XkbLayout" "us" #xkeymap0
EndSection
Section "InputDevice"
Identifier  "Mouse0"
Driver      "mouse"
Option     "Protocol" "auto" #mouse0protocol
Option     "Device" "/dev/mouse"
#Option      "Emulate3Buttons"
#Option      "Emulate3Timeout" "50"
Option      "ZAxisMapping" "4 5" #scrollwheel
EndSection
Section "Monitor"
#DisplaySize   470   300 # mm
Identifier   "Monitor0"
VendorName   "AOC"
ModelName    "AOC 210V"
### Comment all HorizSync and VertRefresh values to use DDC:
Option     "DPMS"
コード: 全て選択
<個人メモ/無視していいです> DPMSとは、ディスプレイの電源管理に関する規格。
HorizSync    31.0-80.0
VertRefresh  56.0-71.0
#UseModes     "Modes0" #monitor0usemodes
Option      "PreferredMode" "1280x1024"
EndSection
Section "Monitor"
#DisplaySize   470   300 # mm
Identifier   "Monitor1"
VendorName   "AOC"
ModelName    "AOC 2216"
### Comment all HorizSync and VertRefresh values to use DDC:
Option     "DPMS"
HorizSync    31.0-80.0
VertRefresh  56.0-71.0
#UseModes     "Modes0" #monitor0usemodes
Option      "PreferredMode" "1280x1024"
EndSection
コード: 全て選択
<解決すべき疑問/たぶんポイント> 上記の赤文字の Section "Monitor" は、その上の Section "Monitor" を、まるまるコピーして追加しました。変更したのは以下の2行だけです。HorizSync と VertRefresh は不明なので、そのままにしました。
Identifier   "Monitor1"
ModelName    "AOC 2216"
これで、、いいですよね??? あと、、
#UseModes     "Modes0" #monitor0usemodes
に関しては下にも記述しますが、悩み倒してます。とりあえずここは <#> が入ってるんで、無理に触ることはないと判断してそのままにしてます。
Identifier "Modes0"
#modes0modeline0
EndSection
コード: 全て選択
<解決すべき疑問/たぶんポイント> いろいろネットで調べたのですが、この Section "Modes" という項目の正体が、さっぱりわかりません。。。アタマ抱えてます。Identifier "Modes0" とあるので、Identifier "Modes1" #modes1modeline1  などと書かなくても良いのでしょうか??? 意味が分かってないんで、よけいに気味が悪いんです。ちなみに、なんちゃさんの xorg.conf では、Identifier "Modes0" だけでした。たださっきも書きましたが、 nVidia と Matrox は、アプローチ方法がちょっと違うのではないだろうか??? という疑念があるんで、悩んでます。
Section "Device"
### Available Driver options are:-
### Values: <i>: integer, <f>: float, <bool>: "True"/"False",
### <string>: "String", <freq>: "<f> Hz/kHz/MHz"
### [arg]: arg optional
#Option     "SWcursor"           # [<bool>]
コード: 全て選択
<個人メモ/無視してください> SWcursor とは、ソフトウェアカーソルのこと。
#Option     "HWcursor"           # [<bool>]
コード: 全て選択
<個人メモ/無視してください> HWcursor とは、ハードウェアカーソルのこと。SWCursor が指定されると、HWCursor の指定は無視されるらしい。デフォルトは HWCursor になってるらしい。
#Option     "PciRetry"           # [<bool>]
#Option     "SyncOnGreen"        # [<bool>]
#Option     "NoAccel"            # [<bool>]
コード: 全て選択
<個人メモ/無視してください> アクセラレーションを有効または無効にする。デフォルトは有効。
#Option     "ShowCache"          # [<bool>]
#Option     "Overlay"            # [<str>]
#Option     "MGASDRAM"           # [<bool>]
#Option     "ShadowFB"           # [<bool>]
コード: 全て選択
<個人メモ/無視してください> シャドウフレームバッファレイヤの使用を有効または無効にする。何のことかさっぱりわからん。
#Option     "UseFBDev"           # [<bool>]
#Option     "ColorKey"           # <i>
#Option     "SetMclk"            # <freq>
#Option     "OverclockMem"       # [<bool>]
#Option     "VideoKey"           # <i>
#Option     "Rotate"             # [<str>]
コード: 全て選択
<個人メモ/無視してください> 画面を回転させる。
#Option     "TexturedVideo"      # [<bool>]
#Option     "Crtc2Half"          # [<bool>]
#Option     "Crtc2Ram"           # <i>
#Option     "Int10"              # [<bool>]
#Option     "AGPMode"            # <i>
#Option     "AGPSize"            # <i>
#Option     "DigitalScreen1"     # [<bool>]
#Option     "DigitalScreen2"     # [<bool>]
#Option     "TV"                 # [<bool>]
#Option     "TVStandard"         # [<str>]
#Option     "CableType"          # [<str>]
#Option     "NoHal"              # [<bool>]
#Option     "SwappedHead"        # [<bool>]
#Option     "DRI"                # [<bool>]
#Option     "MergedFB"           # [<bool>]
#Option     "Monitor2HSync"      # [<str>]
#Option     "Monitor2VRefresh"   # [<str>]
#Option     "Monitor2Position"   # [<str>]
#Option     "MetaModes"          # [<str>]
#Option     "OldDmaInit"         # [<bool>]
#Option     "ForcePciDma"        # [<bool>]
#Option     "AccelMethod"        # [<str>]
Identifier  "G400_1"
コード: 全て選択
<解決すべき疑問/たぶんポイント> ここ↑がわからないんです。たぶん Identifier  "G400_2" も必要なんだと思うのですが、どう書けばいいのか??? がわかりません。同じ Section を2つ作るべきなのでしょうか? でも、なんちゃさんのには、この Section は、ひとつしかないんです。。。
コード: 全て選択
<解決すべき疑問/たぶんポイント> ここ↑も同様にわからないんです。#G400_1driver とありますが、となると、この Section は、"G400_1" だけのためのものということになってしまいます。でも、なんちゃさんのには、この Section は、ひとつしかないんです。。。
VendorName  "Matrox Graphics, Inc."
BoardName   "MGA G400/G450"
BusID       "PCI:1:0:0"
コード: 全て選択
<解決すべき疑問/たぶんポイント> みのむしさんにアドバイスいただいた部分です。私なりに調べた理解では、PCIとは、PC内部の各パーツ間を結ぶバス(データ伝送路)の規格です。だから BusID とは、その伝送路の住所みたいなものだと理解しました。1枚のカードなんだから、ひとつでいいのか? という考えが頭をよぎっていますが、自信が無いです。もしこの Section を2つにわける必要があるのだったら、まったく同じ値にしておいてもいいのか??? (たぶん、、いいんだろうけど、、、) 
ちなみに、みのむしさんに教えられたとおりに lshw を実施したときに出てくるのは以下です。
  *-display UNCLAIMED
                description: VGA compatible controller
                product: MGA G400/G450
                vendor: Matrox Graphics, Inc.
                physical id: 0
                bus info: pci@0000:01:00.0
                version: 82
                width: 32 bits
                clock: 33MHz
                capabilities: pm agp agp-2.0 vga_controller bus_master cap_list
                configuration: latency=32 maxlatency=32 mingnt=16
                resources: memory:d4000000-d5ffffff(prefetchable) memory:d6000000-d6003fff memory:d7000000-d77fffff memory:d6020000-d603ffff(prefetchable)
コード: 全て選択
<解決すべき疑問/たぶんポイント> ここ↑もわかりません。Screen 1 も必要なんだと思うのですが、どう書けばいいのか??? がまったくわかりません。たんに、Screen 1 と1行追加するだけでいいのでしょうか??? 同じ Section を2つ作るべきなのでしょうか? でも、なんちゃさんのには、この Section は、ひとつしかないんです。。。
EndSection
Section "Screen"
   Identifier "Screen0"
   Device     "G400_1"
   Monitor    "Monitor0"
   DefaultDepth 16
  
   Subsection "Display"
      Depth       16
      Modes       "1280x1024"
   EndSubsection
EndSection
Section "Screen"
   Identifier "Screen1"
   Device     "G400_2"
   Monitor    "Monitor1"
   DefaultDepth 16
  
   Subsection "Display"
      Depth       16
      Modes       "1280x1024"
   EndSubsection
EndSection
コード: 全て選択
<解決すべき疑問/たぶんポイント> 赤字の部分が、追加で記入した部分です。これで、あってますか?
#PuppyHardwareProfile=Matrox_Graphics_Inc_AOC210V
=======
以上が、私が再び試作した xorg.conf です。
どなたか、よろしければアドバイスをお願いします。
で、、最後に簡単な追加です。
暇人さんのアドバイスを頂いて、ドライバを入れたのですが、
その後、PC起動時の様子が非常に不安定 & 遅くなっています。
最初に kernel を読み込む時に毎回、まるで画面がフリーズしたようになります。
結果的には時間が長くなっただけなのですが、従来の数倍の時間(約2分以上)待たされます。
感覚的には、タバコを1本吸いながら、のんびり我慢して反応を待つ。という感じです。
(↑は再起動時も同じ現象が継続しています)
これを待ったあと、読み込みが始まるのですが、
いちど電源をシャットアウトしたあとの起動時には、
毎回、必ず、xorg ウィザードをしないと、立ち上がってくれなくなりました。
(↑の現象は再起動時には出現しません。)
基本的には、この現象は「壁を突破するための、本当の壁が、やっと出現した」のだと、
前向きに捉えているので気にはしていないのですが、一応、報告しておきます。