i810 with XFree86 4.x HOWTO

Toby Russell

May 2001

Revision History                                                       
Revision 1.1            2001-05-09          Revised by: tr             
Revision 1.0            2001-05-01          Revised by: tr             
Initial release.                                                       

この HOWTO では、カーネル 2.2.18 と 2.4.x の特別な機能を使って、Intel
の i810 グラフィックチップセット上で XFree86 4.x を動作させる方法を説明
します。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Table of Contents
1. はじめに
2. 作業まで
   
    2.1. X4.x の入手とインストール
    2.2. kernel 2.2.18 か 2.4.x (mknod とagpgart含む) の入手とコンパイ
        ル
    2.3. XF86Config をさくっといじる
   
3. 謝辞

1. はじめに

この文書には、非常に明確な目的があります− Intel の i810 グラフィックチ
ップセット (以後 "i810") 上で X を動かすのに失敗している人の手助けをす
ることです。これは初心者 (私です) によって書かれ、主として他の初心者達
が使うことを想定したものです。著者は、よりスキルのある人の助けになった
と聞けば喜ぶでしょう。なお、私は i810 が XFree86 3.3.6 で動作することを
知っていますが、個人的にはその道を通っていません。私の経験は、純粋に
XFree86 4.0 (以後 "X4.x") とカーネル 2.2.18 及び 2.4.x で利用できる
i810/agpgart サポートから来るものです。それゆえに、この HOWTO はその解
法や手続きに取り組むだけです。以後の手引きは 2.4.x のコンパイルに合わせ
て書かれていますが、手順は同様なので、十分 2.4.0 に置きかえることができ
ます。トニー・ブザンの言ですが、頭を使ってください。そして、必要とされ
る変更を把握するため、README を読んでください。

この手順が機能することを知っているとはいえ、ここに記録したことは、ほと
んど私自身の不器用な方法で解決した内容だということを告白せねばなりませ
ん。多分以下の手順より早くて効果的な方法を知っている人はきっといます。
もしそうなら、それを伝えてもらえると嬉しいです。前に触れたように、Intel
がデザインしたドライバ (すなわち XFCom_i810_1.2-3 と I810Gtt-0.2-4) を
併用することで、i810 は XFree86 3.3.6 では動作しますが、Linux の純粋性
という関心の面で、そしてもちろん必ずしも Intel のソフトウェアを使う必要
がないということを知る上で、ここに詳説した方法をお勧めします。これだと
Intel のドライバは不要です。

最後に、以下の注意の言葉で序文を締めくくりたいと思います−この HOWTO が
手引きの基本セットと見なされ、ゆえに関連する全 README 文書を入手して追
随されるべきだと思います。以下の記述は、どう想像をたくましくしてみても
網羅的なものではありませんし、少なくとも初心者には、前記の README 文書
が必要です。 

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

2. 作業まで

    注意: 以下の作業は全て、root としてログインして行なってください。
   
ここに並べた順番に従う必要のない別々のステージが 3 つあります (自由に想
像してください)。そのステージとは− 

 ・ X4.x の入手とインストール
   
 ・ kernel 2.2.18 か 2.4.x の入手とコンパイル (mknod agpgart 関係も含
    む)
   
 ・ XF86Config をさくっといじる
   
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

2.1. X4.x の入手とインストール

最初のステージはもちろん、おそらく i810 で XFree86 3.3.6 を動かそうとし
て失敗した、あるいはおそらく X4.x が i810 をサポートしてることを聞いた
こともなく無駄に XF86Config ファイルととっくみあっている、そういう人む
けの手引きとしてリストされているだけです。これらの指示を有用だと思うほ
とんどの人は既に X4.x をロードしているものと思います。読者のほとんどは
この部分を飛ばせるでしょう。ともあれ、もし知る必要があるなら、X4.x はこ
こ (ftp://ftp.xfree86.org/pub/XFree86/4.0/binaries) から入手することが
できます。

ただし、がむしゃらに進んでダウンロードする前に、最初に X4.x スイートの
どのバージョンが自分のシステムに適しているか確かめねばなりません。です
ので、 (Xinstall.sh) があるフォルダの中から) 単独でダウンロードして実行
してください (Xinstall.sh があるフォルダの中から) − 

sh Xinstall.sh -check

スクリプトの結果は、上記の URL 内の正しいフォルダを示すでしょう。そこか
らシステムに適したファイルをダウンロードできます。

基本的なインストールのため、そしてダウンロード時間を省くために説明して
おきますと、例外なく以下のものが絶対必要になります (他のものはオプショ
ンであり、私が思うに、インストール過程で含まれていると、不注意や未熟さ
のためにことが悪い方向へ向かう可能性が増えます)。

