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

3. カーネルコンフィギュアの実際

3.1 ソースの入手

ftp.funet.fi/pub/OS/Linux/PEOPLE/Linusやそのミラーサイト 等からanonymous(匿名)ftpでソースを入手することができます。たいてい linux-x.y.x.tar.gzという名前が付けられていて,x.y.zという のがバージョンです。より新しい(よりよい?)バージョンとパッチはたいてい `v1.1'や`v1.2'というサブディレクトリにあります。もっとも大 きい番号が最新バージョンで,普通は「テストリリース」なので,ベータやアルファ リリースはいまいちと感じたら,メジャーリリースに留まっておいたほうがよいでし ょう。

私はftp.funet.fiではなく,ミラーサイトを使うことを強く勧めます。こ こにミラーサイト等の簡単なリストを挙げます:

 日本:           theta.iis.u-tokyo.ac.jp:/pub2/Linux/sources/system
 米国:           tsx-11.mit.edu:/pub/linux/sources/system
 米国:           sunsite.unc.edu:/pub/Linux/kernel
 英国:           sunsite.doc.ic.ac.uk:/pub/unix/Linux/sunsite.unc-mirror/kernel
 オーストリア:   fvkma.tu-graz.ac.at:/pub/linux/linus
 ドイツ:         ftp.Germany.EU.net:/pub/os/Linux/Local.EUnet/Kernel/Linus
 ドイツ:         sunsite.informatik.rwth-aachen.de:/pub/Linux/PEOPLE/Linus
 フランス:       ftp.ibp.fr:/pub/linux/sources/system/patches
 オーストラリア: ftp.dstc.edu.au:/pub/linux/kernel

ftpを利用できない場合は,linux関連のファイルを持っているパソコン通信サービ スの一覧が,定期的にcomp.os.linux.announceに投稿されています。これを入手し てみてください。

3.2 ソースの展開

rootとしてログインあるいはsuし,/usr/srccdします。最初linuxをインストールした際に,カーネルのソースをインス トールしていれば(普通はそうでしょう),linuxというディレクトリが 存在するでしょう。そこには古い完全なソースツリーが含まれています。ディスク スペースが十分にあり,安全を期すならこのディレクトリは残しておきましょう。 今現在のシステムのバージョンを調べて,このバージョンにあわせてディレクトリ 名をリネームしておくのはいいことです。`uname -r'で現在のカーネル バージョンを表示できます。ですから,`uname -r'で`1.2.8'と 表示されたら,`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ファイルを消去します。

3.3 カーネルの設定

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

/usr/src/linuxで`make config'コマンドを実行すると,多く の質問に答えていくことでシステムを設定できるスクリプトが起動します。bash が必要ですので,bashが/bin/bash/bin/shあるいは $BASHであることを確認してください。

`y'(はい)あるいは`n'(いいえ)で質問に答えていきます。 デバイスドライバはたいてい`m'オプションを持っています。これは ``モジュール''を意味しており,カーネルのコンパイル時にコンパイルは行なわ れますが,カーネルに直接組み込まれるわけではなく,ロード可能なモジュール としてコンパイルされるのです。この`m'をもっと面白く説明致します と,これは``maybe''(多分)です。簡単だったりあまり重要でないオプション については,ここでは触れません。セクション「他の設定オプション」にいくつ かのオプションの簡単な説明があります。

2.0.xおよびそれ以降のカーネルでは,`?'オプションがあります。クエスチョン マークをタイプするおt,設定パラメータの簡単な説明が表示されます。

カーネルの数値演算エミュレーション(Kernel math emulation)

数値演算コプロセッサがない場合(386や486SXのみの場合),これには`y' と答えなければいけません。コプロセッサがあるのに`y'と答えてもそん なに心配する必要はありません -- ちゃんとコプロセッサが使用され,エミュレー ションは行なわれません。カーネルが大きくなる(RAMを余計に使用する)だけです。 わたしはずっとカーネルによる数値演算プロセッサのエミュレーションは遅いとい いい続けてきました; このことは本節とはほとんど関係ないですけども,Xウィン ドウシステムの性能が出ない時には,このことを思い出してください。

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

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

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

