Kernel 2.6へのアップグレード

2.6系列のKernelも2.6.7まできたので、そろそろ挑戦してみようかと思いました。

Woodyでは公式には2.6系列はサポートしていません。ここでのメモはWoodyをSargeにアップグレードしてから行いました。

バイナリパッケージの導入

自分でカーネルをビルドしたいところですが、kernel-image以外にも様々なパッケージが必要になります。まずは、とりあえずDebianで用意されているバイナリパッケージを入れましょう。私のマシンのCPUはAthlonなのでkernel-image-2.6.6-1-k7パッケージを利用します。Pentium系の人はkernel-image-2.6.6-1-686パッケージを利用するようです。

[plain toolbar=false gutter=false highlight_lines=”1,2″]
# apt-get update
# apt-get install kernel-image-2.6.6-1-k7
[/plain]

2.6系列のパッケージから、起動時にRAM Disk Image(initrd)を利用するようで、ブートローダの起動パラメータに「initrd=/initrd.img」を付け加えるように警告が出ます。また、起動パラメータを追加したら/etc/kernel-img.confに、「do_initrd = Yes」を追加するように言われます。このメッセージを確認したら「Do you want to stop now?」に「N」と応えて、インストールを続行しましょう。

また、次にinitrd.imgがないと怒られますので「Do you want me to create a link from …..」に「Y」と応えてシンボリックリンクを作ってもらいます。

さて、無事にパッケージのインストールが完了したら、忘れずにブートローダの設定を変えます。私は、ブートローダにGrubを使っているので、/boot/grub/menu.lstを変更して、「initrd=/initrd.img」を追加したメニュー項目を作成しました。

[plain toolbar=false highlight_lines=”15,16,17,18″]
timeout = 10

title = Linux (high resolution console [Optimized])
root = (hd0,0)
kernel = /vmlinuz root=/dev/hda1 vga=0x317 video=vesa:ywrap,ypan,mtrr

title = Linux (high resolution console)
root = (hd0,0)
kernel = /vmlinuz root=/dev/hda1 vga=0x317

title = Linux
root = (hd0,0)
kernel = /vmlinuz root=/dev/hda1

title = Linux (with initrd)
root = (hd0,0)
kernel = /vmlinuz root=/dev/hda1
initrd = /initrd.img

title = Linux (Singl User Mode)
root = (hd0,0)
kernel = /vmlinuz root=/dev/hda1 single

title = Linux (Old Version)
root = (hd0,0)
kernel = /vmlinuz.old root=/dev/hda1
[/plain]

動作確認

さて、バイナリパッケージをインストールして、ブートローダの設定を変更したらリブートして起動することを確認しましょう。もちろん、ブート時のGrubのメニューでは「Linux (with initrd)」を選びます。

ただ、私のところではいろいろ不具合が出ました。

まずブート中にACPIのところで固まりました。これは、BIOSでACPIを無効にすることによって回避しました。

次に、コンソールが見えなくなりました。これはフレームバッファの最適化が悪影響しているみたいなので、起動時のGrubのメニューでフレームバッファを利用しない設定を選択することで逃れました。

カーネルのビルド

さてせっかくなので、自分でビルドしましょう。

ソースツリーの取得

2.6.7のカーネルソースを取得します。私はいつもカーネルの構築は/usr/srcでやってるのでそこに移動してから行います。サイズは30MB程です。

[plain toolbar=false gutter=false highlight_lines=”1,2″]
# cd /usr/src
# wget http://ring.nihon-u.ac.jp/pub/linux/kernel.org/kernel/v2.6/linux-2.6.7.tar.bz2
[/plain]

ソースツリーの展開

取得したカーネルソースを展開します。

[plain toolbar=false gutter=false highlight_lines=”1″]
# tar xfvj linux-2.6.7.tar.bz2
[/plain]

コンフィグレーション

コンフィグレーションします。

なお、私の環境では、最初「make menuconfig」がうまく動かなかったので、一旦「make oldconfig」で適当にコンフィグレーションすると、「meke menuconfig」が使えるようになりました。

一応、2.4系列でのコンフィグレーション設定を読み込むことができるので、用意しておくと良いと思います。

[plain toolbar=false gutter=false highlight_lines=”1″]
# make menuconfig
[/plain]

はっきり言って設定項目が多すぎて困りました。とりあえずヘルプをみて「If unsure, say Y」というところは組み込むことにしました。

ビルド

次のように入力して、カーネルの構築を開始します。XXXXのところはホスト名か何かに置き換えると良いでしょう(kernel-sourceはなくてもかまいません)。CPUによってはかなり時間がかかりますので気長に待ちましょう。

[plain toolbar=false gutter=false highlight_lines=”1″]
# make-kpkg –revision=XXXX.1 kernel-image modules-image kernel-headers kernel-source
[/plain]

パッケージのインストール

上記のビルドコマンドでできたパッケージをインストールします。

[plain toolbar=false gutter=false highlight_lines=”1,2,3,4″]
# dpkg -i kernel-image-2.6.7_XXXX.1_i386.deb
# dpkg -i nvidia-kernel-2.6.7_1.0.5336-6+XXXX.1_i386.deb
# dpkg -i kernel-source-2.6.7_XXXX.1_all.deb
# dpkg -i kernel-headers-2.6.7_XXXX.1_i386.deb
[/plain]

ブートローダの再設定

Grubの設定(/boot/grub/menu.lst)を修正し、最後の行に「initrd = /initrd.img.old」を追加しておきましょう。というのも、「/vmlinux.old」は最初にインストールしたバイナリパッケージなので、起動にinitrd.img.oldが必要となるからです。

再起動

これで再起動すれば自分でカスタマイズしたカーネルで起動するはずです。うまく動いたら、最初にインストールしたバイナリパッケージはアンインストールしておきましょう。

[plain toolbar=false gutter=false highlight_lines=”1″]
# dpkg –purge kernel-image-2.6.6-1-k7
[/plain]

フォローする