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