今天我正在运行一些yum更新,并想确认一切正常,确保我有一个新的内核。 令我惊讶的是,我注意到CentOS仍在运行2.6.32-431.5.1.el6.x86_64,尽pipe它看起来好像安装了2.6.32-431.23.3.el6。
事实上,2.6.32-431.23.3.el6在/etc/grub.conf中显示,但在upstart启动选项中没有。 任何想法为什么?
在更新日志中说:
---> Package kernel-firmware.noarch 0:2.6.32-431.5.1.el6 will be updated ---> Package kernel-firmware.noarch 0:2.6.32-431.23.3.el6 will be an update
这可能是原因吗? “将是更新”是什么意思?
我的/etc/grub.conf:
# grub.conf generated by anaconda # # Note that you do not have to rerun grub after making changes to this file # NOTICE: You have a /boot partition. This means that # all kernel and initrd paths are relative to /boot/, eg. # root (hd0,0) # kernel /vmlinuz-version ro root=/dev/mapper/VolGroup00-root # initrd /initrd-[generic-]version.img #boot=/dev/vda default=0 timeout=5 splashimage=(hd0,0)/grub/splash.xpm.gz hiddenmenu password --encrypted $1$auui(i$sODM4ni/Zts9IlMWu.wWF/ title CentOS (2.6.32-431.23.3.el6.x86_64) root (hd0,0) kernel /vmlinuz-2.6.32-431.23.3.el6.x86_64 ro root=/dev/mapper/VolGroup00-root rd_NO_LUKS LANG=en_US.UTF-8 KEYBOARDTYPE=pc KEYTABLE=sv-latin1 rd_NO_MD rd_LVM_LV=VolGroup00/swap SYSFONT=latarcyrheb-sun16 crashkernel=auto rd_LVM_LV=VolGroup00/root rd_NO_DM rhgb quiet rhgb quiet audit=1 initrd /initramfs-2.6.32-431.23.3.el6.x86_64.img title CentOS (2.6.32-431.5.1.el6.x86_64) root (hd0,0) kernel /vmlinuz-2.6.32-431.5.1.el6.x86_64 ro root=/dev/mapper/VolGroup00-root rd_NO_LUKS LANG=en_US.UTF-8 KEYBOARDTYPE=pc KEYTABLE=sv-latin1 rd_NO_MD rd_LVM_LV=VolGroup00/swap SYSFONT=latarcyrheb-sun16 crashkernel=auto rd_LVM_LV=VolGroup00/root rd_NO_DM rhgb quiet rhgb quiet audit=1 initrd /initramfs-2.6.32-431.5.1.el6.x86_64.img title CentOS (2.6.32-431.el6.x86_64) root (hd0,0) kernel /vmlinuz-2.6.32-431.el6.x86_64 ro root=/dev/mapper/VolGroup00-root rd_NO_LUKS LANG=en_US.UTF-8 KEYBOARDTYPE=pc KEYTABLE=sv-latin1 rd_NO_MD rd_LVM_LV=VolGroup00/swap SYSFONT=latarcyrheb-sun16 crashkernel=auto rd_LVM_LV=VolGroup00/root rd_NO_DM rhgb quiet rhgb quiet audit=1 initrd /initramfs-2.6.32-431.el6.x86_64.img
发现问题…显然,CentOS 6没有正确地将/etc/grub.conf与/boot/grub/grub.conf同步,所以在启动时读取了/boot/grub/grub.conf。 修正了:
rm /boot/grub/grub.conf mv /etc/grub.conf /boot/grub/ ln -s /boot/grub/grub.conf /etc/grub.conf
您必须重新启动Linux才能使新内核激活。
如果你注意到,新安装的内核版本2.6.32-431.23.3.el6.x86_64被设置为grubconfiguration中的默认值(default = 0)
你是否确认你在更新后运行了系统重启?
确保你没有启用直接内核启动来从虚拟机外部启动内核。

直接的内核启动XML如下所示:
<os> <kernel>/var/lib/libvirt/images/vmlinuz-3.15.8-200.fc20.armv7hl</kernel> <initrd>/var/lib/libvirt/images/initramfs-3.15.8-200.fc20.armv7hl.img</initrd> <cmdline>console=ttyAMA0,115200n8 rw root=/dev/mapper/armv9-root rootwait</cmdline> <dtb>/var/lib/libvirt/images/vexpress-v2p-ca9.dtb</dtb> </os>
一些提供商如Digital Ocean通过直接内核启动引导所有的虚拟机,在这种情况下没有办法解决这个问题。