差し替え用のカーネルの作り方
現状のdebianのカーネルはlenny(次期stable)まで調べた範囲では、2.6.18がベースになっています。
しかし、2.6.18は、最新のハードウェアへの対応が相当手薄です。
実際の最新カーネルソースは現在(2007.10.12)で2.6.23です。こちらであれば、core2-duoほか、新しいサウスブリッジのICH9やrealtekの1000〜10000Mネットワークカード、新しいGPU等に対応しています。
したがって、新しいハードを使ったPCの場合は、debian-stableやtestingではカーネルがうまくない場合が多いことになります。
そこで、最新カーネルソースをコンパイルして最新カーネルにインストーラのブートカーネル及びインストールするカーネルを差し替える方法を以下に示したいと思います。
手順概要
対象ディストリビューションがdebianなのですから、カーネルインストール用のdebパッケージを作成すればいいことになります。
カーネルのdebパッケージ作成には、以下のものが必要です。
最新カーネルソース:当たり前ですね。
カーネル作成用パッケージ:kernel-package
これをコンパイルしてdebファイルをつくり、実際にインストーラー作成マシンにインストールするとカーネルとinitrdが作られますので、これをインストールメディアに書き込めばOKです。
さて、実際の使い方は次の通りです。
最新カーネルソース取得
真のカーネルの最新情報はhttp://www.kernel.org/にあるのですが、ここはそんなに速くないし、そもそも総本山からダウンロードは避けるべきです。
ringを探すのが一番でしょう。
今回は、こちらhttp://ring.nict.go.jp/archives/linux/kernel.org/kernel/v2.6/からダウンしました。
バージョンは上記の通り2.6.23で、linux-2.6.23.tar.bz2というファイル名ですね。
近頃のカーネルソースは非常に容量が大きいです。まぁ、対象となっているハードウェアが多くなっていて、機能も豊富なので仕方ありませんが、43MBって、すごい大きさですね。展開すると100MBを楽々越えます。
コンパイル環境を揃えるのも一苦労ですね。
ソースの解凍とconfig
どこかコンパイルしてもいいディレクトリに展開します。bz2イメージなので、以下のコマンドが簡単でしょう。(gnu-tarでないとjオプションはありませんので、ご注意ください。)
$ tar jxf linux-2.6.23.tar.bz2
展開している中身が見たい人はvオプションもつけてください。
次にconfig作業を行います。trillimicはnursesベースのmenuconfigが好きなので、これでやってます。
$ cd linux-2.6.23
$ make menuconfig
必要なデバイスをモジュールまたはカーネル組み込みで指定していきます。
ブートするときにinitrd以降でマウントするディスクのファイルシステムは、ブートカーネルにカーネル組み込みされていないとマウントできず、rootイメージに切り替わるところでpanicしますので、ご注意ください。(経験済み:2時間ぐらい悩みました。)