Kernel 2.6へのアップグレード

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

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

Amazonのベストセラー
(キーワード: Debian)

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

自分でカーネルをビルドしたいところですが、 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
SEO [PR] 爆速!無料ブログ 無料ホームページ開設 無料ライブ放送