以前、カーネルのアップデート(2.6.32-71.29.1 → 2.6.32-220.4.2)を試したのですがブートできなくなってしまい、それ以降はできないものと思っていましたが、ブートすることが出来ました。
これは、カーネルをアップデートすると、アタッチしているEBSのデバイスファイルが/dev/xvda1から/dev/xvde1に変更されていたのが問題でした。
それでは早速、アップデート方法を紹介します。
まずは、アップデート前のカーネルやOSのバージョンの確認です。
# uname -a Linux ip-10-156-21-210 2.6.32-71.29.1.el6.i686 #1 SMP Mon Jun 27 18:07:00 BST 2011 i686 i686 i386 GNU/Linux # cat /etc/redhat-release CentOS Linux release 6.0 (Final)
今までは、上記のことからyumのアップデートからカーネル類を外していたのですが、今回はyum.confから、そのexclude=kernel*の記述を外し、アップデートします。
# cd /etc/ # diff yum.conf.old yum.conf 13d12 < exclude=kernel* # yum -y update
新しいカーネルがインストールされていることがわかります。
# ls -1 /boot/ System.map-2.6.32-220.4.2.el6.i686 System.map-2.6.32-71.29.1.el6.i686 config-2.6.32-220.4.2.el6.i686 config-2.6.32-71.29.1.el6.i686 efi grub initramfs-2.6.32-220.4.2.el6.i686.img initramfs-2.6.32-71.29.1.el6.i686.img symvers-2.6.32-220.4.2.el6.i686.gz symvers-2.6.32-71.29.1.el6.i686.gz vmlinuz-2.6.32-220.4.2.el6.i686 vmlinuz-2.6.32-71.29.1.el6.i686
この状態でリブート後、カーネルとOSのバージョンを確認すると、OSは6.2になっていますが、カーネルはまだ2.6.32-71.29.1のままです。
# uname -a Linux ip-10-156-21-210 2.6.32-71.29.1.el6.i686 #1 SMP Mon Jun 27 18:07:00 BST 2011 i686 i686 i386 GNU/Linux # cat /etc/redhat-release CentOS release 6.2 (Final)
カーネルのバージョンアップを行うには、/boot/grub/menu.lstを新しいカーネルのものに変更する必要があります。
# cd /boot/grub/ # diff menu.lst.old menu.lst 6,7c6,7 kernel /boot/vmlinuz-2.6.32-220.4.2.el6.i686 ro root=/dev/xvde1 > initrd /boot/initramfs-2.6.32-220.4.2.el6.i686.img
また最初に述べましたが、ルートディスクのデバイスファイルも/dev/xvda1から/dev/xvde1に変更する
必要があります。
このことから、/etc/fstabのルートデバイスの記述も同様に変更します。
# cd /etc/ # diff fstab.old fstab 1c1 /dev/xvde1 / ext4 defaults 1 1
この状態でリブート後、カーネルとOSのバージョンを確認すると無事カーネルもアップデートされ、
最新のCentOS 6.2になっていることがわかります。
# uname -a Linux ip-10-153-59-73 2.6.32-220.4.2.el6.i686 #1 SMP Tue Feb 14 00:24:28 GMT 2012 i686 i686 i386 GNU/Linux # cat /etc/redhat-release CentOS release 6.2 (Final)
最後に、もう利用していない古いカーネルを削除します。
# yum erase kernel-2.6.32-71.29.1.el6
SUZ-LAB謹製 CentOS AMI 6.2 Comming Soon! ——– http://www.suz-lab.com