[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[debian-users:17805] Re: ThikPad330cs で 640x480 256 色



佐野@浜松です。

In article <199909080642.PAA16167@xxxxxxxxxxxxxxxxx>
 Rui SATO <rui@xxxxxxxxxxxxxx> さん writes:

> SuperProbeを行ったところ
> First video: MCGA
> と最後にでました(これ以外のところが重要なのでしょうか...)。

 SuperProbe -verbose -order WD
 SuperProbe -verbose -no_bios

を実行してみると、何か面白い結果が出てくるかもしれません。

# しかし、残念ながら今のところあんまりこれについて追っかける
# 時間が無いです。最近 XFree86 のコード読んでない。
# SuperProbe は X のドライバーコードよりいくらか遅れてついていくので、
# 最新のチップには対応してないことが多い、ってのと、古いカードを
# チェックしたり、いろいろなチップを検出しようとするために誤動作する
# 場合がある、ってことだけ覚えておいてください。

> また,X -probeonlyを行ったところ(*1)
> XFree86 Version 3.3.3.1 / X Window System
> (protocol Version 11, revision 0, vendor release 6300)
>  :
> (**) SVGA: wd90c24: No MCLK specified in 'Clocks' line.  Using default 45
> (**) SVGA: chipset:  wd90c24
> (**) SVGA: videoram: 512k
> (**) SVGA: clocks:  25.18  28.32  28.32  28.32  28.32
> (**) SVGA: Option "swap_hibit"
> (**) SVGA: Using 8 bpp, Depth 8, Color weight: 666
> (--) SVGA: Maximum allowed dot-clock: 90.000 MHz
> (**) SVGA: Mode "640x480": mode clock =  25.175, clock used =  25.175
> (**) SVGA: Mode "640x400": mode clock =  28.320, clock used =  28.320
> (--) SVGA: Virtual resolution set to 640x480
> (--) SVGA: SpeedUp code selection modified because virtualX != 1024
> (--) SVGA: PVGA1: SpeedUps selected (Flags=0xf)
> 
> これはDeviceセッションのChipsetをwd90c24に設定した時の結果なのですが,
> Chipsetを定義しないとwd90c[23]と表示されました。

すくなくとも "WD90C" までは当っているわけですね。あとは wd driver の中を
いじくってみれば、このへんの認識の仕組みがわかるでしょう。

# 時間があればやってみると面白いです。無理にとはいいませんが。

> > XF86_SVGA の "SVGA" は、画面解像度と結びつけて使われる、いわゆる
> > "VGA", "SVGA", "XGA", "SXGA" などの呼び方とは関係ありません。
> 
> これはまったく知りませんでしたm(_ _)m
> てっきりXF86_VGAはVGAのビデオカード(出力??)しか対応しておらず,カタログに
> VGAと書かれているPCではXF86_SVGAは使えないのだと思っていました。

「よくある誤解」(私も昔そう思っていた) です。もしどこかで誰かがそういうことを
言っているのを見かけたら、訂正してあげてください。

> > > 自分の場合も同様の現象になり、たしか XF86Config の Modeline の行を
> > > いろいろいじって表示が可能になったと記憶しています。
> > 
> > まずは startx のログをじっくり調べることですね。
> 
> はい,まずModelineを計算して試してみようと思います。
> 
> > # http://xjman.dsl.gr.jp/ からダウンロードできる xjdoc 0.3 に
> > #  modelines.txt という XF86Config の Modeline 行についての
> > # 解説が収録されているので、一度読んでみてください。
> 
> ↑をずーーーと探していました。X Windowの解説書には書かれていたのですが
> 買うことができなくて...ありがとうございました。

先程、ようやく  ftp.xfree86.org から 3.3.5 の Xjdoc.tgz を入手して
チェックしたんですが、これにも modelines.txt が含まれてますね。
たぶん 3.3.4 にも入っていたはずだろうと思います。

# しかし、Debian Package には収録されてないだろうな、、、

> ただ,一つだけ疑問があります。
> X -probeonlyを実行したところ(*1)のように640x480の8bppとして認識されている
> のですが実際にstartxやxinitを行うとなぜかSVGAサーバではなくVGA16とMONOで
> 立ち上げようとします。そして,それらのXF86はwd90c24をサポートしていないと
> でて落ちてしまいます。
> もちろん/usr/X11R6/bin/XはXF86_SVGAのシンボリックリンクになっています。

これ (シンボリックリンク) は、おそらく何かの解説書か見たのではないかと
思われますが、Debian では通常 /usr/X11R6/bin/X は X server への
シンボリックリンクでは「ありません」(強調)。

 X server は VRAM (ハードウェア) を直接いじったりするので動作に root 特権が
必要なのですが、 X server 自体を root に suid するとセキュリティ上の問題が
起きる可能性が高いんで、もっと単純なプログラムを wrapper として suid しておき、
実際の X server はこれを通じて root 特権を得る、という仕組になっているはずです。

# X ではなく Xwrapper (xwrapper ?) という名前のプログラムを使うシステムもある。
# Debian の /usr/X11R6/bin/X は xserver-common package に収録されている。
# なお、最近の XFree86 では xinit がデフォルトのサーバーとして
#  /usr/X11R6/bin/Xwrapper を使うようになっていた 
# (string `which xinit` するとパス名が読める) と思います。

> なぜX -probeonlyではXF86_SVGAが認識されるのにxinitやstartxではVGA16と
> MONOが認識されてしまうのでしょうか。

もしかすると /usr/X11R6/bin/Xwrapper があったりしませんか ?

 xinit は先に /usr/X11R6/bin/Xwrapper へアクセスして、これが実行可能なら
こちらを使います。もし Xwrapper が存在しないか、あるいは実行不可能な場合
に限って "X" というプログラムを実行しようとします。
 
Debian 標準では /usr/X11R6/bin/Xwrapper を使わずに、/usr/X11R6/bin/X を
 Xwrapper 相当の wrapper プログラムとして使っているようです。

なお XFree86 標準の Xwrapper のコードは xc/Xserver/os/wrapper.c に
あるんですが、こいつは /usr/X11R6/bin/X を実行しようとするみたいです。

Debian の /usr/X11R6/bin/X は /etc/Xserver を読んで、その一行目に
書いてあるサーバーを実行しようとするみたいですね。あと /etc/X11/X も
見てるみたいです。こいつのコードは Debian のパッケージソースの中の
 debian/xserver-wrapper.c みたいですね。 xfree86-*.diff.gz に中身が
全部入っているので、.orig.tar.gz を持ってこなくてもコードを見ることが
できます。(このコードは GPL License なのでおそらく XFree86 に採用される
ことは無いでしょう。)

> 最後に迷惑かもしれませんが,上記の症状になった時のstartxのログを
> 載せさせて頂きます。
> 何か根本的な勘違いをしているのでしょうか...

このログは XF86_VGA16 が出力したものでしょうから、上の疑問 (xinit や
 startx に関する) の答えを得ることはできないだろうと思います。

-- 
     #わたしのおうちは浜松市、「夜のお菓子」で有名さ。
    <xlj06203@xxxxxxxxxxx> : Taketoshi Sano (佐野 武俊)