カーネルのバージョンアップ(あるいは再構築)

カーネルのバージョンアップとは,いうなれば,OSの基幹部分のアップグレードだ.
リーナス・トーバルス氏の声が直接聞ける作業でもある.
たとえば,今回の kernel 2.2 => 2.4.20 では正式にUSB機器がサポートされ,PnP(ぷらぐあんどぷれい)なんかも余裕である.
ちなみに,そもそもは音源周りの murakasi が 2.4 からサポートされていたことが誘因である(恥.

ともかく,Linux では,店に行って,CD買ってきて,シリアルナンバーを入力なんて理不尽なこと,しなくてよい.

0.まえふり

もちろん,apt-get install x.x.xx.image だけでもじつはカーネルのバージョンアップは出来る
これでやれば,難しいことを考えず,数十分ですさまじいアップグレードが可能(なんだろう).

さて,しかし,ソースからコンパイル,インストールするとなると,ある程度準備が必要だ.
下記のモノは,あらかじめ apt-get install で,インストール or アップデートする必要がある.
インストール or アップグレード
以下のバージョンより上が必要 確認
GCC 2.95.3 % gcc -v
make 3.77 % make -v
binutils 2.9.1.0.25 % ld -v
util-linux 2.10o % fdformat --version
modutils 2.4.2 # insmod -V
e2fsprogs 1.25 # tune2fs
jfsutils 1.0.12 # fsck.jfs -V
reiserfsprogs 3.6.3 # reiserfsck -V
tk8.0-ja 8.0
(#tk8.0-v ?)
※xconfig をするのに必要
※たまに,apt-get install でこけることがあるが,慌てずに
 一度,apt-get update をかけて,再度,apt-get install をしてみることをおすすめする.

参照 url : 設定(2.2.xx → 2.4.20) : http://www.aw.wakwak.com/~rmatsumoto/kernel_upgrade_euc.html
参照 url : 爽・快・感 : http://riyo.s27.xrea.com/unix/soft/kernel/index.html

全体の流れ

※じつは,4.で疲れ果てて,5を忘れてた(1日遅れで,5.を実行したが問題なし)

参照 url : Kernel Upgrade : http://may.sakura.ne.jp/~zaki/linux/kernel.html
参照 url : 設定(2.2.xx → 2.4.20) : http://www.aw.wakwak.com/~rmatsumoto/kernel_upgrade_euc.html

1.ソールをゲット.で,インストール

まず,自分のカーネルのバージョンを確認しておく.
$ uname -r
でできる.

その上で,ソース類を apt-get install する.
apt-get install kernel-source-2.4.20 (27.1MB)
apt-get install kernel-headers-2.4.20 (12.4 MB)
apt-get install kernel-package
apt-get install bin86
apt-get install libncurses5-dev (5.3.20030719-1)

※今回はこれでいったが,念のため,"apt-cache search" で確認してから,apt-get install した方がよいだろう.

ダウンロードしたものは,実は".tar.bz2"形式のソースだ.これは解凍しなければならない.
apt-get install されたkernelファイル類は自動的に," /usr/src " に落ちている.
# cd /usr/src
# bzcat kernel kernel-source-2.4.20.tar.bz2 | tar xv    ※"bzcat ... | tar xv" の代わりに,"bzip2 -dc ... | tar xvf-"とするところもある.

さらに作業を "/usr/src "で行うのは危険なので, /usr/src の下にミラーリングをはる.linux というミラーだ( /usr/src/linux)
# ln -s kernel-source-2.4.20 linux

参照 url : 設定(2.2.xx → 2.4.20) : http://www.aw.wakwak.com/~rmatsumoto/kernel_upgrade_euc.html

2.xconfig  −カーネルに組み込む機能やモジュールなどを選択−

次に,実際に次期バージョンのカーネルにどんな機能を盛り込むか,選択する.
(ここで何回もやり直す羽目になった)
ちなみに,ここからの作業は,何回でもやり直しがきく.こけたら,またここに戻ってきて,最後までの手順をやり直せばよい.

# cd /usr/src/linux               ※1.の最後でリンク(ミラー)をはった,作業用のディレクトリ
# make xconfig (or make menuconfig)       ※0.でゲットしていた tk8.0 がここで正常に働いていれば,グラフィカルな xconfig が立ち上がる.


(たぶん,2.4.18 の xconfig 画面だが,許せ)
基本的にはデフォルトでよいはず,だが,それではほとんどこけること請け合い.
適当に色々,こけた人達を参考にしながら,何度かチャレンジしてやる.
(現在も修行中)

3.カーネルのコンパイル (with ALSA)

# cd /usr/src/linux
# make-kpkg clean
    # apt-get remove --purge alsa-source alsaconf
    # apt-get install alsa-source alsaconf
        ※ "Build ALSA driver with ISA PnP?" [OFF]
        ※ "Select cards to built" ("all" => [off])
                                   ("intel8x0" =>[YES])
                                   ("mpu401" => [YES])
# make-kpkg --revision Custom.*** kernel-image modules-image

4.カーネルのインストール

# cd /lib/modules
# mv 2.4.20 2.4.20.old

# cd /usr/src
# dpkg -i kernel-image .... .deb
# dpkg -i alsa-modules ... .deb

# reboot