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パッケージを利用するようです。

# apt-get update
# apt-get install kernel-image-2.6.6-1-k7

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」を追加したメニュー項目を作成しました。

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
スポンサーリンク

動作確認

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

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

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

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

カーネルのビルド

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

ソースツリーの取得

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

# cd /usr/src
# wget http://ring.nihon-u.ac.jp/pub/linux/kernel.org/kernel/v2.6/linux-2.6.7.tar.bz2

ソースツリーの展開

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

# tar xfvj linux-2.6.7.tar.bz2

コンフィグレーション

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

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

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

# make menuconfig

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

ビルド

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

# make-kpkg --revision=XXXX.1 kernel-image modules-image kernel-headers kernel-source

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

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

# 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

ブートローダの再設定

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

再起動

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

# dpkg --purge kernel-image-2.6.6-1-k7

コメント

タイトルとURLをコピーしました