extract[.exe] Xdoc.tgz  Xvar.tgz  
Xbin.tgz      Xfenc.tgz Xxserv.tgz
Xlib.tgz      Xfnts.tgz Xmod.tgz  
Xman.tgz      Xetc.tgz            

これで、どのファイルのセットが自分のシステムに適しているか分りました。
先に進んでどのスイートでもダウンロードできます。それから、(新たにダウン
ロードしたファイルのあるフォルダから) 以下のコマンドでインストールして
ください−

sh Xinstall.sh

ここまでちゃんとしていれば、全ては円滑に進むでしょう。いくつか質問をさ
れるでしょうが、これには私よりも README ファイルの方がよりよく説明/回答
してくれます。何か期待した通りに動かないものがあるなら、きっちりと熟読
するべき、はるかに詳しい前述の README ファイルをおすすめします。初心者
らしく、私はダウンロードやインストール、コンパイルはおろかトイレに行く
ために席を立つ前ですら readme を読みます。完全にわかることはありえない
のです。

これで、このステージは終了です。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

2.2. kernel 2.2.18 か 2.4.x (mknod とagpgart含む) の入手とコンパイル

 どちらの kernel でも、ここ (ftp://ftp.kernel.com) から入手することがで
きます。当然、README と呼ばれるあらゆるファイルをその時に読んでください
(2.4.x kernel に附属している README 文書には、ソースをどこに解凍するか
について重要な注記があります。忘れずに読んでください)。kernel ソースフ
ァイルを /usr/src/kernels に保存し、私が linuxnewbie の記事 (もし私の指
示がわかりにくければこれを参照してください。ただし、2.2.x kernel 限定で
す) で学んだ以下のコンパイル手順を実行してください。記事は、このアドレ
ス (http://www.linuxnewbie.org/nhf/intel/compiling/kernel_update.html)
で見ることができます。もちろん、まだ圧縮されている kernel の置き場所は
本当はどこでも構いません。ただ一つ重要なのは、便利な場所で解凍する、と
いうことです。それじゃ、コマンドを打ちましょう−

tar -xzvf /usr/src/kernels/linux-2.4.x.tar.gz

あるいはより圧縮率の良い bz2 版をダウンロードしたのなら、

bzcat /usr/src/kernels/linux-2.4.x.tar.bz2 | tar xv

それでは、何が起きているのか、画面の出力をよく見てください。終わったら
、新しい linux フォルダができているはずです。

いいでしょう、では新しいディレクトリに移動します−

cd linux

そして、適切にコンパイルをはじめてください……。

make config

あるいはむしろ

make menuconfig

make xconfig という選択肢もあるにはありますが、まだ X は走っていません
。さもなくばこれを読んでるはずがありません。ですから、使うことはできま
せん。こんな不完全なやり方でこのことに触れるのは気恥ずかしいのですが、
make oldconfig というのもあります。ですが、私の持つ書籍の中に、これにつ
いての言及を見つけることはできませんでした。いずれにせよ、私はここでは
これについて触れません。もしあなたが不便に思って、それを使いたければ、
その過程は make menuconfig によるものと非常に似ていると確信しています。

さて、私はテキストベースの kernel コンパイルを 3 回ほど行い (make
config)、それが如何に長く曲がりくねっているか知りました。私は make
menuconfig を代わりに使うのをおすすめします。これは、ncurses のロードを
要求するだけ (X は不要) で、kernel 再コンパイルをきれいな外観で行うこと
ができるでしょう。私は Red Hat 6.1 のカスタムインストールで ncurses を
入れてましたが、この時点ではこの選択ができることを完全に忘れていました
。一方、あなたのディストリビューションの CD には rpm 形式で ncurses が
あると思いますので、もし make menuconfig がただエラーを返すなら、
ncurses の rpm をインストールしてもう一度やってみてください。

私達特有の問題を解決するために make の過程で一番意味のあるステージは−

 ・ 前もって (ハイライトされている一番最初の選択肢で return を押し、そ
    の結果現れる唯一のサブオプションを選ぶことで) EXPERIMENTAL を選ぶこ
    と、
   
 ・ 基本オプションの下の方へいって、キャラクタデバイスに入り、 "/dev/
    agpgart (AGP) support" (上の指示に従った場合のみ出現します) を選択
    します ( "M" ではなくて "*" で)。それから、
   
 ・ "/dev/agpgart (AGP) support" (繰り返しますが、モジュール "M" ではな
    くて kernel への静的な組みこみ "*" として、です) の適切なサブオプシ
    ョン、つまり "I810/I810 dc100I810e support" を選択します。
   
    注意: 上の説明は、読者が make menuconfig を実行したことを想定してお
    り、それを make が代わりに実行された状況に対応づけるには、多少頭を
    ひねる必要があるでしょう。とはいえ、ほんの少しです。
   
(これらの機能をモジュールとしてロードする方がより論理的だと指摘されまし
た。というのも、これらは startx が実行されるまでは必要とされないからで
す。私はまだ「ローダブルモジュールの方法」を試していませんし、テストし
た後で HOWTO のこのセクションを追記すると思います。私がここで静的なやり
方をおすすめするのは、この過程をテストバージョンの 2.4.x kernel で実行
し、静的なロードがより安全で安定した方法であると思えるからです。今では
2.4.x は公式にリリースされており、モジュールは多分よりまともになってい
るでしょう。私は、それがどんな状況なのか記載するつもりです。 (このこと
について、Heron Ordonez に感謝します)

全て終了して十分に落ちついたら、このようにします−

make dep                                             
make clean (not violently necessary but does no harm)
make bzImage (takes a while, this bit)               
make modules                                         
make modules_install                                 

では、/boot ディレクトリを見てみましょう。おそらく、System.map という
System.map-[kernel バージョン] へのシンボリックリンクと、vmlinuz という
vmlinuz-[kernel バージョン] へのシンボリックリンクがあると思います。こ
の配置は全てではないですが多くのディストロ (訳注:ディストリビューショ
ン) で通用します。vmlinuz を / にあるのに、System.map は /boot にあるよ
うなものがあると思います。どんなケースであれ、頭を使ってこれらの指示を
それに合うように適用してください。ですから、基本的には、このようにして
シンボリックリンクを削除する必要があります−

rm System.map
rm vmlinuz   

それから「名前を変更しつつ実は今作ったファイルで上書きする」カーネル関
連ファイルへの新しいシンボリックリンクを作成する必要があります。それに
はこのようにします (i386 のコンピュータを使っているという前提で) −

cp /usr/src/linux/arch/i386/boot/bzImage /boot/vmlinuz-2.4.x
ln -s /boot/vmlinuz-2.4.x /boot/vmlinuz                     
cp /usr/src/linux/System.map /boot/System.map-2.4.x         
ln -s /boot/System.map-2.4.x /boot/System.map               

    Tip: もし /boot にいるなら、絶対パスを使う必要はありません。しかし
    、過度に用心深い性格で、絶対パスを使うのであれば、シンボリックファ
    イルにもっと長い名前を使ってください。実際、根本的に、最低限として
    は、vmlinuz という名前のカーネルを一つと、他の全てをバージョン番号
    で名付け (あるいは単にそれらを捨てるとか！)、別のカーネルを起動した
    い時は、名前を入れかえるのです。あるいは、各カーネルに独自の名前を
    つけ、それぞれに /etc/lilo.confのエントリを用意することもできます。
    読者次第です。
   
次に、/etc/lilo.conf を編集しなくてはなりません。

image=/boot/vmlinuz                                                  
label=[what-ever-you-want-that-is-relevant-easy-to-type-and-remember]
read-only                                                            
root=/dev/hda[n]                                                     

lilo.conf の編集が済んだら、こうします−

/sbin/lilo

こうして、新鮮でピカピカの、新しい Linux kernel のことを lilo が知りま
す。でなければ (私はこれを経験しました)、新しいカーネルでは起動すること
ができません。実に間抜けなことになります。ではこれの後で、深呼吸して、
再起動してください。新しいカーネルを選んだら、指を組んでじっと見守りま
す。無事起動するはずです。起動したら少しばかり浮かれましょう。ただし、
それで頭をヤられてはいけません。というのも、このようにして、単純ではあ
るけれども重要な、agpgart モジュールを mknod するという手続きが必要だか
らです−

cd /dev               
mknod agpgart c 10 175

基本的にはこれで、i810 チップセットと X サーバをあたかも「とりもつ」よ
うな、非常に本質的な (X はこれなしでは走りません) キャラクタデバイスが
作成されます。 (Heron Ordonez のおかげで私はここで恥をかかずにすみまし
た)。かなり技術的にいろいろあるところですが、この説明で勘弁してください
。

これで、このステージは終わりです。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

2.3. XF86Config をさくっといじる

私は、かなりこの作業を行ないました。23 回も続けて失敗すれば、大変長った
らしくてうんざりです。声を大にして言いますが、注意して、しっかりとマニ
ュアルページを読んでください(コマンドプロンプトで man XF86Config を実行
します)。まず最初に、全く不親切な xf86config (小文字のままで！) を実行
して、ベースとなる XF86Config ファイルを生成するようにおすすめします。
これは、他のツールだと、私の経験では X4.x とは互換性のない XF86Config
ファイルを生成するみたいだからです。 xf86config の質問にざっと答えてい
って、カードの項目まで来たら、そこに選ぶべき選択肢はありませんので、何
も選ばないでください。後ほど、基本のファイルを作成した後で、必要な要素
を追加します。では、可能な限りの質問に全て答え終えたら、ファイルを /etc
/X11/XF86Config としてセーブしてください。

さて、最後に、重要な追加項目はこれらで全てです−

Section "Device" 
Identifier "i810"
Driver "i810"    
VideoRam "4096"  

これは、Graphics Device セクションに挿入されねばなりません。いずれにせ
よ、好みで既存の "Device" セクションを編集することもできるはずです。そ
れからは、X のために i810 を定義するのに、"Device" フィールドを見つける
度に "i810" と入力していきます。例として、私の XF86Config から一組のセ
クションを含めています。できれば、私の意図するところが明確になればいい
のですが−

Section "Device" 
Identifier "i810"
Driver "i810"    
VideoRam "4096"  

Section "Screen"           
Identifier "Screen 1"      
Device "i810"              
Monitor "Highscreen 17inch"
DefaultColorDepth 24       
SubSection "Display"       
Depth 8                    
Modes "1024x768"           
EndSubSection              
SubSection "Display"       
Depth 15                   
Modes "1024x768"           
EndSubSection              
SubSection "Display"       
Depth 16                   
Modes "1024x768"           
EndSubSection              
SubSection "Display"       
Depth 24                   
Modes "1024x768"           
EndSubSection              
SubSection "Display"       
Depth 32                   
Modes "1024x768"           
EndSubSection              
EndSection                 

┌──────────────────────────────────┐
│                              Warning                               │
├──────────────────────────────────┤
│私が、X へのオプションとして "1024x768" のみ与えていて、デフォルトの│
│色深度を 24 bit にしているのがわかると思いますが、これは、私がこの方│
│法を好むからです。加えて、i810 は私の 17" モニタでは、その解像度と色│
│深度でたやすく動作してくれます。21" のモニタでどう動くかは分りません│
│。実験すればわかるでしょう。                                        │
└──────────────────────────────────┘

うんざりしながらもう一度言っておきますが、私がここで与えることができる
より完全に XF86Config ファイルのナゾを理解するのは、マニュアルページ
(上記参照) をしっかり読むことでなしとげることができます。これからきっと
発生するであろう、ここでは触れられていないあらゆる問題を解決する見込み
が欲しいなら、これは本当に重要なことです。

これで完了です。では、XF86Config を保存して、これを実行します−

startx

動いたはずです。私の場合は動きました。幸せになれたと思います。うまくい
かないようでしたら、<trussl@hotmail.com> で私と連絡をとれば、手助けする
よう努力します。

    付記: これは、このセクションへのいわば追伸のようなものですが、役に
    立つと思います。私はこの HOWTO の XF86Config 部分を試験的に実行して
    いる時、ささいな問題にぶつかりました。それは、読みはしたものの完全
    には理解していなかった、i810 と X4.x がバッファ拡張 (あるいはその同
    類) のもとでは、全ての解像度で動作しないことに関する宣伝文によるも
    のでした。ともあれ、私はこのことについてメモをとらなかったので、自
    分が読んだものを正確には思いだせません。私はこれについてぼんやりと
    しか覚えていないので、確信をもって言えるのはこれだけです−
    XF86Config ファイルの最初に、以下の節が必要となります。
   
    # This loads the DBE extension module                            
    Load "dbe" # Double buffer extension                             
    # This loads the miscellaneous extensions module, and disables   
    # initialisation of the XFree86-DGA extension within that module.
    SubSection "extmod"                                              
    Option "omit xfree86-dga" # don't initialise the DGA extension   
    EndSubSection                                                    
   
    ですから、もし X が "shape extender" や "shape extension" について
    のエラーを出すようなら、おそらく XF86Config ファイルに上の節が欠け
    ていると思ってよいでしょう。
   
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

3. 謝辞

i810 と X4.x の問題を修正する方法を知ることは、Val Henson という先達の
努力がなければなしえませんでした。彼は、私の作業を指導し、最初の時点で
2.4.0 kernel の使用を勧めてくれました。それから、この改訂版においては、
Heron Ordonez にも謝意を述べたいと思います。彼からは、ここで私が一部説
明したこと (そしてゆくゆくはきっちり説明したいと思っていること) につい
ての問題の指摘を受けました。Curtis Stone は私が 2.4.0 kernel でのみ使え
ると思っていた機能が 2.2.18 でも使えると教えてくれました。彼にも感謝を
。それから、2.4.x カーネルは /usr/src/linux で解凍してはいけないと教え
てくれた Cameron kerr にも恩義があります。この指摘があるまで、私は
2.4.x では成功していなかったのですが、添付の README を読んで、すなわち
私自身の手引きに従ってさえいれば、成功していたでしょう。

こういう風にこの(訳注：感謝の)過程を続けていると、一日でこの HOWTO 中一
番大きいセクションになってしまいます。この過程は開かれており、(もちろん
丁寧な言葉遣いで！) どんなコメントも歓迎です。

