猫型エンジニアのブログ

プログラム/ネットワーク系の技術関連をまとめたページです 

CentOS6.4のカーネルアップデート(カーネルコンパイル)

 どうしてもCentOS上で仮想マシンの入れ子環境を作る必要があったために、カーネルのアップデートを行いました。カーネルのバージョンを2.6.32-358=>3.6にアップデートするのが目標です。

 以下がその際に実施したコマンドになります。make menuconfigでは対話的な設定に移りますが、ESC ESC Enter(Yes)の順番で押下します。

実行前の環境

# cat /etc/redhat-release
CentOS release 6.4 (Final)
# uname -a
Linux ComputeNode2 2.6.32-358.el6.x86_64 #1 SMP Fri Feb 22 00:31:26 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux

カーネルコンパイル&インストール

# yum install kernel kernel-devel ncurses-devel -y
# cd /usr/local/src
# wget http://www.kernel.org/pub/linux/kernel/v3.0/linux-3.6.tar.xz
# tar xvf linux-3.6.tar.xz
# cd linux-3.6
# cp /boot/config-`uname -r` ./.config
# make menuconfig
# echo "CONFIG_SYSFS_DEPRECATED=y" >> .config
# echo "CONFIG_SYSFS_DEPRECATED_V2=y" >> .config
# make bzImage && make modules && make modules_install && make install

再起動&動作確認

以下のようなエラーが表示されましたが、特に問題ありませんでした(なぜ?)。

  INSTALL /lib/firmware/keyspan_pda/xircom_pgs.fw
  DEPMOD  3.6.0
sh /usr/local/src/linux-3.6/arch/x86/boot/install.sh 3.6.0 arch/x86/boot/bzImage \
                System.map "/boot"
ERROR: modinfo: could not find module power_meter

 /boot以下に確かに3.6.0関連のファイルが作成されています。

# ls /boot |grep '3.6.0'
System.map-3.6.0
initramfs-3.6.0.img
initrd-3.6.0kdump.img
vmlinuz-3.6.0

 /etc/grub.confに、以下のように3.6.0の設定がなされていることを確認してから再起動します。起動時のGRUBの画面で3.6.0を選択します。

default=1
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS (3.6.0)
        root (hd0,0)
        kernel /vmlinuz-3.6.0 ro root=/dev/mapper/VolGroup-lv_root rd_NO_LUKS rd_NO_MD rd_LVM_LV=VolGroup/lv_swap crashkernel=128M  KEYBOARDTYPE=pc KEYTABLE=jp106 rd_LVM_LV=VolGroup/lv_root LANG=ja_JP.UTF-8 rd_NO_DM rhgb quiet
        initrd /initramfs-3.6.0.img

 無事に3.6.0での起動に成功しました。後は/etc/grub.confのdefaultを0に設定して、常に3.6.0で起動するようにします。

# uname -r
3.6.0