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に投稿されています。これを入手し てみてください。
root
としてログインあるいはsu
し,/usr/src
に
cd
します。最初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
'ディレクトリができています。linux
にcd
し,
README
ファイルを読んでください。`INSTALLING the kernel
'と
いう題のついたセクションがあります。よければ説明にしたがって必要なシンボリ
ックリンクを張ったり,古い.o
ファイルを消去します。
注: このうちいくつかはLinusのREADM
Eファイルの繰り返しだったり
説明だったりします。
/usr/src/linux
で`make config
'コマンドを実行すると,多く
の質問に答えていくことでシステムを設定できるスクリプトが起動します。bash
が必要ですので,bashが/bin/bash
,/bin/sh
あるいは
$BASH
であることを確認してください。
`y
'(はい)あるいは`n
'(いいえ)で質問に答えていきます。
デバイスドライバはたいてい`m
'オプションを持っています。これは
``モジュール''を意味しており,カーネルのコンパイル時にコンパイルは行なわ
れますが,カーネルに直接組み込まれるわけではなく,ロード可能なモジュール
としてコンパイルされるのです。この`m
'をもっと面白く説明致します
と,これは``maybe''(多分)です。簡単だったりあまり重要でないオプション
については,ここでは触れません。セクション「他の設定オプション」にいくつ
かのオプションの簡単な説明があります。
2.0.xおよびそれ以降のカーネルでは,`?'オプションがあります。クエスチョン マークをタイプするおt,設定パラメータの簡単な説明が表示されます。
数値演算コプロセッサがない場合(386や486SXのみの場合),これには`y
'
と答えなければいけません。コプロセッサがあるのに`y
'と答えてもそん
なに心配する必要はありません -- ちゃんとコプロセッサが使用され,エミュレー
ションは行なわれません。カーネルが大きくなる(RAMを余計に使用する)だけです。
わたしはずっとカーネルによる数値演算プロセッサのエミュレーションは遅いとい
いい続けてきました; このことは本節とはほとんど関係ないですけども,Xウィン
ドウシステムの性能が出ない時には,このことを思い出してください。
これはサポートする必要があるでしょう。カーネルが普通のPCのハードディスクを サポートする,ということです。ほとんどの人が必要でしょう。このドライバには SCSIドライバは含まれていません。設定の後の方で出てきます。
続いて``old disk-only''と``new IDE''のドライバについて聞かれます。このうち どちらかを選択することでしょう。大きな違いは,古いドライバは1つのインター フェース上の2つのディスクのみをサポートしますが,新しい方はセカンダリイン ターフェースとIDE/ATAPI cdromをサポートします。新しいドライバは古い方よりも 4 kB大きいですが多分「改善」されています。すなわち含まれているバグの数は別 にして,ハードウェアが新しい(EIDEタイプ)場合には特にディスクパフォーマン スが改善されます。
インターネットのようなネットワークに接続されていたり,あるいはインターネッ
トへのダイアルアップ接続にSLIP,PPPやtermなどを使用するつもりであれば,
`y
'と答えます。しかし,多くのソフトウェアパッケージ(X ウィンド
ウシステムや日本語変換システム)は,たとえマシンがネットワークに接続され
ていなくてもネットワークサポートを必要とします。ですから`y
'と答
えなければなりません。後でTCP/IPネットワークが必要かどうか質問されますが,
よくわからなければここでも`y
'と答えなければなりません。
16 MB以上のRAMのアドレッシングに問題のある386 DMAコントローラが存在します。
そのようなDMAコントローラが載ったマザーボード(まれですが)を使用しているの
なら`y
'と答えてください。
IPC(プロセス間通信)のもっとも的確な定義の一つはPerl bookの用語一覧にあり
ます。おどろくほどのことではないですが,Perlのプログラマーの中にははプロセ
ス間で会話をさせるためにIPCを利用する人がいますし,他のパッケージもこれを
利用しています(もっとも著明なのはDOOMでしょう[JEに含まれている漢字コンソ
ールKONもこれを利用しています])。ですから,よくわからない場合はこれに
`n
'と答えてはいけません。
(古いカーネルでは: Use -m486 flag for 486-specific optimizations)
従来は,このオプションでは特定のCPU用に最適化したコンパイルを行なっていま した; カーネルは他の(最適化した以外の)CPUでも良好に動作しますが,カーネ ルは少々大きくなりました。しかし新しいカーネルでは,このことは必ずしも当て はまりません。ですから,カーネルをコンパイルするマシンのCPUを必ず入力しな ければなりません。``386''用カーネルはすべてのマシンで動作することでしょう。
SCSIデバイスがあるのなら`y
'と答えてください。CD-ROM,ディスクの
サポート,およびどのSCSIアダプタを使用するか,などさらに質問されます。詳
細はSCSI-HOWTOを参照してください。
ネットワークカードがあるのなら,あるいはSLIP,PPPもしくはインターネットに
接続するためにパラレルポートアダプタを使用するなら,`y
'と答えて
ください。どのカードを使用するか,またどのプロトコルを使用するか質問され
ます。
以下のファイルシステムをサポートするかどうかを聞かれます:
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
'をタイプ
してみてください。カーネルの現在使用可能なファイルシステムが表示されます。
あんまり使わない,それほど重要でないファイルシステムを使用できるように設 定すると,カーネルが不必要に大きくなってしまいます。対処法はモジュールに 関するセクションを,また大きくなったカーネルが好まれない理由については, 「落とし穴」の節を参照してください。
ここではプリンタ(パラレルプリンタのことです),バスマウス,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およびそれ以降)カーネルでは,これはソースツリーにこれが組み 込まれています。
>LinusのREADMEから:
カーネルハッキングを設定するとカーネルが大きくなったり遅くなったり(ある
いは両方)しますし,カーネルの問題(kmalloc())を見つけるため悪いコードを
積極的に中断しようとするルーチンが組み込まれますので,カーネルが不安定に
なったりします。ですから「製品版」のカーネルに対しては`n
'と答え
ておくべきでしょう。
make config
が終ると,カーネルの設定が終ったというメッセージが表示
され,また「追加設定のためトップレベルのMakefile
をチェックしろ」
というようなメッセージが表示されます。
では,Makefile
を見てください。多分変更する必要はないでしょうが,見
るに越したことはありません。新しいカーネルができたら,そのオプションを
`rdev
'コマンドで変更することもできます。