ネットワークサポート(Networking support)

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

下位16 MBまでのメモリの制限(Limit memory to low 16MB)

16 MB以上のRAMのアドレッシングに問題のある386 DMAコントローラが存在します。 そのようなDMAコントローラが載ったマザーボード(まれですが)を使用しているの なら`y'と答えてください。

System V IPC

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

CPUタイプ(386, 486, Pentium, PPro)

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

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

SCSIサポート(SCSI support)

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

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

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

ファイルシステム(Filesystems)

以下のファイルシステムをサポートするかどうかを聞かれます:

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

Extended fs - これは拡張ファイルシステムの最初のバージョンで現在はあまり使 われていません。必要であれば入れてください。よくわからないのなら必要ありま せん。

Second extended - 最近のlinuxで広く使用されています。`y'と答えなけ ればなりません。

xiafs filesystem - 以前はそんなに特殊なファイルシステムではなかったのです が,現時点ではこれを使用している人を知りません。

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

umsdos - このファイルシステムは長いファイル名など,MS-DOSにUnixライクな機 能を追加します。(著者のように)「DOSしない」人には意味がありません。

/proc - 粉末ミルク以降の偉大な発明の1つです[よくわかりません](多分ベル 研のアイディアをパクッたのでしょう)。ディスク上に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'と答えてください。

OS/2 HPFS - 現時点ではOS/2 HPFSは読み込み専用のfsです。

System V and Coherent - System VおよびCoherentシステムのパーティションで す。(これらは他のPC Unixの派生種です。)

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

`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'と答えてください。

注:selectionはX Windowでなく仮想コンソール間で, マウスを用いてカット&ペーストを行うためのプログラムです。シリアルマウス を使用しているなら,容易にXと共存できますので悪くないです。しかし他のマウ スではちょっと面倒です。selectionは以前はコンフィグオプションでしたが,今 は標準になっています。

注2: selectionは現在はサポートが行なわれていません。``gpm''が新しいプログ ラムの名前になっています。よりすばらしい機能を持っており,マウスプロトコル を変換したり,複数のマウスを扱うことが可能だったりします。 [gpmは-RオプションをつければXと共存できます。また、真鍋さん@豊橋技科大 作 のmultimouseはノートパソコンユーザーの方にお薦めです。]

サウンドカード

どーしてもbiff[メールが来たことを知らせる犬]が吠えるのを聞きた いのなら`y'と答えてください。あとで別の設定プログラムがサウンドボ ードに関する質問をして設定します。(サウンドカードの設定に関する注:設定プ ログラムがドライバをフルインストールするか,と聞いてきたら`n'と答 えて必要と思われる機能のみを選択できます。カーネルの使用するメモリを節約で きます。)サウンドカードをお持ちなら,サウンドのサポートに関してより詳細な 情報を得るために,Sound-HOWTOを御覧になることを強くお勧めします。

他の設定オプション

設定オプションは頻繁に変化しますし,自明だったりしますので(例えば3 Com 3C509イーサネットカードのためのデバイスドライバをコンパイルする,など) すべてを紹介するわけではありません。以下のURLにAxel Boldt (axel@uni-paderborn.de)がまとめた,すべてのオプションのわかり やすいリスト(設定スクリプトへの組込み方も)があります。

        http://emile.math.ucsb.edu:8000/~boldt/config_help.html
あるいは匿名ftp経由で,

      ftp://sunsite.unc.edu/pub/Linux/kernel/config/krnl_cnfg_hlp.x.yz.tgz
x.yzはバージョン番号です。

最近の(2.0.xおよびそれ以降)カーネルでは,これはソースツリーにこれが組み 込まれています。

カーネルハッキング(Kernel hacking)

>LinusのREADMEから:

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

3.4 では何を?(Makefile)

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

では,Makefileを見てください。多分変更する必要はないでしょうが,見 るに越したことはありません。新しいカーネルができたら,そのオプションを `rdev'コマンドで変更することもできます。


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