kernel2.4.26


Redhat8でkernelをソースファイルからアップデートする

Redhatのサポート体制変更によりredhat.comから正規のサポートを受けられなくなり、アップデートに困っている方も多いかと思います。
そこで、ソースファイルから入手してkernelをアップデートする方法にチャレンジしてみましょう。

後継のFedora Legacy Project (http://www.fedoralegacy.org/)でRedhat7.2・7.3・8・9のサポートを引き継いでいますが、Redhat7.2 8のサポートは凍結され他への移行を推奨しています。
利用方法は各自調べてください。ここでは割愛させていただきます。

この作業にはかなりリスクが伴います。
最悪の場合、起動不可能・再インストールすることになります。
ある程度、経験がある方、自己解決能力をお持ちの方のみお奨めします。
当然、記載内容の不備・作業中に発生した問題・インストール不可等が生じた場合、当サイトでは一切責任を受け付けません。自己の責任の範囲でご利用ください。

インストールファイルのダウンロード

ソースファイルをダウンロードします
http://www.kernel.org/ よりカーネルソース(linux-2.4.26.tar.gz)を取得
ここではバージョン 2.4.26を選択してます。
最新バージョンを確認して相応に置き換えてください。

ユーザーディレクトリのソースファイル用へ移動

# cd /usr/src

ダウンロードしたファイルを展開

# tar -zxf linux-2.4.26.tar.gz 

解凍したファイルのディレクトリへ

# cd linux-2.4.26 

差分パッチをあてる方へ・・・

前バージョンのソースを持っていて、パッチ当てから行う方は、ここをお読みください。
今回、新しくソースファイルからアップデートを行う方は、次へ進んでください。

差分パッチをダウンロードします
http://www.kernel.org/ より差分パッチ(patch-2.4.26.gz)を取得
パッチを当てるためには一つ前のバージョン(2.4.25)のカーネルソースが必要です。
注意:現在使用中のカーネルソースが linux-2.4.24の場合は、
1) patch-2.4.25
2) patch-2.4.26
の順序で当てる必要があります。

現在使用中のカーネルソースファイルは、/usr/src に展開してあるものとします。
patch-2.4.26.gz もこのディレクトリにダウロードしておきます。

ディレクトリへ移動

# cd /usr/src 

ダウンロードしたパッチファイルを実行

# zcat patch-2.4.26.gz | patch -p0 

ディレクトリ名を linux-2.4.26 に変更

# mv linux-2.4.25 linux-2.4.26 

パッチ当てが終了したのでディレクトリへ移動

# cd linux-2.4.26 

カーネルのコンフィグレーション

カーネルの設定ファイル名は .config です。
RedHatの場合、システムのインストール時にパッケージグループ「カーネル開発」をインストールしてある方は、
/usr/src/linux-2.x.x/configs の中に .config ファイル(kernel-2.4.x-x.conf 等)が用意されます。
適当なファイルを選んで上記の /usr/src/linux-2.4.26 のディレクトリにコピーします。

# cp /usr/src/linux-2.4.20/configs/kernel-2.4.20-i686.config ./.config

上記の設定ファイルを用意でいない方は.configを初期化します。

# make mrproper 

設定ツールをコンフィグレーションします。
コンソールから設定を行う方は・・・

# make menuconfig 

GUIから設定を行う方は・・・

# make xconfig 

コンフィグレーションが成功すると設定プログラムが起動します。
設定内容は各自運用する用途・マシンに合わせて行ってください。
設定が終わったら、書き出しをして終了します。
既存のオブジェクトを削除します。

# make dep; make clean 

カーネルのコンパイル

カーネルをコンパイルします。

# make bzImage 

できたカーネルイメージをbootディレクトリにコピーします。

# cp /usr/src/linux-2.4.26/arch/i386/boot/bzImage /boot/vmlinuz-2.4.26
# cp /usr/src/linux-2.4.26/System.map /boot/System.map-2.4.26
# ln -sf /boot/System.map-2.4.26 /boot/System.map  

モジュールの作成

モジュールをコンフィグレーションします。

# make modules

新しくモジュールを追加した場合だけ、下記を実行します。

# rm -rf /lib/modules/`uname -r`  

モジュールをインストールします。

# make modules_install
# depmod -av  

ブートローダの更新 (GRUB編)

grubのディレクトリに移動します。

# cd /boot/grub 

grubの設定ファイルを編集します。

# vi grub.conf 

現在、起動しているkernel設定の記述は残しておきます。
万が一、新しいkernelのインストールで失敗した際、この古いkernelで起動するためです。
注意:起動デバイスがhda0以外を設定している方は「root=LABEL=/」にパーティションが割り当てられているデバイスを指定します。(例:/dev/hda3)

# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE:  You have a /boot partition.  This means that
#          all kernel and initrd paths are relative to /boot/, eg.
#          root (hd0,0)
#          kernel /vmlinuz-version ro root=/dev/hda3
#          initrd /initrd-version.img
#boot=/dev/hda
default=0
timeout=10
splashimage=(hd0,0)/grub/splash.xpm.gz
title Linux 2.4.26
        root (hd0,0)
        kernel /vmlinuz-2.4.26 ro root=LABEL=/
        initrc /initrc-2.4.26.img
title Red Hat Linux (2.4.18-14)
        root (hd0,0)
        kernel /vmlinuz-2.4.18-14 ro root=LABEL=/
        initrd /initrd-2.4.18-14.img

initrdの作成

# mkinitrd initrd-2.4.26.img 2.4.26 

以上で設定は終わりです。
正常に再起動出来たらkernelバージョンを確認してみましょう
Installしたバージョンが表示されれば完了です。

# uname -r


Last-modified: 2015-04-23 (木) 18:43:34 (965d)