読者です 読者をやめる 読者になる 読者になる

Scientific Linux 6.1でLinux 3.0.1をビルド

ビルドは簡単。GRUBの設定で悩んだ。忘れないようにメモしておく。

■ビルド

kernel.orgなどからソースを取ってくる。ここでは、/usr/src/linux-3.0.y以下に展開したものとする。

まず、デフォルトカーネルの.configをコピー:
# cd /usr/src/linux-3.0.y
# cp ../kernels/2.6.32-131.6.1.el6.x86_64/.config .
次に.configの設定。設定を変更しない場合でも、この操作は一度実行しておかなくてはならないみたい:
# make menuconfig    <- 設定変更しない場合は何もいじらず設定画面を終了する
# make oldconfig
あとはmakeするだけ。ThinkPad X61で1時間半くらいで終わった。案外早いものである:
# make 
■インストール

arch/x86/boot/bzImageというのができている。こいつがカーネル本体。このファイルを、/boot以下にコピーする:
# cp arch/x86/boot/bzImage /boot/vmlinuz-3.0.1
次に、モジュールをインストール。モジュールのインストールは、makeコマンドを叩けば自動でやってくれる:
# make modules_install
これで、/lib/modules以下にモジュールがインストールされた。

GRUBの設定

ブートできるようにGRUBの設定を行う。

まずは、initrdというRAMディスクのイメージを作ろう。カーネルは、起動時にこのRAMディスク上でディスクのファイルをマウントするなどの処理を行うらしい。詳しくはこちら→http://jibun.atmarkit.co.jp/lskill01/rensai/lpicdrill06/lpicdrill01.html
# cd /boot
# mkinitrd initramfs-3.0.1.img 3.0.1
次に、/boot/grub/grub.confの設定を行う。デフォルトカーネルの設定がすでに書かれているので、これを参考に記述すればよい(と思う)。マニュアルはinfo grub。私は以下のようにしてみた:

default=0
timeout=10
splashimage=(hd0,0)/grub/splash.xpm.gz
#hiddenmenu
title Scientific Linux (2.6.32-131.6.1.el6.x86_64)
        root (hd0,0)
        kernel /vmlinuz-2.6.32-131.6.1.el6.x86_64 ro root=/dev/mapper/vg_sllaptop-lv_root rd_LVM_LV=vg_sllaptop/lv_root rd_LVM_LV=vg_sllaptop/lv_swap rd_NO_LUKS rd_NO_MD rd_NO_DM LANG=en_US.UTF-8 SYSFONT=latarcyrheb-sun16 KEYBOARDTYPE=pc KEYTABLE=us rhgb quiet
        initrd /initramfs-2.6.32-131.6.1.el6.x86_64.img
title Scientific Linux (3.0.1)
        root (hd0,0)
        kernel /vmlinuz-3.0.1 ro root=/dev/mapper/vg_sllaptop-lv_root rhgb quiet
        initrd /initramfs-3.0.1.img
hiddenmenuをコメントにすることで、起動時にカーネルを選択できるようにする。デフォルトは0(Scientific Linuxのデフォルトカーネル)で、タイムアウトは10。

titleで始まる行が2つあるが、1つ目がデフォルトカーネル。2つ目が今回ビルドした3.0.1のカーネル。initrdには上で作った3.0.1用のinitrdを指定してあげる。

以上で、3.0.1カーネルのビルド&インストールは完了。再起動すれば3.0.1が選択できる。あとはカーネルをガンガンいじるのみ。何かおかしくなってもデフォルトカーネルでブートすれば大丈夫(かな?)。