Linux カーネルの更新(2.2.20 → 2.4.20)

Linux カーネルを 2.2.20 から 2.4.20 に更新したときの作業内容をまとめたものです。以下の内容は私の環境での話なので、これ以外の環境での動作保証はしません。


まっくいんのPC環境

現在私が使っているマシンのスペックのうち、Kernel Configuration に関係ありそうな部分だけ抜き出してみた。

項目型番など
CPUPentium III 800MHz
BIOSAdvanced Power Management 対応
ChipsetIntel 82815 HOST/AGP/SDRAM Controller(I815)
82801BA I/O Controller Hub(ICH2)
Video CardATI All in Wonder 128 PRO
Audio CardAC'97 CODEC(On board)
MousePS/2 Mouse
Network deviceRealtek RTL-8139
IDE/ATAPI devices3(HDD, DVD-ROM Drive, CD-R/RW Drive)
OthersUSB*2, Printer(Parallel)*1, UART*1, etc.

以下、私の環境(Debian GNU/Linux 3.0)における作業を記す。


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

まずは 2.4.20 カーネルのソースパッケージ "kernel-source-2.4.20.deb" をインストールする。

# apt-get install kernel-source-2.4.20
# cd /usr/src
# tar jxvf /usr/src/kernel-source-2.4.20.tar.bz2

ここまで終えると、/usr/src/kernel-source-2.4.20/ というディレクトリにカーネルソースが展開されている。


カーネルの各種設定

ソースのインストールができたら、

# cd /usr/src/kernel-source-2.4.20
# make xconfig

とすると、GUI方式の Configuration Program が起動する。ここから自分の環境に合わせてカーネルの機能設定(コンフィグレーション)をしていくことになる。主に参考となるのは現在動作中のカーネルの設定ファイルだが、他にJF:Configuration.helpも挙げておく。

今回私が有効(Yes / Module) にしたもの、並びに何らかの設定をした項目は次の通り。

Code maturity level options

Loadable module support

Processor type and features

General Setup

Parallel port support

パラレルポートでプリンタを使うために以下の項目をとりあえず有効化。

Plug and Play support

Block devices

Networking Options

ATA/IDE/MFM/RLL support

SCSI support

USB Mass Storage(カードリーダーとか?)を使うにはサポートする必要がある。

Network device support

Input core support

USB の入力機器(マウス、キーボード、ジョイスティック)を使用する場合は設定が必要らしい。私の場合はジョイスティックだけ設定。

Character devices

File Systems

Console Drivers

Sound

USB Support


カーネルパッケージの作成とインストール

カーネルの設定が終わったらカーネルパッケージを作成する。ここでは、kernel-package パッケージがインストールされていることを前提とする。revision を "tenpoint.2003.02.10" とする場合、

# make-kpkg clean
# make-kpkg --revision tenpoint.2003.02.10 kernel-image

と実行する。これで、/usr/src/ に kernel-image-2.4.20_tenpoint.2003.02.10_i386.deb というパッケージができている。インストールは

# cd ../
# dpkg -i kernel-image-2.4.20_tenpoint.2003.02.10_i386.deb

とすればOK。


ALSA(Advanced Linux Sound Architecture)のインストール

2.2.20 カーネルで使っていた ALSA の設定をそのまま流用する。私の /etc/alsa/alsa-source.conf の中身(部分抜粋)は、

ALSA_NOPNP="y"
ALSA_DEBUG=""
ALSA_CARDS="intel8x0"

となっている(intel8x0 は AC'97 CODEC 用設定)。設定ができているので 2.4.20 用 ALSA Package を作成する。

# cd /usr/src/kernel-source-2.4.20
# make-kpkg modules_image

これで、/usr/src/ に alsa-modules-2.4.20_0.9.0rc1+2+p0+tenpoint.2003.02.10_i386.deb というパッケージができている。インストールは

# cd ../
# dpkg -i alsa-modules-2.4.20_0.9.0rc1+2+p0+tenpoint.2003.02.10_i386.deb

のように行う。これで音が出るようになる。

ちなみに、私の /etc/alsa/modutils/0.9 の中身は以下の通り。(この内容は update-modules コマンドで /etc/modules.conf に反映される)

# --- BEGIN: Generated by ALSACONF, do not edit. ---
# --- ALSACONF verion 0.4.3b ---
alias char-major-116 snd
alias snd-card-0 snd-intel8x0
alias char-major-14 soundcore
alias sound-slot-0 snd-card-0
alias sound-service-0-0 snd-mixer-oss
alias sound-service-0-1 snd-seq-oss
alias sound-service-0-3 snd-pcm-oss
alias sound-service-0-8 snd-seq-oss
alias sound-service-0-12 snd-pcm-oss
options snd snd_major=116 snd_cards_limit=1 snd_device_mode=0660 snd_device_gid= 29 snd_device_uid=0
# --- END: Generated by ALSACONF, do not edit. ---

※alsaconf 0.4.3b で Configuration ファイルを作ると、"snd-intel8x0" の部分が snd-card-intel8x0 という名前になっている。そのままだとドライバを見つけられず組み込みに失敗するので注意(上は手で修正したもの)。


カーネル更新後に気になっていること。

起動時に以下のメッセージが出てます。

Linux agpgart interface v0.99 (c) Jeff Hartmann
agpgart: Maximum main memory to use for agp memory: 203M
agpgart: agpgart: Detected an Intel i815, but could not find the secondary device. Assuming a non-integrated video card.
agpgart: Detected Intel i815 chipset
agpgart: AGP aperture is 64M @ 0xd0000000

現時点で特に不具合らしきものはないのですが…。Google で検索したけど、ちょっと対処法がわかりません。


Topに戻る


mcquen@nnn.ac