Kernel 2.2.17 をパッチで 2.2.18 へアップグレードする
SETUP
Linux カーネルパッチ
Linux Kernel 2.2.17 にパッチを充てて Kernel 2.2.18 へアップグレードしようと思います。
このお話は Slackware 7.0 の構成を前提に話を進めていきますので、Vine Linux などの Red Hat 系ディストリビューションでは大きく食い違うので注意してください。
カーネルパッチは、一つ前のバージョンのカーネルソースから新しいカーネルソースを作成するための差分ファイルです。差分ですので、Kernel 2.2.18 をまるごとダウンロードするよりも軽くすみます。
ただし、パッチを充てる際に注意しなくてはいけないのは、充てるパッチは必ず、次のバージョンのパッチでなければいけないということです。
今回の場合は、Kernel 2.2.18 へアップグレードするのが目的です。
もともと Kernel 2.2.17 が入ったシステムであったので、2.2.18 のパッチだけで済みましたが、仮にもともとが Kernel 2.2.13 であったとすると、patch-2.2.14, patch-2.2.15, patch-2.2.16, patch-2.2.17, patch-2.2.18 のすべてが必要になります。
では、さっそくカーネルパッチを入手しましょう。
ftp://ftp.kernel.org/pub/linux/kernel/v2.2/ より、現時点での Linux 2.2.x 系の最新カーネルパッチ patch-2.2.18.gz をダウンロードします。そしてこれを、カーネルソースのあるディレクトリ /usr/src/ へと移動しておきましょう。
パッチを充てる
では、パッチを充てる作業に入ります。
まずはパッチを充てるために、現時点でのカーネルソースをまるごとコピーします。
コピー先には最終的にはパッチがあたるので、パッチを充てたあとのバージョン名である、linux-2.2.18/ という名前を付けておくことにします。そして、linux というシンボリックリンクを、コピーした linux-2.2.18/ へと張りなおします。
cd /usr/src
cp -rf linux-2.2.17/ linux-2.2.18/
rm linux
ln -s /usr/src/linux-2.2.18/ linux
これで準備完了です。続いてパッチを充てます。
cd /usr/src
zcat patch-2.2.18.gz | patch -p0
上のような命令で、パッチが充てられます。当てる先は linux/ ディレクトリに対してですので気をつけましょう。
今回は、あらかじめ張っておいたシンボリックリンクによって、/usr/src/linux-2.2.18/ に保存されているカーネルソースへパッチが適用されます。
無事、エラーもなくパッチが充てられたら、続いてコンパイルですが、その前に念のため、ブートイメージをバックアップして置きます。
cp /vmlinuz /vmlinuz.safe
これで、もしもカーネルの再構築に失敗しても、なんとか以前のカーネルで起動できます。あとは、LILO などのブートローダで、起動時に選択できるようにしておくなどするといいでしょう。
つづいて、/usr/src/linux ディレクトリへ移動して、カーネルの設定を行います。設定内容は各自のコンピュータに合った設定にしなくてはなりませんので、注意しましょう。
cd /usr/src/linux
make mrproper menuconfig;
すると、カーネル設定用のメニュー画面が表示されますので、各種設定を行ったら次のコマンドを実行してカーネルの再構築を行います。
make dep clean bzImage
make modules modules_install
depmod -a
そして最後に、以下のようにしてブートイメージを vmlinuz へ導入すれば完了です。
make bzlilo
再起動後、正常に Linux が起動すれば成功です。
いろいろなデバイス周りも正常に動いているか確認しましょう。Ethernet が動いていなかった・・・、とかならないように。
もしも、不都合が出るようならば、再び make menuconfig からやり直す必要があります。起動すらできない場合には、念のためコピーしておいたブートイメージを使って Linux を起動します。