カーネル構築の手順と意味

 さて,新しく追加された機能がどうしても必要だ,または試験的に使ってみたいという場合,カーネルを入れ替える作業をしなければなりません.いわゆるバージョンアップです.

 本章では,カーネル2.4にバージョンアップする際の手順を示します.ただし,業務で使用している場合や現在の環境を破壊したくないという場合には,慎重に検討し,自己の責任で行ってください.

カーネル構築の手順

 ここで説明することは,カーネルを2.4にバージョンアップする方法です.OSの本体そのものを入れ替える作業を行うわけなので,くれぐれも慎重に行ってください.

 まず,準備を始めます.

フロッピーブートの準備

 最初にLinuxシステムをインストールしたとき,フロッピーにブートディスクを作成していたのかどうかを,思い出してみてください.もし作成していない場合には,次の方法で作成してください.

1) uname -rとコマンド入力する
2) 2.2.xx-xxと表示される
3) mkbootdisk --device /dev/fd0 2.2.xx-xxとコマンド入力
4) フロッピーディスクを入れてenterキーを押下する

 これまでの作業は,図1のようになるはずです(環境によってuname -rで返される数値は違う).

〔図1〕ブートディスクの作成手順

バックアップを取る

 必要なファイルは,sambaなどを使用して他のマシンに退避させておきます.

ソースファイルの入手

 筆者の場合は,ringサーバからソースファイルを取得しました.アドレスは,

  http://www.ring.gr.jp/archives/linux/kernel.org/kernel/v2.4/

です.FTPなら,

  ftp://ftp.ring.gr.jp/archives/linux/kernel.org/kernel/

に行き,バージョン2.4のディレクトリを開きます.ringサーバは,いろいろな場所にミラーがあるので,使用しているプロバイダにミラーがあれば,そこに接続すると速くなります.

その他のソフトウェアのアップグレード

 最低限アップグレードしておかなければならないソフトウェアとバージョンを表3に示します.

〔表3〕アップグレードするソフトウェアとバージョン
ツール名 必要バージョン バージョン確認のためのコマンド
Gnu C 2.91.66 # gcc --version
Gnu make 3.77 # make --version
binutils 2.9.1.0.25 # ld -v
util-linux 2.10o # fdformat --version
modutils 2.4.2 # insmod -V
e2fsprogs 1.19 # tune2fs
reiserfsprogs 3.x.0b # reiserfsck 2>&1|grep reiserfsprogs
pcmcia-cs 3.1.21 # cardmgr -V
PPP 2.4.0 # pppd --version
isdn4k-utils 3.1pre1 # isdnctrl 2>&1|grep version

 なお,カーネルソースに付属しているアップグレードに関するドキュメント「Changes」の概略をAppendixに示します.ここに,アップグレードされたツールの場所などが記述されています.RPMパッケージが使用できる環境であるなら,ディストリビュータのFTPサイトに最新のツールが置いてあるはずなので,確認してみてください.

 筆者の環境であるTurbolinux6.0 WorkStationのためのRPMパッケージは提供されていましたが,確実に成功させるにはSRPMをコンパイルしたほうが良いと思います.

 そして,ソフトウェアのアップデート作業に入ります.蛇足ですが,以降の処理は必ずroot権限で行ってください.

 まずは,インストール済みのバージョンを確認します(リスト3).

〔リスト3〕インストール済みのバージョンを確認
[root@linux linux]# gcc --version

2.95.2

[root@linux linux]# make --version

GNU Make version 3.79, by Richard Stallman and Roland McGrath.

Built for i386-pc-linux-gnu

Copyright (C) 1988, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99

Free Software Foundation, Inc.

This is free software; see the source for copying conditions.

There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A

PARTICULAR PURPOSE.

Report bugs to <bug-make@gnu.org>.

[root@linux linux]# ld -v

GNU ld version 2.9.5 (with BFD 2.9.5.0.34)

[root@linux linux]# fdformat --version

fdformat from util-linux-2.10f

[root@linux linux]# /sbin/insmod -V

insmod version 2.1.121

Usage:

insmod [-fkmopsvVxX] [-o name] module [[sym=value]...]

module Filename of a loadable kernel module (*.o)

-f, --force Force loading under wrong kernel version

-k, --autoclean Make module autoclean-able

-m Generate load map (so crashes can be traced)

-o NAME

--name=NAME Set internal module name to NAME

-p, --poll Poll mode; check if the module matches the kernel

-s, --syslog Report errors via syslog

-v, --verbose Verbose output

-V, --version Show version

-x Do not export externs

-X Do export externs (default)

[root@linux linux]# /sbin/tune2fs

tune2fs 1.17, 26-Oct-1999 for EXT2 FS 0.5b, 95/08/09

Usage: /sbin/tune2fs [-c max-mounts-count] [-e errors-behavior]

[-g group]

[-i interval[d|m|w]] [-l] [-s] [-m reserved-blocks-percent]

[-r reserved-blocks-count] [-u user] [-C mount-count]

[-L volume-label] [-M last-mounted-dir] [-U UUID]

[-O [^]feature[,...]] device

[root@linux linux]# reiserfsck 2>&1|grep reiserfsprogs

[root@linux linux]# /sbin/cardmgr -V

cardmgr version 3.1.19

[root@linux linux]# /sbin/pppd --version

bash: /sbin/pppd: No such file or directory

[root@linux linux]# isdnctrl 2>&1|grep version

[root@linux linux]#

 調査した結果を表4に示します.

