本文档适用于CentOS 7.X,其他系统未测试。

出现这个问题的原因是grub配置文件错误、损坏或丢失,执行以下步骤修复


1. 罗列所有的磁盘区块:

1
grub> ls

我的是(hd0),(hd0,msdos1),(hd0,msdos2)


2. 确定boot分区:

1
ls  (hd0,X) /boot/grub

如果存在,则列出该文件夹里的所有文件,不存在则会报错。如果boot为独立分区则使用

1
ls (hd0,X) /grub2


3. 将boot分区设置为临时root分区:

1
grub> set  root=hd0,msdos1

hd0,msdos1为第二步中确定的boot分区


4. 命令后面的路径可以用tab键补全,xxxx代表你的系统内核版本号。/dev/mapper/centos-root为根分区,如果分区格式不是lvm的,根据你的本机情况填写,如/dev/sda1

1
grub>linux16  /vmlinuz-xxxx .e17.x86_64  root= /dev/mapper/centos-root


5. 命令后面的路径可以用tab键补全,xxxx代表你的系统内核版本号

1
grub>lintrad16  /initramfs-xxxx .e17.x86_64.img


6. 启动

1
grub>boot


7. 进入系统之后使用命令重新生成grub配置文件

1
grub2-mkconfig -o  /boot/grub2/grub .cfg