2. 作業まで

注意: 以下の作業は全て、root としてログインして行なってください。

ここに並べた順番に従う必要のない別々のステージが 3 つ あります (自由に想像してください)。そのステージとは −

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

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

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

sh Xinstall.sh -check

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

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

extract[.exe]Xdoc.tgzXvar.tgz
Xbin.tgzXfenc.tgzXxserv.tgz
Xlib.tgzXfnts.tgzXmod.tgz
Xman.tgzXetc.tgz 

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

sh Xinstall.sh

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

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

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

どちらの kernel でも、ここ から入手する ことができます。当然、README と呼ばれるあらゆるファイルをその時に読んで ください (2.4.x kernel に附属している README 文書には、ソースをどこに解凍するかについて重要な注記があります。忘れずに読んでください)。kernel ソースファイルを /usr/src/kernels に保存し、私が linuxnewbie の記事 (もし私の指示がわかりにくければこれを参照してください。 ただし、2.2.x kernel 限定です) で学んだ以下のコンパイル手順を実行してください。 記事は、 このアドレス で見ることができます。 もちろん、まだ圧縮されている 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 の過程で一番意味のある ステージは −

注意: 上の説明は、読者が 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

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

付記: これは、このセクションへのいわば追伸のようなものですが、役に立つと思います。 私はこの 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 ファイルに上の節が欠けていると思ってよいでしょう。