次のページ 前のページ 目次へ

3. カーネル設定の実際

3.1 ソースの入手

ftp.kernel.org/pub/linux/kernel/vx.y から anonymous(匿名) FTP でソースを入手することができます.ここで x.y は前に説明したようなバージョンであり,奇数で終わるものは 開発リリースなので不安定かもしれません. たいていは linux-x.y.z.tar.gz (x.y.z がバージョン)と いう名前が付けられています.普通はこのサイトには拡張子 .bz2 が付いているファイルもあります.これは bzip2 で圧縮されているファイル です(このようなファイルはサイズが小さく,転送時間を節約することができ ます).

できるだけ ftp.xx.kernel.org (xx は国コード)を使うと よいでしょう.例えばオーストリアでは ftp.at.kernel.org, アメリカでは ftp.us.kernel.org となります.

3.2 ソースの展開

root としてログインするか suして root にな り,/usr/srccd します.最初 Linux をインストール した際にカーネルのソースをインストールしていれば(普通はそうでしょう), linux というディレクトリがあるはずです.そこには古いソースツ リー全体が含まれています.ディスクの容量が十分にあり,かつ安全策を取る ならこのディレクトリは残しておきましょう. 今現在のシステムのバージョンを調べて,このバージョンにあわせてディレクトリ 名を変えておくとよいでしょう.`uname -r' で現在のカーネル バージョンを表示できます.ですから,`uname -r' で `1.0.9' と表示されたら,`linux' を (`mv'で) `linux-1.2.8' というファイル名に変えます.まあ,ちょっと向こ う見ずのあなたは,ディレクトリごと消してしまいましょう.いずれにせよ, ソースコードを展開する前に /usr/src に `linux' とい うディレクトリが存在しないことを確認してください.

では,/usr/src で `tar zxpvf linux-x.y.z.tar.gz' と してソースを展開します(ファイル名の最後が単に .tar となってい て .gz がついていない場合は `tar xpvf linux-x.y.z.tar' で展開できます.展開中にはソースの中身が画面に表示されていきます.展開 が終了すると, /usr/src に新しい `linux' ディレクト リができています.linuxcd し,README ファ イルを読んでください.`INSTALLING the kernel'と いう題のついた章があります.説明に適宜したがって,必要なシンボリックリ ンクを張ったり,古い.oファイルを消去するなどしてください.

