一、问题现象:
开机无法正常进入系统,而是进入了grub界面,如下图所示:

二、问题分析
在用户使用过程中,因为各种原因出现grub.cfg损坏,导致系统在启动过程中卡住,如上图所示,此时需要对grub.cfg进行修复。
三、处理方法
1.确认分区:在grub界面,使用ls命令,可以看到对应的分区目录内容,一般来说,(hd0,msdos1)就是sda1, (hd0,msdos1)就是sda2。

2.对每个分区都使用ls查看一下目录内容,确认grub分区目录,如下图所示:
3.继续ls,如下图的分区,即是root分区也就是根(/)分区
4.手动引导
这里以x86的系统为例,其他系统上是会有一些不同,不要照敲,多用tab键补全信息,避免敲错。
#a. 设置grub的根分区,上一步中已经查明
set root=(hd0,msdos1)
#
#b. 加载内核并设置系统根目录所在分区,vmlinuz-4.4.131-20200710.kylin.x86-generic可自动补全
linux16 /vmlinuz-4.4.131-20200710.kylin.x86-generic root=/dev/sda2
#
#c. 加载系统镜像,initrd.img-4.4.131-20200710.kylin.x86-generic可自动补全
initrd16 /initrd.img-4.4.131-20200710.kylin.x86-generic
#
#d. 启动系统
boot
其中,linux16和initrd16不是定值,多按几次tab键,查看补全情况来选择,一般选择高版本,如下图所示:
5.修复grub.cfg
进入系统后,打开命令行,执行以下命令:
sudo su
grub-mkconfig -o /boot/grub/grub.cfg
等待完成后,即会在/boot/grub/下重新生成一份grub.cfg,如下图所示:
此时已完成了修复,重启系统验证是否正常进入系统。