〔表4〕バージョンを調べた結果
ツール名 現状のバージョン コメント
Gnu C 2.95.2 バージョンを変更する
Gnu make 3.79 そのまま
binutils 2.9.5 そのまま
util-linux util-linux-2.10f バージョンを上げる
modutils 2.1.121 バージョンを上げる
e2fsprogs 1.17 バージョンを上げる
reiserfsprogs ---- この環境では不要
pcmcia-cs 3.1.19 この環境では不要
PPP ---- この環境では不要
isdn4k-utils ---- この環境では不要

 筆者の環境ではSRPMパッケージを利用できるので,それをダウンロードして更新しました.

 なお,GCCはegcs-1.1.2を使用しますが,なかなか見つからないと思います.ダウンロードするなら,リングサーバの,

  ftp://ftp.ring.gr.jp/pub/lang/egcs/releases/egcs-1.1.2/

にあります.また,RedHat系ならばredhatのサイトにSRPMがあるので,それを使用します.

 RPMのほうが楽にインストールできるかもしれませんが,あるパッケージを更新したら,それに依存するパッケージをすべて更新しなくてはならなくなるのでSRPMのほうをお勧めします.

 さて,入手したSRPMを/usr/src/turbo/SRPMSにコピーします(リスト4).ただし,このディレクトリ名は環境によって変わります.

〔リスト4〕SRPMを/usr/src/turbo/SRPMSにコピー
# rpm --rebuild binutils-2.9.5.0.34-1.src.rpm

# rpm --rebuild e2fsprogs-1.20.WIP.0103-5.src.rpm

# rpm --rebuild egcs-1.1.2-25.src.rpm

# rpm --rebuild make-3.79.1-3.src.rpm

# rpm --rebuild modutils-2.3.24-2.src.rpm

# rpm --rebuild urpm --rebuild til-linux-2.10r-4.src.rpm

 そして,usr/src/turbo/RPMS/に移動し,RPMコマンドでインストールします(リスト5).

〔リスト5〕RPMコマンドでインストール
# rpm -ivh binutils-2.9.5.0.34-1.rpm

# rpm -ivh e2fsprogs-1.20.WIP.0103-5.rpm

# rpm -ivh egcs-1.1.2-25.rpm

# rpm -ivh make-3.79.1-3.rpm

# rpm -ivh modutils-2.3.24-2.rpm

# rpm -ivh util-linux-2.10r-4.rpm

 以上の操作で,ソフトウェアのアップデートは無事に終了するはずです.

 次に,インストールするPCのハードウェア環境を再度確認してください.必要な情報は以下のものです.

1) CPUの種類
2) マザーボードのチップセット
3) ビデオカードのチップの型番
4) ネットワークカードのチップ
5) SCSIカードのチップ
6) 他の拡張インタフェースの情報

カーネルの入れ替え作業

 いよいよインストール作業に入ります.まずは,安全のためにlilo.confの書き換えを行います.

 まず始めにブートフロッピーで起動するのかどうか,確認しておきましょう.

 LILOの設定ファイルは,前述のように/etc/lilo.confに指定されていますが,これをリスト6のように修正します.

〔リスト6〕/etc/lilo.confの修正
boot=/dev/hda

map=/boot/map

install=/boot/boot.b

prompt

lba32

timeout=50

default=linux

#元のカーネル

image=/boot/vmlinuz2.2.16

#ラベルをlinux2に変更する

label=linux2

root=/dev/hda6

initrd=/boot/initrd

read-only

#新しいカーネル

image=/boot/vmlinuz

label=linux

root=/dev/hda6

initrd=/boot/initrd

read-only

 修正が終わったらliloを実行してください.ただし,環境によってvmlinuzの後の名称,HDの名称,パーティション名が異なるので注意してください.

 この作業によって,もしカーネルの構築に失敗した場合には,ブートフロッピーで起動したり,起動時にLILO:と表示されたらlinux2と入力することで元のカーネルで起動させることができます.しかし,深刻な問題を抱えてしまったような場合には,この限りではありません.

 次に,ダウンロードしたカーネルlinux-2.4.2.tar.gz(現在の最新版)を/usr/srcの下に解凍します(リスト7).

〔リスト7〕カーネルのアーカイブファイルを解凍
#cd /usr/src/

#rm linux

#tar xvfz linux-2.4.2.tar.gz

#mv linux linux-2.4.2

#ln -s linux-2.4.2 linux

 いよいよ,カーネルコンフィグレーションを行います.

  #cd linux
  #make xconfig

 ただし,X Window環境でない場合には,make menuconfigと入力します.詳細は後述します.

 次にコンパイルを行いますが,その前に,もしオーバクロックをしている場合には,カーネルをmakeしているとエラーで止まることがあります.実際,筆者はファイルシステムが壊れて再インストールする羽目になりました.コンパイルは,次のようにコマンドを入力します.

  #make dep
  #make clean
  #make bzImage
  #make install

 実行マシンの速度によっては,ここまで数時間かかることもあります.コンパイルが終わったら,モジュールのコンパイルとインストールです.

  #make modules
  #make modules_install

 以上が問題なく終了すれば,カーネル2.4を使用することができます.リブートすることで起動するはずです.


Linuxカーネルとは
 ● カーネルの仕組み

カーネル構築の手順と意味
 ● カーネル構築の手順
 ● カーネルコンフィグレーションの詳細


6月号特集トップページへ戻る


Copyright 2001 岸 哲夫