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 を起動します。