![内核更新后 grub.conf 缺少 initrd 路径](https://linux22.com/image/636424/%E5%86%85%E6%A0%B8%E6%9B%B4%E6%96%B0%E5%90%8E%20grub.conf%20%E7%BC%BA%E5%B0%91%20initrd%20%E8%B7%AF%E5%BE%84.png)
我今天早上更新了一台服务器,最新的内核在启动时崩溃了。检查 grub.conf 文件后,我发现缺少 initrd 路径。有办法解决这个问题吗?或者我应该从 grub.conf 中删除最新的内核条目并从之前的内核启动(测试有效)?
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/vg_spots-lv_root
# initrd /initrd-[generic-]version.img
#boot=/dev/vda
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.32-431.20.3.el6.x86_64)
root (hd0,0)
kernel /vmlinuz-2.6.32-431.20.3.el6.x86_64 ro root=/dev/mapper/vg_spots-lv_root rd_LVM_LV=vg_spots/lv_root rd_LVM_LV=vg_spots/lv_swap rd_NO_LUKS rd_NO_MD rd_NO_DM LANG=en_US.UTF-8 SYSFONT=latarcyrheb-sun16 KEYBOARDTYPE=pc KEYTABLE=us crashkernel=auto rhgb quiet
title CentOS (2.6.32-358.14.1.el6.x86_64)
root (hd0,0)
kernel /vmlinuz-2.6.32-358.14.1.el6.x86_64 ro root=/dev/mapper/vg_spots-lv_root rd_LVM_LV=vg_spots/lv_root rd_LVM_LV=vg_spots/lv_swap rd_NO_LUKS rd_NO_MD rd_NO_DM LANG=en_US.UTF-8 SYSFONT=latarcyrheb-sun16 KEYBOARDTYPE=pc KEYTABLE=us crashkernel=auto rhgb quiet
initrd /initramfs-2.6.32-358.14.1.el6.x86_64.img
我发现此链接解释了如何重建初始化文件。重建 Initrd
不完全了解所有风险,尝试一下是否是个好主意?这是一个生产服务器,我不想完全关闭它。:)
答案1
您可以自行添加initrd
背面。
initrd /initramfs-2.6.32-431.20.3.el6.x86_64.img
您应该检查您的/boot
目录并确保它确实存在。
要永久修复此问题以供将来升级,请运行
# yum reinstall kernel.x86_64
答案2
如果您可以启动较旧的内核版本之一,请查看是否可以运行update-grub
以修复该问题。否则,正如 Michael 所说,您可以手动添加条目(假设实际的 initrd 文件存在)。