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

4. カーネルのコンパイル

4.1 不要なファイルの削除とと依存ファイルの確認

設定スクリプトの実行が終了すると,`make dep' と(たぶん, `make clean' を実行するように表示されます.ですから `make dep'してください.これはインクルードファイルなどの依存 関係が全て正しいかどうかを確認します.マシンがよほど遅くないかぎり,こ れにはそんなに時間が掛かりません.これが終ったら,古いバージョンのカー ネルの場合には `make clean' を行います.これはすべてのオブジェ クトファイルと,以前のバージョンに関係する古いファイルを消去します.い ずれにせよ,このステップを忘れないようにしてください.

4.2 コンパイル

依存関係のチェック(`make dep')と不要なファイルの削除 (`make clean')が終了すると,`make bzImage' もしくは `make bzdisk' を実行することができます(これは時間がかかるとこ ろです).`make bzImage'はカーネルをコンパイルし, `bzImage' と呼ばれるファイルを arch/i386/boot に置き ます(他のファイルもあります). これが圧縮された新しいカーネルです.`make bzdisk' は同じこと をしますが,``A:''ドライブに入れたフロッピーディスクに新しい bzImage を書き込みます.`bzdisk' は新しいカーネルの 動作チェックに便利です; もしフロッピーが爆発したり(あるいは単にうまく 動かない場合)には,フロッピーを取り外せば古いカーネルでブートします. また,カーネルを誤って消してしまったときなど(あるいはそれに類する危機 的状態)にもこのフロッピーは便利です.さらには,ディスクの中身を別のディ スクに移したときにも,新しいシステムをインストールするのに使用できます (さあこんなにお得でお客さん,いくらなら買います!?[うまく訳せません]).

割と最近のカーネルはすべて圧縮されてますので,名前の先頭に `bz' が付いています.圧縮されたカーネルは,実行時に自動的に展 開されます.

古いカーネルには bzImage を作るオプションがありません.これは 単に zImage となります.このオプションもまだ利用可能ですが, 新しいカーネルのコードのサイズを考えると,bzImage の構築はほ とんど必須でしょう.なぜなら,古い方法では大きすぎるカーネルは扱えない からです.

4.3 他の``make''できるもの

`make mrproper' はさらに徹底的なファイル削除((`make clean')) を行います.この作業が必要なこともあるので,パッチを当てるごとに実行す るとよいでしょう.`make mrproper'は設定ファイルも消去してしま うでしょう.ですから,設定ファイル(.config)が必要でしたら,そ のバックアップを作っておいてください.

`make oldconfig' は古い設定ファイルにしたがってカーネルを構築しよ うとします; make config' のプロセスは飛ばします.もし,今まで一度 もカーネルをコンパイルしてなかったり,古い設定ファイルがないなら,これを 実行してはいけません.デフォルトの設定を変更したいことがほとんどでしょうか ら.

`make modules' の説明については,モジュールに関する節を参照して ください.

4.4 カーネルのインストール

設定通りの動作をするようなカーネルができたら,インストールしましょう. ほとんどの人は LILO(Linux Loader) を使用します[訳者は,LILO でなく Loadlin をお勧めします.LILO はうまくいかないと,徹底的にうまくいかな いような気がします].`make bzlilo' でカーネルをインストールし, そこで LILO を実行すれば,ブートの準備がすべてできます.しかしこれは LILO が以下のように設定されている場合だけです: カーネルが /vmlinuz で,liloが /sbin にあり,LILO の 設定ファイル(/etc/lilo.conf)がこれに合致している場合です.

そうでなければ,LILO を直接使用せねばなりません.LILO はインストールや取扱 いの容易なパッケージですが,設定ファイルで戸惑う人が多いようです. 設定ファイルを見てください(古いバージョンでは /etc/lilo/config,新しいものでは /etc/lilo.conf です). そして現在の設定がどうなっているか見てください.このような感じになって いると思います.

    image = /vmlinuz
        label = Linux
        root = /dev/hda1
        ...

`image =' には現在インストールされているカーネルが設定されて います.ほとんどの人は /vmlinuz を使用します. `label' は LILO がどのカーネルあるいは OS をブートするかを判 断するために使われ,`root' は立ち上げる OS の / です. 古いカーネルのバックアップを作成し,新しい bzImage をコピーし ます(`/vmlinuz' を使用するなら `cp bzImage /vmlinuz' とします).それから,新しいシステム上で再度 LILO を実行します( `lilo' を実行するだけです).しかし LILO が古い場合には, /etc/lilo/install あるいは /etc/lilo/lilo -C /etc/lilo/config を実行する必要があるかもしれません.

LILO の設定についてもっと知りたい,あるいは LILO を持っていないのなら, お好きな ftp サイトから最新のバージョンを入手し,説明にしたがってイン ストールしてください.

ハードディスクから古いカーネルの 1 つをブートするには(新しいカーネルが どうにもならなくなったときの対処法の一つです),LILO の設定ファイルの `image = xxx' とそれ以降の行をファイルの一番最後にコピーし, `image = xxx' を `image = yyy' に変更します.ここで, `yyy' にはバックアップしておいたカーネルのファイルのフルパス を指定します.それから `label = zzz' を `label = linux-backup' に変更し lilo を再実行します. 設定ファイルに `delay = x' という行を付け加える必要があるかも しれません.x は 1/10 秒単位で待ち時間を指定します.LILOは待ち時間の間 はブートを開始しませんので,その間に(シフトキーを押すなどして)ブートを 中断することができます.新しいカーネルに問題があるときは,ここで古い カーネルのラベルを入力することでそれを起動できます.


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