ファイルの拡張子が .bz2 であり,bzip2 プログラム(詳しくは http://www.muraroa.demon.co.uk/ を参照)をお持ちであれば以下の コマンドで展開してください:

     bz2cat linux-x.y.z.tar.bz2 | tar xvf -

3.3 カーネルの設定

注: このうちいくつかは Linus の README ファイルの繰り返しだっ たり説明だったりします.

/usr/src/linux ディレクトリで `make config' コマンド を実行すると,設定スクリプトが起動し,色々な質問をしてきます.このスク リプトは bash を必要とするので,bash が /bin/bash, /bin/sh, $BASH のいずれかにあることを確認して ください.

しかし,`make config' よりもずっといいものがいくつかあります. それらの方がずっと簡単で使いやすいでしょう.`make menuconfig' がたぶん一番使われています. どれを使うか決める時には,そのインターフェースを使ってみるのが一番です. というのも,考えるよりも早く答えが出るからです. 「X を使っている」人は,`make xconfig' を試すとよいでしょう. ただし Tk が必要です(`click-o-rama' - Nat). `make menuconfig' は,(n)curses を持っており,テキストベース のメニューが好きな人にお勧めです.これらのインタフェースにはかなりはっ きりとした利点があります: 設定の時にしくじって選択を誤った時に,簡単に 前に戻って直すことができます.

`make menuconfig' と `make xconfig' では,設定オプショ ンは階層的に表示されます.

これで質問に答える準備ができました.普通は `y'(はい)あるいは `n'(いいえ)で答えていきます.デバイスドライバにはたいてい `m' オプションがあります.これは ``モジュール''を意味しており, カーネルのコンパイル時にコンパイルは行なわれますが,カーネルに直接組み 込まれるわけではなく,ロード可能なモジュールとしてコンパイルされるので す.この `m' をもっとふざけて説明しますと,これは ``maybe'' (多分)です.簡単だったりあまり重要でないオプションについては,ここでは 触れません.「他の設定オプション」の章にいくつかのオプションの簡単な説 明があります.`make menuconfig' を使っている場合は,スペース バーによって選択状態が変わります.

2.0.x 以降のカーネルでは,`?' オプションがあります.`?' キーを押すと, 設定パラメータの簡単な説明が表示されます.この情報はたぶん最新でしょう. 以下では重要な機能いくつかについて,その機能がある階層と簡単な解説を示 します.

Kernel math emulation [カーネルの数値演算エミュレーション] (Processor type and features)

数値演算コプロセッサがない場合(素の 386 や 486SX の場合),この項目には `y' と答えなければいけません.コプロセッサがあるのに `y' と答えても気にする必要はありません -- ちゃんとコプ ロセッサが使用され,エミュレーションは行なわれません.割と新しいマシン だったら答えは `n' でしょうが,間違って `y' と答えて も気にすることはありません.必要無ければ,この機能は使われません.

Normal (MFM/RLL) disk and IDE disk/cdrom support[通常(MFM/RLL)のディスクと IDE ディスク/CDROM サポート](Block Devices)

この機能はサポートする必要があるでしょう.ほとんどの人が持っている,PC 標準のハードディスクをカーネルがサポートするということですから.このド ライバには SCSI ドライバは含まれていません.設定の後の方で出てきます.

続いて ``old disk-only'' と ``new IDE'' のドライバについて聞かれます. このうちどちらかを選択してください.大きな違いは,古いドライバは 1 つ のインターフェース上の 2 つのディスクのみをサポートしますが,新しい方 はセカンダリインターフェースと IDE/ATAPI の CD-ROM をサポートします. 新しいドライバは古い方よりも 4 kB 大きいですが多分「改善」されています. すなわち,含まれているバグの数は別にして,特にハードウェアが新しい (EIDE タイプ)場合にはディスクの性能が向上します.

Networking support [ネットワークのサポート](General Setup)

インターネットのようなネットワークに接続されていたり,SLIP や PPP, term などを使ってインターネットへのダイアルアップ接続を行うのであれば `y' と答えます.しかし,多くのソフトウェアパッケージ(例えば X ウィンドウシステム[日本語変換システムも])は,たとえマシンがネットワー クに接続されていなくてもネットワークサポートを必要とします.ですから `y' と答えなければなりません.後で TCP/IP ネットワークが必要 かどうか質問されますが,よくわからなければここでも `y' と答え ておいてください.

System V IPC (General Setup)

IPC(Inter-Process Communication, プロセス間通信)のもっとも的確な定義の 一つは Perl book の用語一覧にあります.おどろくほどのことではないです が,Perlのプログラマーの中にはプロセス間で会話をさせるために IPC を 利用する人がいますし,他にもこれを利用しているパッケージがあります(もっ とも有名なのは DOOM でしょう[漢字コンソール KON もこれを利用していま す]).ですから,よくわからない場合はこれに `n' と答えてはい けません.

Processor family [CPU のタイプ](Processor type and features)

(古いカーネルでは: Use -m486 flag for 486-specific optimizations)

従来は,このオプションでは特定の CPU 用に最適化したコンパイルを行なっ ていました; カーネルは他の(最適化した以外の)CPU でも良好に動作しますが, カーネルは少々大きくなりました.しかし新しいカーネルでは,このことは必 ずしも当てはまりません.ですから,カーネルをコンパイルするマシンの CPU を必ず入力しなければなりません.``386'' 用カーネルならばすべてのマシン で動作するでしょう.

SCSI support [SCSI のサポート]

SCSI デバイスを持っていたら `y' と答えてください.CD-ROM やディ スクのサポート,およびどの SCSI アダプタを使用するか等がさらに質問され ます.詳細は SCSI-HOWTO を参照してください.

Network device support [ネットワークデバイスのサポート]

ネットワークカードを持っていたら,あるいは SLIP,PPP やパラレルポート アダプタを使ってインターネットに接続するのなら `y' と答えてく ださい.使用するカードやプロトコルについての質問があります.

Filesystems [ファイルシステム]

設定スクリプトは,以下のファイルシステムをサポートするかどうかを聞いて きます:

Standard (minix) - 最近の Linux は minix ファイルシステムを作成しませ んし,ユーザも普通は使用しません.しかし,使用するように設定しておいた 方がよいでしょう.なぜなら「復旧ディスク」のプログラムにはこれを使うも のがありますし,多くのフロッピーが minix ファイルシステムを使っている からです.というのも,minix ファイルシステムはフロッピーでの使用に適し ているからです.

Second extended - これは Linux 標準のファイルシステムです.ほぼ確実に このファイルシステムがあるはずなので,`y'と答えなければなりま せん.

msdos - ハードディスク上の MS-DOS パーティションを使用したり,MS-DOS フォーマットのフロッピーディスクをマウントするなら `y' と答え てください.

他のオペレーティングシステムのファイルシステムもいくつか使用できます.

/proc - (多分ベル研のアイディアのパクリだと思います) ディスク上に proc というファイルシステムが作られるわけではありません.これはカーネルとプ ロセスのインターフェースとなるファイルシステムです.多くのプロセスリス ト表示プログラム(`ps' など)がこれを使用します. `cat /proc/meminfo' や `cat /proc/devices' などを後 で試してみてください./proc/self/fd(他のシステムでは /dev/fdとして知られる)を I/O に使用するシェルもあります(特に rc).ほとんどの場合 `y' と答えなければなりません.Linux の重 要なツールの多くがこのファイルシステムに依存しています.

NFS - ネットワークに接続されていて,他のシステム上にあるファイルシステ ムを使用するなら `y' と答えてください.

ISO9660 - ほとんどの CD-ROM が使用しています.CD-ROM ドライブを持って いて,これを Linux でも使うつもりなら `y' と答えてください.

でも私はどのファイルシステムを使ったらいいの?

`mount'とタイプしてみましょう.出力はこんな感じです:

    blah# mount
    /dev/hda1 on / type ext2 (defaults)
    /dev/hda3 on /usr type ext2 (defaults)
    none on /proc type proc (defaults)
    /dev/fd0 on /mnt type msdos (defaults)

それぞれの行を見てください;`type' の次の単語がファイルシステ ムの種類です.この例では //usr のファイルシステ ムが second extended です.私は /proc も使用しています. msdos ファイルシステムを利用してマウントしたフロッピーディスクもありま す.

現在 /proc を利用できるなら,`cat /proc/filesystems' とタイプしてみてください.カーネルが現在使用可能なファイルシステムが表 示されます.

あんまり使わない,それほど重要でないファイルシステムを使用できるように設 定すると,カーネルが不必要に大きくなってしまいます.対処法についてはモ ジュールに関する章を,また大きくなったカーネルが好まれない理由について は「落とし穴」の章を参照してください.

Character devices [キャラクタデバイス]

ここではプリンタ(パラレルプリンタのことです),バスマウス,PS/2マウス (多くのノートパソコンは内蔵ポインティングデバイスで PS/2 プロトコルを 使用しています),いくつかのテープドライブ,その他のキャラクタデバイス の設定ができます.必要なものについて `y' と答えてください.

注:gpm は X ウィンドウシステムでなく仮想コンソール間で,マウ スを用いたカット&ペーストを行うためのプログラムです.シリアルマウ スを使用しているなら,容易に X と共存できるので便利です.しかし他のマ ウスではちょっと面倒です. [gpm-R オプションをつければ X と共存できます. また,真鍋さん multimouse はノートパソコンユーザーの方にお薦めです.]

Sound [サウンドカード]

どうしてもbiffが吠えるのを聞きたい[biff コマンドの 名前の由来は,郵便屋さんが来ると吠える犬です]のなら `y' と答 えてください.あとで別の設定プログラムがサウンドボードに関する質問をし て設定します.(サウンドカードの設定に関する注:設定プログラムがドライ バをフルインストールするかどうかを聞いてきたら `n' と答え,必 要と思われる機能のみを選択できます.カーネルの使用するメモリを節約でき ます.)

本気でサウンドカードをサポートするなら, http://www.linux.org.uk/OSS/ にあるフリーのドライバと, http://www.opensound.com/ にある商用の Open Sound System を両 方調べるとよいでしょう.

他の設定オプション

設定オプションは頻繁に変化しますし,自明だったりしますので(例えば 3Com 3C509 イーサネットカードのためのデバイスドライバをコンパイルする等) すべてを紹介するわけではありません. Axel Boldt さん(axel@uni-paderborn.de)がまとめている,全オプ ションのわかりやすいリスト(設定スクリプトへの組込み方も)とそのオンライ ンヘルプがあります.Linux 2.0 では,これはカーネルのソースツリーに入っ ている Documentation/Configure.help という大きなファイルです.

Kernel hacking [カーネルハッキング]

>Linus の README から引用します:

「カーネルハッキング」を設定するとカーネルが大きくなったり遅くなったり (あるいはその両方)しますし,カーネルの問題(kmalloc())を見つけるため悪 いコードを積極的に中断しようとするルーチンが組み込まれますので,カーネ ルが不安定になったりします.ですから「製品版」のカーネルでは `n' と答えておくべきでしょう.

3.4 では何を?(Makefile)

make config が終ると,カーネルの設定が終ったというメッセージが表示 され,また「追加設定のためトップレベルの Makefile をチェック しろ」というようなメッセージが表示されます.

では,Makefile を見てください.多分変更する必要はないでしょうが, 見て悪いはずもありません.新しいカーネルができたら,そのオプションを `rdev' コマンドで変更することもできます.このファイルを見たときに わけがわからないと思っても,心配する必要はありません.


次のページ 前のページ 目次へ