今天我运行了一些 yum 更新,想通过确保我有一个新的内核来验证一切是否顺利。令我惊讶的是,我注意到 CentOS 仍在运行 2.6.32-431.5.1.el6.x86_64,尽管看起来好像安装了 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
答案1
发现问题了... 显然 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
答案2
您必须重新启动 Linux 才能使新内核生效。
如果您注意到,新安装的内核版本 2.6.32-431.23.3.el6.x86_64 在 grub 配置中被设置为默认值(默认值 = 0)
你是否核实更新后您是否重新启动了系统?
- 您能检查一下 /boot 中的可用空间吗?
- 您可以运行内核包的 yum reinstall 以确保一切都正确安装。
- 如果您确实重新启动,请查看系统 POST 序列后 GRUB 菜单中显示的内容。
答案3
确保您没有启用直接内核启动从虚拟机外部启动内核。
直接内核启动 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 boot全部通过直接内核启动来启动虚拟机,在这种情况下没有办法解决这个问题。